Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Unified Diff: mojo/views/native_widget_view_manager.cc

Issue 372273004: Shutdown cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/views/native_widget_view_manager.cc
diff --git a/mojo/views/native_widget_view_manager.cc b/mojo/views/native_widget_view_manager.cc
index a903e2bbca1486f73372af07fbf322e0447f7945..36a65786e101b21da096aa89b764d0144be3855a 100644
--- a/mojo/views/native_widget_view_manager.cc
+++ b/mojo/views/native_widget_view_manager.cc
@@ -91,6 +91,7 @@ NativeWidgetViewManager::NativeWidgetViewManager(
views::internal::NativeWidgetDelegate* delegate, view_manager::Node* node)
: NativeWidgetAura(delegate),
node_(node) {
+ node_->AddObserver(this);
node_->active_view()->AddObserver(this);
window_tree_host_.reset(new WindowTreeHostMojo(node_, this));
window_tree_host_->InitHost();
@@ -112,7 +113,9 @@ NativeWidgetViewManager::NativeWidgetViewManager(
}
NativeWidgetViewManager::~NativeWidgetViewManager() {
- node_->active_view()->RemoveObserver(this);
+ if (node_->active_view())
+ node_->active_view()->RemoveObserver(this);
+ node_->RemoveObserver(this);
}
void NativeWidgetViewManager::InitNativeWidget(
@@ -129,6 +132,20 @@ void NativeWidgetViewManager::CompositorContentsChanged(
node_->active_view()->SetContents(bitmap);
}
+void NativeWidgetViewManager::OnNodeDestroyed(view_manager::Node* node) {
+ window_tree_host_.reset();
+}
+
+void NativeWidgetViewManager::OnNodeActiveViewChanged(
+ view_manager::Node* node,
+ view_manager::View* old_view,
+ view_manager::View* new_view) {
+ if (old_view)
+ old_view->RemoveObserver(this);
+ if (new_view)
+ new_view->AddObserver(this);
+}
+
void NativeWidgetViewManager::OnViewInputEvent(view_manager::View* view,
const EventPtr& event) {
scoped_ptr<ui::Event> ui_event(event.To<scoped_ptr<ui::Event> >());

Powered by Google App Engine
This is Rietveld 408576698