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 9614814d1a2232c9a4de57e2ea6bc8ddf9385c15..4cb48cd5981198b54f51087d1520e8b171af8b1e 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_->ToggleFullscreenModeForTab(this, GURL(), false); |
| FOR_EACH_OBSERVER(WebContentsObserver, |
| observers_, |
| DidDestroyFullscreenWidget( |
| @@ -1417,7 +1417,19 @@ void WebContentsImpl::HandleGestureEnd() { |
| delegate_->HandleGestureEnd(); |
| } |
| -void WebContentsImpl::ToggleFullscreenMode(bool enter_fullscreen) { |
| +void WebContentsImpl::EnterFullscreenMode(const GURL& origin) { |
| + ToggleFullscreenMode(origin, true); |
| +} |
| + |
| +void WebContentsImpl::ExitFullscreenMode() { |
| + ToggleFullscreenMode(GURL(), false); |
| +} |
| + |
| +void WebContentsImpl::ToggleFullscreenMode(const GURL& origin, |
| + bool enter_fullscreen) { |
| + DCHECK(!enter_fullscreen || origin.is_valid()); |
| + DCHECK(enter_fullscreen || origin.is_empty()); |
|
dcheng
2014/12/10 06:58:00
I'm not fond of this pattern. It seems that things
mlamouri (slow - plz ping)
2014/12/10 15:47:02
I've change WebContentsDelegate to have EnterFulls
|
| + |
| // 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 +1438,7 @@ void WebContentsImpl::ToggleFullscreenMode(bool enter_fullscreen) { |
| RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())->Shutdown(); |
| if (delegate_) |
| - delegate_->ToggleFullscreenModeForTab(this, enter_fullscreen); |
| + delegate_->ToggleFullscreenModeForTab(this, origin, enter_fullscreen); |
| FOR_EACH_OBSERVER(WebContentsObserver, |
| observers_, |
| @@ -1689,7 +1701,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_->ToggleFullscreenModeForTab(this, GURL(), true); |
| } else { |
| widget_host_view->InitAsFullscreen(view); |
| } |
| @@ -3584,7 +3596,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_) |