| 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..7317a1ffdfb005b285e33f64c729ea0e8f59f4f1 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,16 +1417,30 @@ void WebContentsImpl::HandleGestureEnd() {
|
| delegate_->HandleGestureEnd();
|
| }
|
|
|
| -void WebContentsImpl::ToggleFullscreenMode(bool enter_fullscreen) {
|
| - // 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.
|
| +void WebContentsImpl::EnterFullscreenMode(const GURL& origin) {
|
| + // This method is being called to enter renderer-initiated fullscreen mode.
|
| + // 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_->ToggleFullscreenModeForTab(this, enter_fullscreen);
|
| + delegate_->EnterFullscreenModeForTab(this, origin);
|
| +
|
| + FOR_EACH_OBSERVER(WebContentsObserver,
|
| + observers_,
|
| + DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab()));
|
| +}
|
| +
|
| +void WebContentsImpl::ExitFullscreenMode() {
|
| + // This method is being called to leave renderer-initiated fullscreen mode.
|
| + // 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_->ExitFullscreenModeForTab(this);
|
|
|
| FOR_EACH_OBSERVER(WebContentsObserver,
|
| observers_,
|
| @@ -1689,7 +1703,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);
|
| }
|
| @@ -2438,6 +2452,12 @@ void WebContentsImpl::GetManifest(const GetManifestCallback& callback) {
|
| manifest_manager_host_->GetManifest(GetMainFrame(), callback);
|
| }
|
|
|
| +void WebContentsImpl::ExitFullscreen() {
|
| + // Clean up related state and initiate the fullscreen exit.
|
| + GetRenderViewHostImpl()->RejectMouseLockOrUnlockIfNecessary();
|
| + ExitFullscreenMode();
|
| +}
|
| +
|
| bool WebContentsImpl::FocusLocationBarByDefault() {
|
| NavigationEntry* entry = controller_.GetVisibleEntry();
|
| if (entry && entry->GetURL() == GURL(url::kAboutBlankURL))
|
| @@ -2563,7 +2583,7 @@ void WebContentsImpl::DidNavigateMainFramePreCommit(
|
| return;
|
| }
|
| if (IsFullscreenForCurrentTab())
|
| - GetRenderViewHost()->ExitFullscreen();
|
| + ExitFullscreen();
|
| DCHECK(!IsFullscreenForCurrentTab());
|
| }
|
|
|
| @@ -3574,7 +3594,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_)
|
|
|