summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/browser.cc6
-rw-r--r--chrome/browser/ui/browser.h3
-rw-r--r--chrome/browser/ui/browser_command_controller.cc10
-rw-r--r--chrome/browser/ui/browser_commands_mac.cc16
-rw-r--r--chrome/browser/ui/browser_commands_mac.h16
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm7
-rw-r--r--chrome/browser/ui/fullscreen/fullscreen_controller.cc113
-rw-r--r--chrome/browser/ui/fullscreen/fullscreen_controller.h18
-rw-r--r--chrome/browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc2
-rw-r--r--chrome/browser/ui/fullscreen/fullscreen_controller_state_test.cc4
-rw-r--r--chrome/chrome_browser_ui.gypi2
11 files changed, 108 insertions, 89 deletions
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index cbd53a9..23fdd51 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -767,12 +767,6 @@ void Browser::ToggleFullscreenModeWithExtension(const GURL& extension_url) {
fullscreen_controller_->ToggleFullscreenModeWithExtension(extension_url);
}
-#if defined(OS_MACOSX)
-void Browser::TogglePresentationMode() {
- fullscreen_controller_->TogglePresentationMode();
-}
-#endif
-
bool Browser::SupportsWindowFeature(WindowFeature feature) const {
return SupportsWindowFeatureImpl(feature, true);
}
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index ec797fc..9f86dd5 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -346,9 +346,6 @@ class Browser : public TabStripModelObserver,
// See the description of FullscreenController::ToggleMetroSnapMode.
void SetMetroSnapMode(bool enable);
#endif
-#if defined(OS_MACOSX)
- void TogglePresentationMode();
-#endif
// Returns true if the Browser supports the specified feature. The value of
// this varies during the lifetime of the browser. For example, if the window
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 72ce592..60f0fe9 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -39,6 +39,10 @@
#include "content/public/common/url_constants.h"
#include "ui/base/keycodes/keyboard_codes.h"
+#if defined(OS_MACOSX)
+#include "chrome/browser/ui/browser_commands_mac.h"
+#endif
+
#if defined(OS_WIN)
#include "base/win/metro.h"
#endif
@@ -421,7 +425,11 @@ void BrowserCommandController::ExecuteCommandWithDisposition(
ConvertPopupToTabbedBrowser(browser_);
break;
case IDC_FULLSCREEN:
+#if defined(OS_MACOSX)
+ chrome::ToggleFullscreenWithChrome(browser_);
+#else
chrome::ToggleFullscreenMode(browser_);
+#endif
break;
#if defined(USE_ASH)
@@ -450,7 +458,7 @@ void BrowserCommandController::ExecuteCommandWithDisposition(
#if defined(OS_MACOSX)
case IDC_PRESENTATION_MODE:
- browser_->TogglePresentationMode();
+ chrome::ToggleFullscreenMode(browser_);
break;
#endif
case IDC_EXIT:
diff --git a/chrome/browser/ui/browser_commands_mac.cc b/chrome/browser/ui/browser_commands_mac.cc
new file mode 100644
index 0000000..bde0b5a
--- /dev/null
+++ b/chrome/browser/ui/browser_commands_mac.cc
@@ -0,0 +1,16 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/browser_commands_mac.h"
+
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/fullscreen/fullscreen_controller.h"
+
+namespace chrome {
+
+void ToggleFullscreenWithChrome(Browser* browser) {
+ browser->fullscreen_controller()->ToggleFullscreenWithChrome();
+}
+
+} // namespace chrome
diff --git a/chrome/browser/ui/browser_commands_mac.h b/chrome/browser/ui/browser_commands_mac.h
new file mode 100644
index 0000000..730be67
--- /dev/null
+++ b/chrome/browser/ui/browser_commands_mac.h
@@ -0,0 +1,16 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_BROWSER_COMMANDS_MAC_H_
+#define CHROME_BROWSER_UI_BROWSER_COMMANDS_MAC_H_
+
+class Browser;
+
+namespace chrome {
+
+void ToggleFullscreenWithChrome(Browser* browser);
+
+} // namespace chrome
+
+#endif // CHROME_BROWSER_UI_BROWSER_COMMANDS_MAC_H_
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
index 5800a80..5ca760f 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
@@ -13,6 +13,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/cocoa/browser_window_cocoa.h"
#import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
@@ -271,7 +272,7 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderNormal) {
// Verify that in non-instant presentation mode that the info bar is below the
// content are and everything else is above it.
IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderPresentationMode) {
- browser()->TogglePresentationMode();
+ chrome::ToggleFullscreenMode(browser());
browser()->GetFindBarController(); // add find bar
std::vector<ViewID> view_list;
@@ -305,7 +306,7 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderNormalInstant) {
// non-instant presentation mode.
IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
ZOrderInstantPresentationMode) {
- browser()->TogglePresentationMode();
+ chrome::ToggleFullscreenMode(browser());
ShowInstantResults();
browser()->GetFindBarController(); // add find bar
@@ -353,7 +354,7 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ContentOffset) {
// the info bar.
IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
ContentOffsetPresentationMode) {
- browser()->TogglePresentationMode();
+ chrome::ToggleFullscreenMode(browser());
PreviewableContentsController* preview =
[controller() previewableContentsController];
diff --git a/chrome/browser/ui/fullscreen/fullscreen_controller.cc b/chrome/browser/ui/fullscreen/fullscreen_controller.cc
index 519adcc..6a6cf44 100644
--- a/chrome/browser/ui/fullscreen/fullscreen_controller.cc
+++ b/chrome/browser/ui/fullscreen/fullscreen_controller.cc
@@ -57,7 +57,7 @@ bool FullscreenController::IsFullscreenForBrowser() const {
void FullscreenController::ToggleFullscreenMode() {
extension_caused_fullscreen_ = GURL();
- ToggleFullscreenModeInternal(false);
+ ToggleFullscreenModeInternal(BROWSER);
}
bool FullscreenController::IsFullscreenForTabOrPending() const {
@@ -92,11 +92,7 @@ void FullscreenController::ToggleFullscreenModeForTab(WebContents* web_contents,
SetFullscreenedTab(web_contents);
if (!in_browser_or_tab_fullscreen_mode) {
tab_caused_fullscreen_ = true;
-#if defined(OS_MACOSX)
- TogglePresentationModeInternal(true);
-#else
- ToggleFullscreenModeInternal(true);
-#endif
+ ToggleFullscreenModeInternal(TAB);
} else {
// We need to update the fullscreen exit bubble, e.g., going from browser
// fullscreen to tab fullscreen will need to show different content.
@@ -114,11 +110,7 @@ void FullscreenController::ToggleFullscreenModeForTab(WebContents* web_contents,
} else {
if (in_browser_or_tab_fullscreen_mode) {
if (tab_caused_fullscreen_) {
-#if defined(OS_MACOSX)
- TogglePresentationModeInternal(true);
-#else
- ToggleFullscreenModeInternal(true);
-#endif
+ ToggleFullscreenModeInternal(TAB);
} else {
// If currently there is a tab in "tab fullscreen" mode and fullscreen
// was not caused by it (i.e., previously it was in "browser fullscreen"
@@ -140,7 +132,7 @@ void FullscreenController::ToggleFullscreenModeWithExtension(
// |extension_caused_fullscreen_| will be reset if this causes fullscreen to
// exit.
extension_caused_fullscreen_ = extension_url;
- ToggleFullscreenModeInternal(false);
+ ToggleFullscreenModeInternal(BROWSER);
}
bool FullscreenController::IsInMetroSnapMode() {
@@ -166,8 +158,8 @@ void FullscreenController::SetMetroSnapMode(bool enable) {
#endif // defined(OS_WIN)
#if defined(OS_MACOSX)
-void FullscreenController::TogglePresentationMode() {
- TogglePresentationModeInternal(false);
+void FullscreenController::ToggleFullscreenWithChrome() {
+ ToggleFullscreenModeInternal(BROWSER_WITH_CHROME);
}
#endif
@@ -274,15 +266,10 @@ bool FullscreenController::HandleUserPressedEscape() {
}
void FullscreenController::ExitTabOrBrowserFullscreenToPreviousState() {
- if (IsFullscreenForTabOrPending()) {
+ if (IsFullscreenForTabOrPending())
ExitTabFullscreenOrMouseLockIfNecessary();
- } else if (IsFullscreenForBrowser()) {
-#if defined(OS_MACOSX)
- TogglePresentationMode();
-#else
- ToggleFullscreenMode();
-#endif
- }
+ else if (IsFullscreenForBrowser())
+ ExitFullscreenModeInternal();
}
void FullscreenController::OnAcceptFullscreenPermission() {
@@ -497,55 +484,63 @@ void FullscreenController::NotifyMouseLockChange() {
}
// TODO(koz): Change |for_tab| to an enum.
-void FullscreenController::ToggleFullscreenModeInternal(bool for_tab) {
+void FullscreenController::ToggleFullscreenModeInternal(
+ FullscreenInternalOption option) {
#if defined(OS_WIN)
// When in Metro snap mode, toggling in and out of fullscreen is prevented.
if (IsInMetroSnapMode())
return;
#endif
- toggled_into_fullscreen_ = !window_->IsFullscreen();
+ bool enter_fullscreen = !window_->IsFullscreen();
#if defined(OS_MACOSX)
- // When a Mac user requests a toggle they may be transitioning from
- // FullscreenWithoutChrome to FullscreenWithChrome.
- if (!IsFullscreenForTabOrPending())
- toggled_into_fullscreen_ |= window_->IsFullscreenWithoutChrome();
+ // When a Mac user requests a toggle they may be toggling between
+ // FullscreenWithoutChrome and FullscreenWithChrome.
+ if (!IsFullscreenForTabOrPending()) {
+ if (option == BROWSER_WITH_CHROME)
+ enter_fullscreen |= window_->IsFullscreenWithoutChrome();
+ else
+ enter_fullscreen |= window_->IsFullscreenWithChrome();
+ }
#endif
// In kiosk mode, we always want to be fullscreen. When the browser first
// starts we're not yet fullscreen, so let the initial toggle go through.
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) &&
- !toggled_into_fullscreen_)
+ window_->IsFullscreen())
return;
+ if (enter_fullscreen)
+ EnterFullscreenModeInternal(option);
+ else
+ ExitFullscreenModeInternal();
+}
+
+void FullscreenController::EnterFullscreenModeInternal(
+ FullscreenInternalOption option) {
+ toggled_into_fullscreen_ = true;
GURL url;
- if (for_tab) {
+ if (option == TAB) {
url = browser_->tab_strip_model()->GetActiveWebContents()->GetURL();
- tab_fullscreen_accepted_ = toggled_into_fullscreen_ &&
+ tab_fullscreen_accepted_ =
GetFullscreenSetting(url) == CONTENT_SETTING_ALLOW;
} else {
if (!extension_caused_fullscreen_.is_empty())
url = extension_caused_fullscreen_;
content::RecordAction(UserMetricsAction("ToggleFullscreen"));
}
- if (toggled_into_fullscreen_) {
+
#if defined(OS_MACOSX)
- CHECK(!for_tab); // EnterFullscreenWithChrome invalid for tab fullscreen.
+ if (option == BROWSER_WITH_CHROME) {
CHECK(base::mac::IsOSLionOrLater());
window_->EnterFullscreenWithChrome();
-#else
- window_->EnterFullscreen(url, GetFullscreenExitBubbleType());
-#endif
} else {
-#if defined(OS_MACOSX)
- // Mac windows report a state change instantly, and so we must also clear
- // tab_caused_fullscreen_ to match them else other logic using
- // tab_caused_fullscreen_ will be incorrect.
- NotifyTabOfExitIfNecessary();
+#else
+ {
#endif
- window_->ExitFullscreen();
- extension_caused_fullscreen_ = GURL();
+ window_->EnterFullscreen(url, GetFullscreenExitBubbleType());
}
+
UpdateFullscreenExitBubbleContent();
// Once the window has become fullscreen it'll call back to
@@ -554,31 +549,19 @@ void FullscreenController::ToggleFullscreenModeInternal(bool for_tab) {
// the BrowserWindow invoke WindowFullscreenStateChanged when appropriate.
}
+void FullscreenController::ExitFullscreenModeInternal() {
+ toggled_into_fullscreen_ = false;
#if defined(OS_MACOSX)
-void FullscreenController::TogglePresentationModeInternal(bool for_tab) {
- toggled_into_fullscreen_ = !window_->IsFullscreenWithoutChrome();
- GURL url;
- if (for_tab) {
- url = browser_->tab_strip_model()->GetActiveWebContents()->GetURL();
- tab_fullscreen_accepted_ = toggled_into_fullscreen_ &&
- GetFullscreenSetting(url) == CONTENT_SETTING_ALLOW;
- }
- if (!window_->IsFullscreenWithoutChrome()) {
- window_->EnterFullscreen(url, GetFullscreenExitBubbleType());
- } else {
- window_->ExitFullscreen();
+ // Mac windows report a state change instantly, and so we must also clear
+ // tab_caused_fullscreen_ to match them else other logic using
+ // tab_caused_fullscreen_ will be incorrect.
+ NotifyTabOfExitIfNecessary();
+#endif
+ window_->ExitFullscreen();
+ extension_caused_fullscreen_ = GURL();
- // Mac windows report a state change instantly, and so we must also clear
- // tab_caused_fullscreen_ to match them else other logic using
- // tab_caused_fullscreen_ will be incorrect.
- NotifyTabOfExitIfNecessary();
- }
UpdateFullscreenExitBubbleContent();
-
- // WindowFullscreenStateChanged will be called by BrowserWindowController
- // when the transition completes.
}
-#endif
void FullscreenController::SetFullscreenedTab(WebContents* tab) {
fullscreened_tab_ = tab;
@@ -592,7 +575,7 @@ void FullscreenController::SetMouseLockTab(WebContents* tab) {
void FullscreenController::ExitTabFullscreenOrMouseLockIfNecessary() {
if (tab_caused_fullscreen_)
- ToggleFullscreenModeInternal(true);
+ ToggleFullscreenModeInternal(TAB);
else
NotifyTabOfExitIfNecessary();
}
diff --git a/chrome/browser/ui/fullscreen/fullscreen_controller.h b/chrome/browser/ui/fullscreen/fullscreen_controller.h
index 6b094f0..8da996e 100644
--- a/chrome/browser/ui/fullscreen/fullscreen_controller.h
+++ b/chrome/browser/ui/fullscreen/fullscreen_controller.h
@@ -74,7 +74,7 @@ class FullscreenController : public content::NotificationObserver {
#endif
#if defined(OS_MACOSX)
- void TogglePresentationMode();
+ void ToggleFullscreenWithChrome();
#endif
// Mouse Lock ////////////////////////////////////////////////////////////////
@@ -130,6 +130,14 @@ class FullscreenController : public content::NotificationObserver {
MOUSELOCK_ACCEPTED_SILENTLY
};
+ enum FullscreenInternalOption {
+ BROWSER,
+#if defined(OS_MACOSX)
+ BROWSER_WITH_CHROME,
+#endif
+ TAB
+ };
+
void UpdateNotificationRegistrations();
// Posts a task to call NotifyFullscreenChange.
@@ -141,11 +149,9 @@ class FullscreenController : public content::NotificationObserver {
void NotifyTabOfExitIfNecessary();
void NotifyMouseLockChange();
- // TODO(koz): Change |for_tab| to an enum.
- void ToggleFullscreenModeInternal(bool for_tab);
-#if defined(OS_MACOSX)
- void TogglePresentationModeInternal(bool for_tab);
-#endif
+ void ToggleFullscreenModeInternal(FullscreenInternalOption option);
+ void EnterFullscreenModeInternal(FullscreenInternalOption option);
+ void ExitFullscreenModeInternal();
void SetFullscreenedTab(content::WebContents* tab);
void SetMouseLockTab(content::WebContents* tab);
diff --git a/chrome/browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc b/chrome/browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc
index 7fa124a..d312f82 100644
--- a/chrome/browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc
+++ b/chrome/browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc
@@ -379,7 +379,7 @@ IN_PROC_BROWSER_TEST_F(
{
FullscreenNotificationObserver fullscreen_observer;
- browser()->TogglePresentationMode();
+ chrome::ToggleFullscreenMode(browser());
fullscreen_observer.Wait();
EXPECT_FALSE(browser()->window()->IsFullscreen());
EXPECT_FALSE(browser()->window()->IsFullscreenWithChrome());
diff --git a/chrome/browser/ui/fullscreen/fullscreen_controller_state_test.cc b/chrome/browser/ui/fullscreen/fullscreen_controller_state_test.cc
index 473aad8..fad0d0d 100644
--- a/chrome/browser/ui/fullscreen/fullscreen_controller_state_test.cc
+++ b/chrome/browser/ui/fullscreen/fullscreen_controller_state_test.cc
@@ -277,11 +277,7 @@ bool FullscreenControllerStateTest::InvokeEvent(Event event) {
switch (event) {
case TOGGLE_FULLSCREEN:
-#if defined(OS_MACOSX)
- GetFullscreenController()->TogglePresentationMode();
-#else
GetFullscreenController()->ToggleFullscreenMode();
-#endif
break;
case TAB_FULLSCREEN_TRUE:
GetFullscreenController()->ToggleFullscreenModeForTab(
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi
index b455d94..ba3fcbf 100644
--- a/chrome/chrome_browser_ui.gypi
+++ b/chrome/chrome_browser_ui.gypi
@@ -245,6 +245,8 @@
'browser/ui/browser.h',
'browser/ui/browser_commands.cc',
'browser/ui/browser_commands.h',
+ 'browser/ui/browser_commands_mac.cc',
+ 'browser/ui/browser_commands_mac.h',
'browser/ui/browser_command_controller.cc',
'browser/ui/browser_command_controller.h',
'browser/ui/browser_content_setting_bubble_model_delegate.cc',