Index: mandoline/ui/browser/browser.cc |
diff --git a/mandoline/ui/browser/browser.cc b/mandoline/ui/browser/browser.cc |
index d62d1272e29c4d4524bd641499af556a9f9b71e8..8fe98389d81adb1c5b75f5c6a8d68f54abc5b5ea 100644 |
--- a/mandoline/ui/browser/browser.cc |
+++ b/mandoline/ui/browser/browser.cc |
@@ -9,7 +9,9 @@ |
#include "mandoline/ui/browser/browser_ui.h" |
#include "mandoline/ui/browser/merged_service_provider.h" |
#include "mojo/application/application_runner_chromium.h" |
+#include "mojo/converters/geometry/geometry_type_converters.h" |
#include "third_party/mojo/src/mojo/public/c/system/main.h" |
+#include "ui/gfx/geometry/rect.h" |
#include "ui/gfx/geometry/size.h" |
namespace mandoline { |
@@ -25,12 +27,21 @@ Browser::Browser() |
} |
Browser::~Browser() { |
+ if (root_) { |
+ root_->RemoveObserver(this); |
+ root_ = nullptr; |
+ } |
} |
base::WeakPtr<Browser> Browser::GetWeakPtr() { |
return weak_factory_.GetWeakPtr(); |
} |
+// Convenience method: |
+void Browser::ReplaceContentWithURL(const mojo::String& url) { |
sky
2015/05/11 22:01:27
I moved a couple of things to match declaration or
|
+ Embed(url, nullptr, nullptr); |
+} |
+ |
void Browser::Initialize(mojo::ApplicationImpl* app) { |
window_manager_app_->Initialize(app); |
ui_.reset(BrowserUI::Create(this, app->shell())); |
@@ -71,6 +82,7 @@ void Browser::OnEmbed( |
// know so much about these views. Figure out how to shift more to |
// the UI class. |
root_ = root; |
+ root_->AddObserver(this); |
content_ = root->view_manager()->CreateView(); |
ui_->Init(root_, content_); |
@@ -94,6 +106,12 @@ void Browser::OnEmbed( |
Embed(default_url_, services.Pass(), exposed_services.Pass()); |
} |
+void Browser::OnViewManagerDisconnected( |
+ mojo::ViewManager* view_manager) { |
+ root_->RemoveObserver(this); |
+ root_ = nullptr; |
+} |
+ |
void Browser::Embed(const mojo::String& url, |
mojo::InterfaceRequest<mojo::ServiceProvider> services, |
mojo::ServiceProviderPtr exposed_services) { |
@@ -125,14 +143,11 @@ void Browser::Create(mojo::ApplicationConnection* connection, |
navigator_host_.Bind(request.Pass()); |
} |
-void Browser::OnViewManagerDisconnected( |
- mojo::ViewManager* view_manager) { |
- root_ = nullptr; |
-} |
- |
-// Convenience method: |
-void Browser::ReplaceContentWithURL(const mojo::String& url) { |
- Embed(url, nullptr, nullptr); |
+void Browser::OnViewBoundsChanged(mojo::View* view, |
+ const mojo::Rect& old_bounds, |
+ const mojo::Rect& new_bounds) { |
+ content_->SetBounds( |
+ *mojo::Rect::From(gfx::Rect(0, 0, new_bounds.width, new_bounds.height))); |
} |
} // namespace mandoline |