summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-17 06:11:53 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-17 06:11:53 +0000
commit8d944b369dc0979cc9926cdda7673682bf8e5bef (patch)
treecf597f2b4443c04d48b14dfa2fc434984a058c90
parent700317717262a7a81f38c6850e7b1e678ad5b7b7 (diff)
downloadchromium_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.cc6
-rw-r--r--chrome/browser/ui/browser.cc20
-rw-r--r--chrome/browser/ui/browser_window.h14
-rw-r--r--chrome/browser/ui/cocoa/browser_window_cocoa.h15
-rw-r--r--chrome/browser/ui/cocoa/browser_window_cocoa.mm31
-rw-r--r--chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm2
-rw-r--r--chrome/browser/ui/cocoa/view_id_util_browsertest.mm3
-rw-r--r--chrome/browser/ui/gtk/browser_window_gtk.cc11
-rw-r--r--chrome/browser/ui/gtk/browser_window_gtk.h8
-rw-r--r--chrome/browser/ui/panels/panel.cc19
-rw-r--r--chrome/browser/ui/panels/panel.h13
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc11
-rw-r--r--chrome/browser/ui/views/frame/browser_view.h6
-rw-r--r--chrome/test/base/test_browser_window.h14
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