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

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: Rebased to r378132. 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 5eb767921d4c4ee9746ecf1652b30c1393ceba05..d5d37cd4861fe7848ad262a276a59d69eaaa4332 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();
@@ -1060,6 +1053,9 @@ void RenderWidgetHostViewMac::RenderProcessGone(base::TerminationStatus status,
}
void RenderWidgetHostViewMac::Destroy() {
+ // SurfaceIdNamespaces registered with RenderWidgetHostInputEventRouter
+ // have already been cleared when RenderWidgetHostViewBase notified its
+ // observers of our impending destruction.
[[NSNotificationCenter defaultCenter]
removeObserver:cocoa_view_
name:NSWindowWillCloseNotification
@@ -1082,19 +1078,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
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_base_observer.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698