Chromium Code Reviews| Index: content/browser/web_contents/web_contents_impl.cc |
| diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
| index ca9112af81bc56e40d79e9f6ff6dc120c11d0977..d066909e572efd410a9689279112dfa73cf4f8d9 100644 |
| --- a/content/browser/web_contents/web_contents_impl.cc |
| +++ b/content/browser/web_contents/web_contents_impl.cc |
| @@ -1289,7 +1289,7 @@ void WebContentsImpl::RenderWidgetDeleted( |
| if (render_widget_host && |
| render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_) { |
| if (delegate_ && delegate_->EmbedsFullscreenWidget()) |
| - delegate_->ToggleFullscreenModeForTab(this, false); |
| + delegate_->ExitFullscreenModeForTab(this); |
| FOR_EACH_OBSERVER(WebContentsObserver, |
| observers_, |
| DidDestroyFullscreenWidget( |
| @@ -1417,7 +1417,30 @@ void WebContentsImpl::HandleGestureEnd() { |
| delegate_->HandleGestureEnd(); |
| } |
| -void WebContentsImpl::ToggleFullscreenMode(bool enter_fullscreen) { |
| +void WebContentsImpl::ExitFullscreen() { |
|
scheib
2014/12/10 21:36:30
declaration & definition order should match: http:
mlamouri (slow - plz ping)
2014/12/11 16:03:19
Done.
|
| + // The callers of this method seem to call it when they expect |WebContents| |
|
Charlie Reis
2014/12/10 19:22:57
This seems a bit hand-wavy. Let's just say "Clean
mlamouri (slow - plz ping)
2014/12/11 16:03:20
Done.
|
| + // to clean-up or to actually initiate the exit. This will do both. |
| + GetRenderViewHostImpl()->RejectMouseLockOrUnlockIfNecessary(); |
| + ExitFullscreenMode(); |
| +} |
| + |
| +void WebContentsImpl::EnterFullscreenMode(const GURL& origin) { |
| + // This method is being called to enter or leave renderer-initiated fullscreen |
|
Charlie Reis
2014/12/10 19:22:57
nit: Remove "or leave"
mlamouri (slow - plz ping)
2014/12/11 16:03:19
Done. Updated the comment for both ::EnterFullscre
|
| + // mode. Either way, make sure any existing fullscreen widget is shut down |
| + // first. |
| + RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView(); |
| + if (widget_view) |
| + RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())->Shutdown(); |
| + |
| + if (delegate_) |
| + delegate_->EnterFullscreenModeForTab(this, origin); |
| + |
| + FOR_EACH_OBSERVER(WebContentsObserver, |
| + observers_, |
| + DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab())); |
| +} |
| + |
| +void WebContentsImpl::ExitFullscreenMode() { |
| // This method is being called to enter or leave renderer-initiated fullscreen |
| // mode. Either way, make sure any existing fullscreen widget is shut down |
| // first. |
| @@ -1426,7 +1449,7 @@ void WebContentsImpl::ToggleFullscreenMode(bool enter_fullscreen) { |
| RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())->Shutdown(); |
| if (delegate_) |
| - delegate_->ToggleFullscreenModeForTab(this, enter_fullscreen); |
| + delegate_->ExitFullscreenModeForTab(this); |
| FOR_EACH_OBSERVER(WebContentsObserver, |
| observers_, |
| @@ -1689,7 +1712,7 @@ void WebContentsImpl::ShowCreatedWidget(int route_id, |
| fullscreen_widget_routing_id_ = route_id; |
| if (delegate_ && delegate_->EmbedsFullscreenWidget()) { |
| widget_host_view->InitAsChild(GetRenderWidgetHostView()->GetNativeView()); |
| - delegate_->ToggleFullscreenModeForTab(this, true); |
| + delegate_->EnterFullscreenModeForTab(this, GURL()); |
| } else { |
| widget_host_view->InitAsFullscreen(view); |
| } |
| @@ -2563,7 +2586,7 @@ void WebContentsImpl::DidNavigateMainFramePreCommit( |
| return; |
| } |
| if (IsFullscreenForCurrentTab()) |
| - GetRenderViewHost()->ExitFullscreen(); |
| + ExitFullscreen(); |
| DCHECK(!IsFullscreenForCurrentTab()); |
| } |
| @@ -3574,7 +3597,7 @@ void WebContentsImpl::RenderViewTerminated(RenderViewHost* rvh, |
| // Ensure fullscreen mode is exited in the |delegate_| since a crashed |
| // renderer may not have made a clean exit. |
| if (IsFullscreenForCurrentTab()) |
| - ToggleFullscreenMode(false); |
| + ExitFullscreenMode(); |
| // Cancel any visible dialogs so they are not left dangling over the sad tab. |
| if (dialog_manager_) |