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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 789533002: Fullscreen: make fullscreen requests come from RenderFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 1271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1282 } 1282 }
1283 1283
1284 std::set<RenderWidgetHostImpl*>::iterator iter = 1284 std::set<RenderWidgetHostImpl*>::iterator iter =
1285 created_widgets_.find(render_widget_host); 1285 created_widgets_.find(render_widget_host);
1286 if (iter != created_widgets_.end()) 1286 if (iter != created_widgets_.end())
1287 created_widgets_.erase(iter); 1287 created_widgets_.erase(iter);
1288 1288
1289 if (render_widget_host && 1289 if (render_widget_host &&
1290 render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_) { 1290 render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_) {
1291 if (delegate_ && delegate_->EmbedsFullscreenWidget()) 1291 if (delegate_ && delegate_->EmbedsFullscreenWidget())
1292 delegate_->ToggleFullscreenModeForTab(this, false); 1292 delegate_->ToggleFullscreenModeForTab(this, GURL(), false);
1293 FOR_EACH_OBSERVER(WebContentsObserver, 1293 FOR_EACH_OBSERVER(WebContentsObserver,
1294 observers_, 1294 observers_,
1295 DidDestroyFullscreenWidget( 1295 DidDestroyFullscreenWidget(
1296 fullscreen_widget_routing_id_)); 1296 fullscreen_widget_routing_id_));
1297 fullscreen_widget_routing_id_ = MSG_ROUTING_NONE; 1297 fullscreen_widget_routing_id_ = MSG_ROUTING_NONE;
1298 if (fullscreen_widget_had_focus_at_shutdown_) 1298 if (fullscreen_widget_had_focus_at_shutdown_)
1299 view_->RestoreFocus(); 1299 view_->RestoreFocus();
1300 } 1300 }
1301 } 1301 }
1302 1302
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 void WebContentsImpl::HandleGestureBegin() { 1410 void WebContentsImpl::HandleGestureBegin() {
1411 if (delegate_) 1411 if (delegate_)
1412 delegate_->HandleGestureBegin(); 1412 delegate_->HandleGestureBegin();
1413 } 1413 }
1414 1414
1415 void WebContentsImpl::HandleGestureEnd() { 1415 void WebContentsImpl::HandleGestureEnd() {
1416 if (delegate_) 1416 if (delegate_)
1417 delegate_->HandleGestureEnd(); 1417 delegate_->HandleGestureEnd();
1418 } 1418 }
1419 1419
1420 void WebContentsImpl::ToggleFullscreenMode(bool enter_fullscreen) { 1420 void WebContentsImpl::EnterFullscreenMode(const GURL& origin) {
1421 ToggleFullscreenMode(origin, true);
1422 }
1423
1424 void WebContentsImpl::ExitFullscreenMode() {
1425 ToggleFullscreenMode(GURL(), false);
1426 }
1427
1428 void WebContentsImpl::ToggleFullscreenMode(const GURL& origin,
1429 bool enter_fullscreen) {
1430 DCHECK(!enter_fullscreen || origin.is_valid());
1431 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
1432
1421 // This method is being called to enter or leave renderer-initiated fullscreen 1433 // This method is being called to enter or leave renderer-initiated fullscreen
1422 // mode. Either way, make sure any existing fullscreen widget is shut down 1434 // mode. Either way, make sure any existing fullscreen widget is shut down
1423 // first. 1435 // first.
1424 RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView(); 1436 RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView();
1425 if (widget_view) 1437 if (widget_view)
1426 RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())->Shutdown(); 1438 RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())->Shutdown();
1427 1439
1428 if (delegate_) 1440 if (delegate_)
1429 delegate_->ToggleFullscreenModeForTab(this, enter_fullscreen); 1441 delegate_->ToggleFullscreenModeForTab(this, origin, enter_fullscreen);
1430 1442
1431 FOR_EACH_OBSERVER(WebContentsObserver, 1443 FOR_EACH_OBSERVER(WebContentsObserver,
1432 observers_, 1444 observers_,
1433 DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab())); 1445 DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab()));
1434 } 1446 }
1435 1447
1436 bool WebContentsImpl::IsFullscreenForCurrentTab() const { 1448 bool WebContentsImpl::IsFullscreenForCurrentTab() const {
1437 return delegate_ ? delegate_->IsFullscreenForTabOrPending(this) : false; 1449 return delegate_ ? delegate_->IsFullscreenForTabOrPending(this) : false;
1438 } 1450 }
1439 1451
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 } else { 1694 } else {
1683 view = GetRenderWidgetHostView(); 1695 view = GetRenderWidgetHostView();
1684 } 1696 }
1685 1697
1686 if (is_fullscreen) { 1698 if (is_fullscreen) {
1687 DCHECK_EQ(MSG_ROUTING_NONE, fullscreen_widget_routing_id_); 1699 DCHECK_EQ(MSG_ROUTING_NONE, fullscreen_widget_routing_id_);
1688 view_->StoreFocus(); 1700 view_->StoreFocus();
1689 fullscreen_widget_routing_id_ = route_id; 1701 fullscreen_widget_routing_id_ = route_id;
1690 if (delegate_ && delegate_->EmbedsFullscreenWidget()) { 1702 if (delegate_ && delegate_->EmbedsFullscreenWidget()) {
1691 widget_host_view->InitAsChild(GetRenderWidgetHostView()->GetNativeView()); 1703 widget_host_view->InitAsChild(GetRenderWidgetHostView()->GetNativeView());
1692 delegate_->ToggleFullscreenModeForTab(this, true); 1704 delegate_->ToggleFullscreenModeForTab(this, GURL(), true);
1693 } else { 1705 } else {
1694 widget_host_view->InitAsFullscreen(view); 1706 widget_host_view->InitAsFullscreen(view);
1695 } 1707 }
1696 FOR_EACH_OBSERVER(WebContentsObserver, 1708 FOR_EACH_OBSERVER(WebContentsObserver,
1697 observers_, 1709 observers_,
1698 DidShowFullscreenWidget(route_id)); 1710 DidShowFullscreenWidget(route_id));
1699 if (!widget_host_view->HasFocus()) 1711 if (!widget_host_view->HasFocus())
1700 widget_host_view->Focus(); 1712 widget_host_view->Focus();
1701 } else { 1713 } else {
1702 widget_host_view->InitAsPopup(view, initial_pos); 1714 widget_host_view->InitAsPopup(view, initial_pos);
(...skipping 1874 matching lines...) Expand 10 before | Expand all | Expand 10 after
3577 base::TerminationStatus status, 3589 base::TerminationStatus status,
3578 int error_code) { 3590 int error_code) {
3579 if (rvh != GetRenderViewHost()) { 3591 if (rvh != GetRenderViewHost()) {
3580 // The pending page's RenderViewHost is gone. 3592 // The pending page's RenderViewHost is gone.
3581 return; 3593 return;
3582 } 3594 }
3583 3595
3584 // Ensure fullscreen mode is exited in the |delegate_| since a crashed 3596 // Ensure fullscreen mode is exited in the |delegate_| since a crashed
3585 // renderer may not have made a clean exit. 3597 // renderer may not have made a clean exit.
3586 if (IsFullscreenForCurrentTab()) 3598 if (IsFullscreenForCurrentTab())
3587 ToggleFullscreenMode(false); 3599 ExitFullscreenMode();
3588 3600
3589 // Cancel any visible dialogs so they are not left dangling over the sad tab. 3601 // Cancel any visible dialogs so they are not left dangling over the sad tab.
3590 if (dialog_manager_) 3602 if (dialog_manager_)
3591 dialog_manager_->CancelActiveAndPendingDialogs(this); 3603 dialog_manager_->CancelActiveAndPendingDialogs(this);
3592 3604
3593 if (delegate_) 3605 if (delegate_)
3594 delegate_->HideValidationMessage(this); 3606 delegate_->HideValidationMessage(this);
3595 3607
3596 SetIsLoading(rvh, false, true, NULL); 3608 SetIsLoading(rvh, false, true, NULL);
3597 NotifyDisconnected(); 3609 NotifyDisconnected();
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after
4361 node->render_manager()->ResumeResponseDeferredAtStart(); 4373 node->render_manager()->ResumeResponseDeferredAtStart();
4362 } 4374 }
4363 4375
4364 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { 4376 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) {
4365 force_disable_overscroll_content_ = force_disable; 4377 force_disable_overscroll_content_ = force_disable;
4366 if (view_) 4378 if (view_)
4367 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 4379 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
4368 } 4380 }
4369 4381
4370 } // namespace content 4382 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698