 Chromium Code Reviews
 Chromium Code Reviews Issue 1711103002:
  Implement lifetime observer on RenderWidgetHostViewBase.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1711103002:
  Implement lifetime observer on RenderWidgetHostViewBase.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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 |