diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-17 06:11:53 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-17 06:11:53 +0000 |
commit | 8d944b369dc0979cc9926cdda7673682bf8e5bef (patch) | |
tree | cf597f2b4443c04d48b14dfa2fc434984a058c90 | |
parent | 700317717262a7a81f38c6850e7b1e678ad5b7b7 (diff) | |
download | chromium_src-8d944b369dc0979cc9926cdda7673682bf8e5bef.zip chromium_src-8d944b369dc0979cc9926cdda7673682bf8e5bef.tar.gz chromium_src-8d944b369dc0979cc9926cdda7673682bf8e5bef.tar.bz2 |
Change EnterFullscreen() to take an enum instead of a bool as second parameter.
Also, add a UpdateFullscreenExitBubbleContent() method.
At both call site and implementor side, just funnel the previous bool
through the enum for now.
This decouples the implementation of the new UI from the backend
support.
Based on a patch by Yuzhu Shen <yzshen@chromium.org>
BUG=95136
TEST=everything works as before
TBR=ben (OWNERS review for this part is at http://codereview.chromium.org/8274022/ )
Review URL: http://codereview.chromium.org/8313012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105770 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_tabs_apitest.cc | 6 | ||||
-rw-r--r-- | chrome/browser/ui/browser.cc | 20 | ||||
-rw-r--r-- | chrome/browser/ui/browser_window.h | 14 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/browser_window_cocoa.h | 15 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/browser_window_cocoa.mm | 31 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm | 2 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/view_id_util_browsertest.mm | 3 | ||||
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.cc | 11 | ||||
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.h | 8 | ||||
-rw-r--r-- | chrome/browser/ui/panels/panel.cc | 19 | ||||
-rw-r--r-- | chrome/browser/ui/panels/panel.h | 13 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.cc | 11 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.h | 6 | ||||
-rw-r--r-- | chrome/test/base/test_browser_window.h | 14 |
14 files changed, 127 insertions, 46 deletions
diff --git a/chrome/browser/extensions/extension_tabs_apitest.cc b/chrome/browser/extensions/extension_tabs_apitest.cc index 8dafbb2..672f6a7 100644 --- a/chrome/browser/extensions/extension_tabs_apitest.cc +++ b/chrome/browser/extensions/extension_tabs_apitest.cc @@ -181,7 +181,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabsOnUpdated) { IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_FocusWindowDoesNotExitFullscreen) { - browser()->window()->EnterFullscreen(GURL(), false); + browser()->window()->EnterFullscreen( + GURL(), FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION); bool is_fullscreen = browser()->window()->IsFullscreen(); ASSERT_TRUE(RunExtensionTest("window_update/focus")) << message_; ASSERT_EQ(is_fullscreen, browser()->window()->IsFullscreen()); @@ -189,7 +190,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_UpdateWindowSizeExitsFullscreen) { - browser()->window()->EnterFullscreen(GURL(), false); + browser()->window()->EnterFullscreen( + GURL(), FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION); ASSERT_TRUE(RunExtensionTest("window_update/sizing")) << message_; ASSERT_FALSE(browser()->window()->IsFullscreen()); } diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 5315d28..e2ed3b4 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -1735,7 +1735,13 @@ void Browser::ToggleFullscreenMode(bool for_tab) { (GetFullscreenSetting(url) == CONTENT_SETTING_ASK); } if (entering_fullscreen) { - window_->EnterFullscreen(url, ask_permission); + FullscreenExitBubbleType type = + FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION; + if (for_tab) { + type = ask_permission ? FEB_TYPE_FULLSCREEN_BUTTONS : + FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION; + } + window_->EnterFullscreen(url, type); } else { window_->ExitFullscreen(); } @@ -1769,7 +1775,17 @@ void Browser::TogglePresentationMode(bool for_tab) { ask_permission = !url.SchemeIsFile() && (GetFullscreenSetting(url) == CONTENT_SETTING_ASK); } - window_->SetPresentationMode(entering_fullscreen, url, ask_permission); + if (entering_fullscreen) { + FullscreenExitBubbleType type = + FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION; + if (for_tab) { + type = ask_permission ? FEB_TYPE_FULLSCREEN_BUTTONS : + FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION; + } + window_->EnterPresentationMode(url, type); + } else { + window_->ExitPresentationMode(); + } WindowFullscreenStateChanged(); } #endif diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h index b7f7733..95ffcad 100644 --- a/chrome/browser/ui/browser_window.h +++ b/chrome/browser/ui/browser_window.h @@ -7,6 +7,7 @@ #pragma once #include "chrome/browser/ui/bookmarks/bookmark_bar.h" +#include "chrome/browser/ui/fullscreen_exit_bubble_type.h" #include "chrome/common/content_settings_types.h" #include "content/browser/tab_contents/navigation_entry.h" #include "ui/gfx/native_widget_types.h" @@ -136,8 +137,12 @@ class BrowserWindow { virtual bool IsMinimized() const = 0; // Accessors for fullscreen mode state. - virtual void EnterFullscreen(const GURL& url, bool ask_permission) = 0; + virtual void EnterFullscreen(const GURL& url, + FullscreenExitBubbleType bubble_type) = 0; virtual void ExitFullscreen() = 0; + virtual void UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) = 0; virtual bool IsFullscreen() const = 0; // Returns true if the fullscreen bubble is visible. @@ -304,9 +309,10 @@ class BrowserWindow { // Sets the presentation mode for the window. If the window is not already in // fullscreen, also enters fullscreen mode. - virtual void SetPresentationMode(bool presentation_mode, - const GURL& url, - bool ask_permission) = 0; + virtual void EnterPresentationMode( + const GURL& url, + FullscreenExitBubbleType bubble_type) = 0; + virtual void ExitPresentationMode() = 0; virtual bool InPresentationMode() = 0; #endif diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.h b/chrome/browser/ui/cocoa/browser_window_cocoa.h index 3d3042c..7d2ba5f 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.h +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.h @@ -55,8 +55,12 @@ class BrowserWindowCocoa : public BrowserWindow, virtual gfx::Rect GetBounds() const; virtual bool IsMaximized() const; virtual bool IsMinimized() const; - virtual void EnterFullscreen(const GURL& url, bool ask_permission); - virtual void ExitFullscreen(); + virtual void EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) OVERRIDE; + virtual void ExitFullscreen() OVERRIDE; + virtual void UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE; virtual bool IsFullscreen() const; virtual bool IsFullscreenBubbleVisible() const; virtual LocationBar* GetLocationBar() const; @@ -106,9 +110,10 @@ class BrowserWindowCocoa : public BrowserWindow, virtual void Copy(); virtual void Paste(); virtual void OpenTabpose(); - virtual void SetPresentationMode(bool presentation_mode, - const GURL& url, - bool ask_permission); + virtual void EnterPresentationMode( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE; + virtual void ExitPresentationMode() OVERRIDE; virtual bool InPresentationMode(); virtual void ShowInstant(TabContentsWrapper* preview); virtual void HideInstant(); diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm index e1e9c2a..92b1257 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm @@ -255,20 +255,25 @@ bool BrowserWindowCocoa::IsMinimized() const { return [window() isMiniaturized]; } -void BrowserWindowCocoa::EnterFullscreen(const GURL& url, bool ask_permission) { +void BrowserWindowCocoa::EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) { [controller_ setFullscreen:YES url:url - askPermission:ask_permission]; + askPermission:type == FEB_TYPE_FULLSCREEN_BUTTONS]; } void BrowserWindowCocoa::ExitFullscreen() { - [controller_ setFullscreen:NO - url:GURL() - askPermission:NO]; + [controller_ setFullscreen:NO url:GURL() askPermission:NO]; +} + +void BrowserWindowCocoa::UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) { + NOTIMPLEMENTED(); } bool BrowserWindowCocoa::IsFullscreen() const { - return !![controller_ isFullscreen]; + return [controller_ isFullscreen]; } bool BrowserWindowCocoa::IsFullscreenBubbleVisible() const { @@ -510,12 +515,16 @@ void BrowserWindowCocoa::OpenTabpose() { [controller_ openTabpose]; } -void BrowserWindowCocoa::SetPresentationMode(bool presentation_mode, - const GURL& url, - bool ask_permission) { - [controller_ setPresentationMode:presentation_mode +void BrowserWindowCocoa::EnterPresentationMode( + const GURL& url, + FullscreenExitBubbleType bubble_type) { + [controller_ setPresentationMode:YES url:url - askPermission:ask_permission]; + askPermission:bubble_type == FEB_TYPE_FULLSCREEN_BUTTONS]; +} + +void BrowserWindowCocoa::ExitPresentationMode() { + [controller_ setPresentationMode:NO url:GURL() askPermission:NO]; } bool BrowserWindowCocoa::InPresentationMode() { diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm b/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm index 3b53ce8..7fdd809 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm @@ -116,7 +116,7 @@ TEST_F(BrowserWindowCocoaTest, TestFullscreen) { scoped_ptr<BrowserWindowCocoaPong> scoped_bwc(bwc); EXPECT_FALSE(bwc->IsFullscreen()); - bwc->EnterFullscreen(GURL(), false); + bwc->EnterFullscreen(GURL(), FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION); EXPECT_TRUE(bwc->IsFullscreen()); bwc->ExitFullscreen(); EXPECT_FALSE(bwc->IsFullscreen()); diff --git a/chrome/browser/ui/cocoa/view_id_util_browsertest.mm b/chrome/browser/ui/cocoa/view_id_util_browsertest.mm index af164da..d2442cb 100644 --- a/chrome/browser/ui/cocoa/view_id_util_browsertest.mm +++ b/chrome/browser/ui/cocoa/view_id_util_browsertest.mm @@ -95,7 +95,8 @@ IN_PROC_BROWSER_TEST_F(ViewIDTest, Basic) { // Flaky on Mac: http://crbug.com/90557. IN_PROC_BROWSER_TEST_F(ViewIDTest, FLAKY_Fullscreen) { - browser()->window()->EnterFullscreen(GURL(), false); + browser()->window()->EnterFullscreen( + GURL(), FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION); ASSERT_NO_FATAL_FAILURE(DoTest()); } diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 1e0d943..6ce87ad 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -850,7 +850,8 @@ bool BrowserWindowGtk::ShouldDrawContentDropShadow() { return !IsMaximized() && UseCustomFrame(); } -void BrowserWindowGtk::EnterFullscreen(const GURL& url, bool ask_permission) { +void BrowserWindowGtk::EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) { // gtk_window_(un)fullscreen asks the window manager to toggle the EWMH // for fullscreen windows. Not all window managers support this. gtk_window_fullscreen(window_); @@ -861,10 +862,16 @@ void BrowserWindowGtk::EnterFullscreen(const GURL& url, bool ask_permission) { GTK_FLOATING_CONTAINER(render_area_floating_container_), browser(), url, - ask_permission)); + type == FEB_TYPE_FULLSCREEN_BUTTONS)); } } +void BrowserWindowGtk::UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) { + NOTIMPLEMENTED(); +} + void BrowserWindowGtk::ExitFullscreen() { // Work around a bug where if we try to unfullscreen, metacity immediately // fullscreens us again. This is a little flickery and not necessary if diff --git a/chrome/browser/ui/gtk/browser_window_gtk.h b/chrome/browser/ui/gtk/browser_window_gtk.h index ae2ec93..30e50de 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.h +++ b/chrome/browser/ui/gtk/browser_window_gtk.h @@ -91,8 +91,12 @@ class BrowserWindowGtk : public BrowserWindow, virtual gfx::Rect GetBounds() const; virtual bool IsMaximized() const; virtual bool IsMinimized() const; - virtual void EnterFullscreen(const GURL& url, bool ask_permission); - virtual void ExitFullscreen(); + virtual void EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) OVERRIDE; + virtual void ExitFullscreen() OVERRIDE; + virtual void UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE; virtual bool IsFullscreen() const; virtual bool IsFullscreenBubbleVisible() const; virtual LocationBar* GetLocationBar() const; diff --git a/chrome/browser/ui/panels/panel.cc b/chrome/browser/ui/panels/panel.cc index eaf9355..be479b6 100644 --- a/chrome/browser/ui/panels/panel.cc +++ b/chrome/browser/ui/panels/panel.cc @@ -246,7 +246,8 @@ bool Panel::IsMinimized() const { return expansion_state_ != EXPANDED; } -void Panel::EnterFullscreen(const GURL& url, bool ask_permission) { +void Panel::EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) { NOTIMPLEMENTED(); } @@ -254,6 +255,12 @@ void Panel::ExitFullscreen() { NOTIMPLEMENTED(); } +void Panel::UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) { + NOTIMPLEMENTED(); +} + bool Panel::IsFullscreen() const { return false; } @@ -464,9 +471,13 @@ void Panel::OpenTabpose() { NOTIMPLEMENTED(); } -void Panel::SetPresentationMode(bool presentation_mode, - const GURL& url, - bool ask_permission) { +void Panel::EnterPresentationMode( + const GURL& url, + FullscreenExitBubbleType content_type) { + NOTIMPLEMENTED(); +} + +void Panel::ExitPresentationMode() { NOTIMPLEMENTED(); } diff --git a/chrome/browser/ui/panels/panel.h b/chrome/browser/ui/panels/panel.h index 28fcc88..ffdc44e 100644 --- a/chrome/browser/ui/panels/panel.h +++ b/chrome/browser/ui/panels/panel.h @@ -85,8 +85,12 @@ class Panel : public BrowserWindow, public NotificationObserver { virtual gfx::Rect GetBounds() const OVERRIDE; virtual bool IsMaximized() const OVERRIDE; virtual bool IsMinimized() const OVERRIDE; - virtual void EnterFullscreen(const GURL& url, bool ask_permission) OVERRIDE; + virtual void EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) OVERRIDE; virtual void ExitFullscreen() OVERRIDE; + virtual void UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE; virtual bool IsFullscreen() const OVERRIDE; virtual bool IsFullscreenBubbleVisible() const OVERRIDE; virtual LocationBar* GetLocationBar() const OVERRIDE; @@ -144,9 +148,10 @@ class Panel : public BrowserWindow, public NotificationObserver { virtual void Paste() OVERRIDE; #if defined(OS_MACOSX) virtual void OpenTabpose() OVERRIDE; - virtual void SetPresentationMode(bool presentation_mode, - const GURL& url, - bool ask_permission) OVERRIDE; + virtual void EnterPresentationMode( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE; + virtual void ExitPresentationMode() OVERRIDE; virtual bool InPresentationMode() OVERRIDE; #endif virtual void ShowInstant(TabContentsWrapper* preview) OVERRIDE; diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index e970b7c..38ac79f 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -766,12 +766,13 @@ bool BrowserView::IsMinimized() const { return frame_->IsMinimized(); } -void BrowserView::EnterFullscreen(const GURL& url, bool ask_permission) { +void BrowserView::EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) { if (IsFullscreen()) return; // Nothing to do. #if defined(OS_WIN) - ProcessFullscreen(true, url, ask_permission); + ProcessFullscreen(true, url, type == FEB_TYPE_FULLSCREEN_BUTTONS); #else // On Linux changing fullscreen is async. Ask the window to change it's // fullscreen state, and when done invoke ProcessFullscreen. @@ -792,6 +793,12 @@ void BrowserView::ExitFullscreen() { #endif } +void BrowserView::UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) { + NOTIMPLEMENTED(); +} + bool BrowserView::IsFullscreen() const { return frame_->IsFullscreen(); } diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index 6622021..c099543c 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h @@ -258,8 +258,12 @@ class BrowserView : public BrowserBubbleHost, virtual gfx::Rect GetBounds() const OVERRIDE; virtual bool IsMaximized() const OVERRIDE; virtual bool IsMinimized() const OVERRIDE; - virtual void EnterFullscreen(const GURL& url, bool ask_permission) OVERRIDE; + virtual void EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) OVERRIDE; virtual void ExitFullscreen() OVERRIDE; + virtual void UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE; virtual bool IsFullscreen() const OVERRIDE; virtual LocationBar* GetLocationBar() const OVERRIDE; virtual void SetFocusToLocationBar(bool select_all) OVERRIDE; diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h index 266cc00..340be43 100644 --- a/chrome/test/base/test_browser_window.h +++ b/chrome/test/base/test_browser_window.h @@ -43,9 +43,12 @@ class TestBrowserWindow : public BrowserWindow { virtual gfx::Rect GetBounds() const OVERRIDE; virtual bool IsMaximized() const OVERRIDE; virtual bool IsMinimized() const OVERRIDE; - virtual void EnterFullscreen(const GURL& url, - bool ask_permission) OVERRIDE {} + virtual void EnterFullscreen( + const GURL& url, FullscreenExitBubbleType type) OVERRIDE {} virtual void ExitFullscreen() OVERRIDE {} + virtual void UpdateFullscreenExitBubbleContent( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE {} virtual bool IsFullscreen() const OVERRIDE; virtual bool IsFullscreenBubbleVisible() const OVERRIDE; virtual LocationBar* GetLocationBar() const OVERRIDE; @@ -102,9 +105,10 @@ class TestBrowserWindow : public BrowserWindow { virtual void Paste() OVERRIDE {} #if defined(OS_MACOSX) virtual void OpenTabpose() OVERRIDE {} - virtual void SetPresentationMode(bool presentation_mode, - const GURL& url, - bool ask_permission) OVERRIDE {} + virtual void EnterPresentationMode( + const GURL& url, + FullscreenExitBubbleType bubble_type) OVERRIDE {} + virtual void ExitPresentationMode() OVERRIDE {} virtual bool InPresentationMode() OVERRIDE; #endif |