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

Side by Side Diff: chrome/browser/ui/fullscreen/fullscreen_controller.cc

Issue 386463002: Remove --disable-fullscreen-within-tab command-line flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 months 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 | Annotate | Revision Log
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 "chrome/browser/ui/fullscreen/fullscreen_controller.h" 5 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h"
6 6
7 #include "apps/ui/web_contents_sizer.h" 7 #include "apps/ui/web_contents_sizer.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 } 78 }
79 79
80 bool FullscreenController::IsWindowFullscreenForTabOrPending() const { 80 bool FullscreenController::IsWindowFullscreenForTabOrPending() const {
81 return fullscreened_tab_ != NULL; 81 return fullscreened_tab_ != NULL;
82 } 82 }
83 83
84 bool FullscreenController::IsFullscreenForTabOrPending( 84 bool FullscreenController::IsFullscreenForTabOrPending(
85 const WebContents* web_contents) const { 85 const WebContents* web_contents) const {
86 if (web_contents == fullscreened_tab_) { 86 if (web_contents == fullscreened_tab_) {
87 DCHECK(web_contents == browser_->tab_strip_model()->GetActiveWebContents()); 87 DCHECK(web_contents == browser_->tab_strip_model()->GetActiveWebContents());
88 DCHECK(!IsFullscreenWithinTabPossible() || 88 DCHECK(web_contents->GetCapturerCount() == 0);
89 web_contents->GetCapturerCount() == 0);
90 return true; 89 return true;
91 } 90 }
92 return IsFullscreenForCapturedTab(web_contents); 91 return IsFullscreenForCapturedTab(web_contents);
93 } 92 }
94 93
95 bool FullscreenController::IsFullscreenCausedByTab() const { 94 bool FullscreenController::IsFullscreenCausedByTab() const {
96 return state_prior_to_tab_fullscreen_ == STATE_NORMAL; 95 return state_prior_to_tab_fullscreen_ == STATE_NORMAL;
97 } 96 }
98 97
99 void FullscreenController::ToggleFullscreenModeForTab(WebContents* web_contents, 98 void FullscreenController::ToggleFullscreenModeForTab(WebContents* web_contents,
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 return CONTENT_SETTING_ALLOW; 703 return CONTENT_SETTING_ALLOW;
705 704
706 HostContentSettingsMap* settings_map = profile_->GetHostContentSettingsMap(); 705 HostContentSettingsMap* settings_map = profile_->GetHostContentSettingsMap();
707 return settings_map->GetContentSetting(url, url, 706 return settings_map->GetContentSetting(url, url,
708 CONTENT_SETTINGS_TYPE_MOUSELOCK, std::string()); 707 CONTENT_SETTINGS_TYPE_MOUSELOCK, std::string());
709 } 708 }
710 709
711 bool FullscreenController::IsPrivilegedFullscreenForTab() const { 710 bool FullscreenController::IsPrivilegedFullscreenForTab() const {
712 const bool embedded_widget_present = 711 const bool embedded_widget_present =
713 fullscreened_tab_ && 712 fullscreened_tab_ &&
714 fullscreened_tab_->GetFullscreenRenderWidgetHostView() && 713 fullscreened_tab_->GetFullscreenRenderWidgetHostView();
715 IsFullscreenWithinTabPossible();
716 return embedded_widget_present || is_privileged_fullscreen_for_testing_; 714 return embedded_widget_present || is_privileged_fullscreen_for_testing_;
717 } 715 }
718 716
719 void FullscreenController::SetPrivilegedFullscreenForTesting( 717 void FullscreenController::SetPrivilegedFullscreenForTesting(
720 bool is_privileged) { 718 bool is_privileged) {
721 is_privileged_fullscreen_for_testing_ = is_privileged; 719 is_privileged_fullscreen_for_testing_ = is_privileged;
722 } 720 }
723 721
724 bool FullscreenController::IsFullscreenWithinTabPossible() const {
725 return implicit_cast<const content::WebContentsDelegate*>(browser_)->
726 EmbedsFullscreenWidget();
727 }
728
729 bool FullscreenController::MaybeToggleFullscreenForCapturedTab( 722 bool FullscreenController::MaybeToggleFullscreenForCapturedTab(
730 WebContents* web_contents, bool enter_fullscreen) { 723 WebContents* web_contents, bool enter_fullscreen) {
731 if (!IsFullscreenWithinTabPossible())
732 return false;
733
734 if (enter_fullscreen) { 724 if (enter_fullscreen) {
735 if (web_contents->GetCapturerCount() > 0) { 725 if (web_contents->GetCapturerCount() > 0) {
736 FullscreenWithinTabHelper::CreateForWebContents(web_contents); 726 FullscreenWithinTabHelper::CreateForWebContents(web_contents);
737 FullscreenWithinTabHelper::FromWebContents(web_contents)-> 727 FullscreenWithinTabHelper::FromWebContents(web_contents)->
738 SetIsFullscreenForCapturedTab(true); 728 SetIsFullscreenForCapturedTab(true);
739 return true; 729 return true;
740 } 730 }
741 } else { 731 } else {
742 if (IsFullscreenForCapturedTab(web_contents)) { 732 if (IsFullscreenForCapturedTab(web_contents)) {
743 FullscreenWithinTabHelper::RemoveForWebContents(web_contents); 733 FullscreenWithinTabHelper::RemoveForWebContents(web_contents);
744 return true; 734 return true;
745 } 735 }
746 } 736 }
747 737
748 return false; 738 return false;
749 } 739 }
750 740
751 bool FullscreenController::IsFullscreenForCapturedTab( 741 bool FullscreenController::IsFullscreenForCapturedTab(
752 const WebContents* web_contents) const { 742 const WebContents* web_contents) const {
753 // Note: On Mac, some of the OnTabXXX() methods get called with a NULL value 743 // Note: On Mac, some of the OnTabXXX() methods get called with a NULL value
754 // for web_contents. Check for that here. 744 // for web_contents. Check for that here.
755 const FullscreenWithinTabHelper* const helper = web_contents ? 745 const FullscreenWithinTabHelper* const helper = web_contents ?
756 FullscreenWithinTabHelper::FromWebContents(web_contents) : NULL; 746 FullscreenWithinTabHelper::FromWebContents(web_contents) : NULL;
757 if (helper && helper->is_fullscreen_for_captured_tab()) { 747 if (helper && helper->is_fullscreen_for_captured_tab()) {
758 DCHECK(IsFullscreenWithinTabPossible());
759 DCHECK_NE(fullscreened_tab_, web_contents); 748 DCHECK_NE(fullscreened_tab_, web_contents);
760 return true; 749 return true;
761 } 750 }
762 return false; 751 return false;
763 } 752 }
764 753
765 void FullscreenController::UnlockMouse() { 754 void FullscreenController::UnlockMouse() {
766 if (!mouse_lock_tab_) 755 if (!mouse_lock_tab_)
767 return; 756 return;
768 content::RenderWidgetHostView* mouse_lock_view = 757 content::RenderWidgetHostView* mouse_lock_view =
769 (fullscreened_tab_ == mouse_lock_tab_ && IsPrivilegedFullscreenForTab()) ? 758 (fullscreened_tab_ == mouse_lock_tab_ && IsPrivilegedFullscreenForTab()) ?
770 mouse_lock_tab_->GetFullscreenRenderWidgetHostView() : NULL; 759 mouse_lock_tab_->GetFullscreenRenderWidgetHostView() : NULL;
771 if (!mouse_lock_view) { 760 if (!mouse_lock_view) {
772 RenderViewHost* const rvh = mouse_lock_tab_->GetRenderViewHost(); 761 RenderViewHost* const rvh = mouse_lock_tab_->GetRenderViewHost();
773 if (rvh) 762 if (rvh)
774 mouse_lock_view = rvh->GetView(); 763 mouse_lock_view = rvh->GetView();
775 } 764 }
776 if (mouse_lock_view) 765 if (mouse_lock_view)
777 mouse_lock_view->UnlockMouse(); 766 mouse_lock_view->UnlockMouse();
778 } 767 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698