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

Unified Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 1711103002: Implement lifetime observer on RenderWidgetHostViewBase. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restructure, and make RWHVB derived classes responsible for early notification. Created 4 years, 10 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: content/browser/renderer_host/render_widget_host_view_mac.mm
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index a73a09ff790015c68ed33b744e1bbc1f3c9dd1a0..cffcca94e75ef6440e88f6adad85d18b8bd97f03 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -563,13 +563,6 @@ RenderWidgetHostViewMac::~RenderWidgetHostViewMac() {
UnlockMouse();
- if (render_widget_host_ && render_widget_host_->delegate() &&
- render_widget_host_->delegate()->GetInputEventRouter()) {
- render_widget_host_->delegate()
- ->GetInputEventRouter()
- ->RemoveSurfaceIdNamespaceOwner(GetSurfaceIdNamespace());
- }
-
// Ensure that the browser compositor is destroyed in a safe order.
ShutdownBrowserCompositor();
@@ -1056,6 +1049,9 @@ void RenderWidgetHostViewMac::RenderProcessGone(base::TerminationStatus status,
}
void RenderWidgetHostViewMac::Destroy() {
+ // SurfaceIdNames registered with RenderWidgetHostInputEventRouter
kenrb 2016/02/22 17:05:10 nit: s/SurfaceIdNames/SurfaceIdNamespaces
wjmaclean 2016/02/23 13:13:26 Done.
+ // have already been cleared when RenderWidgetHostViewBase notified its
+ // observers of our impending destruction.
[[NSNotificationCenter defaultCenter]
removeObserver:cocoa_view_
name:NSWindowWillCloseNotification
@@ -1078,19 +1074,14 @@ void RenderWidgetHostViewMac::Destroy() {
// object needs to survive until the stack unwinds.
pepper_fullscreen_window_.autorelease();
- // Clear SurfaceID namespace ownership before we shutdown the
- // compositor.
- if (render_widget_host_ && render_widget_host_->delegate() &&
- render_widget_host_->delegate()->GetInputEventRouter()) {
- render_widget_host_->delegate()
- ->GetInputEventRouter()
- ->RemoveSurfaceIdNamespaceOwner(GetSurfaceIdNamespace());
- }
-
// Delete the delegated frame state, which will reach back into
// render_widget_host_.
ShutdownBrowserCompositor();
+ // Make sure none of our observers send events for us to process after
+ // we release render_widget_host_.
+ NotifyObserversAboutShutdown();
+
// We get this call just before |render_widget_host_| deletes
// itself. But we are owned by |cocoa_view_|, which may be retained
// by some other code. Examples are WebContentsViewMac's

Powered by Google App Engine
This is Rietveld 408576698