Chromium Code Reviews| Index: chrome/browser/ui/fullscreen_controller.cc |
| diff --git a/chrome/browser/ui/fullscreen_controller.cc b/chrome/browser/ui/fullscreen_controller.cc |
| index c1636ad58f83297aa5fbec936199438f218ecde4..772786011b828a17bcc0a22c0283f0a5ca2e5009 100644 |
| --- a/chrome/browser/ui/fullscreen_controller.cc |
| +++ b/chrome/browser/ui/fullscreen_controller.cc |
| @@ -15,6 +15,7 @@ |
| #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| #include "chrome/common/chrome_notification_types.h" |
| #include "chrome/common/chrome_switches.h" |
| +#include "chrome/common/extensions/extension.h" |
| #include "content/browser/renderer_host/render_view_host.h" |
| #include "content/public/browser/notification_service.h" |
| #include "content/public/browser/user_metrics.h" |
| @@ -110,9 +111,9 @@ void FullscreenController::ToggleFullscreenModeForTab(WebContents* tab, |
| if (!in_browser_or_tab_fullscreen_mode) { |
| tab_caused_fullscreen_ = true; |
| #if defined(OS_MACOSX) |
| - TogglePresentationMode(true); |
| + TogglePresentationModeInternal(true); |
| #else |
| - ToggleFullscreenMode(true); |
| + ToggleFullscreenModeInternal(true); |
| #endif |
| } else { |
| // We need to update the fullscreen exit bubble, e.g., going from browser |
| @@ -128,9 +129,9 @@ void FullscreenController::ToggleFullscreenModeForTab(WebContents* tab, |
| if (in_browser_or_tab_fullscreen_mode) { |
| if (tab_caused_fullscreen_) { |
| #if defined(OS_MACOSX) |
| - TogglePresentationMode(true); |
| + TogglePresentationModeInternal(true); |
| #else |
| - ToggleFullscreenMode(true); |
| + ToggleFullscreenModeInternal(true); |
| #endif |
| } else { |
| // If currently there is a tab in "tab fullscreen" mode and fullscreen |
| @@ -145,7 +146,11 @@ void FullscreenController::ToggleFullscreenModeForTab(WebContents* tab, |
| } |
| #if defined(OS_MACOSX) |
| -void FullscreenController::TogglePresentationMode(bool for_tab) { |
| +void FullscreenController::TogglePresentationMode() { |
| + TogglePresentationModeInternal(false); |
| +} |
| + |
| +void FullscreenController::TogglePresentationModeInternal(bool for_tab) { |
| bool entering_fullscreen = !window_->InPresentationMode(); |
| GURL url; |
| if (for_tab) { |
| @@ -161,8 +166,19 @@ void FullscreenController::TogglePresentationMode(bool for_tab) { |
| } |
| #endif |
| +void FullscreenController::ToggleFullscreenMode() { |
|
Ben Goodger (Google)
2012/02/09 19:32:49
In adding these functions you've made the order of
hashimoto
2012/02/10 05:09:32
Sorry, fixed.
|
| + extension_caused_fullscreen_ = NULL; |
| + ToggleFullscreenModeInternal(false); |
| +} |
| + |
| +void FullscreenController::ToggleFullscreenModeWithExtension( |
| + const Extension& extension) { |
| + extension_caused_fullscreen_ = &extension; |
| + ToggleFullscreenModeInternal(false); |
| +} |
| + |
| // TODO(koz): Change |for_tab| to an enum. |
| -void FullscreenController::ToggleFullscreenMode(bool for_tab) { |
| +void FullscreenController::ToggleFullscreenModeInternal(bool for_tab) { |
| bool entering_fullscreen = !window_->IsFullscreen(); |
| #if !defined(OS_MACOSX) |
| @@ -179,12 +195,16 @@ void FullscreenController::ToggleFullscreenMode(bool for_tab) { |
| tab_fullscreen_accepted_ = entering_fullscreen && |
| GetFullscreenSetting(url) == CONTENT_SETTING_ALLOW; |
| } else { |
| + if (extension_caused_fullscreen_) |
| + url = extension_caused_fullscreen_->url(); |
| content::RecordAction(UserMetricsAction("ToggleFullscreen")); |
| } |
| - if (entering_fullscreen) |
| + if (entering_fullscreen) { |
| window_->EnterFullscreen(url, GetFullscreenExitBubbleType()); |
| - else |
| + } else { |
| window_->ExitFullscreen(); |
| + extension_caused_fullscreen_ = NULL; |
| + } |
| // Once the window has become fullscreen it'll call back to |
| // WindowFullscreenStateChanged(). We don't do this immediately as |
| @@ -314,7 +334,7 @@ void FullscreenController::NotifyTabOfFullscreenExitIfNecessary() { |
| void FullscreenController::ExitTabbedFullscreenModeIfNecessary() { |
| if (tab_caused_fullscreen_) |
| - ToggleFullscreenMode(false); |
| + ToggleFullscreenMode(); |
| else |
| NotifyTabOfFullscreenExitIfNecessary(); |
| } |
| @@ -323,6 +343,8 @@ void FullscreenController::UpdateFullscreenExitBubbleContent() { |
| GURL url; |
| if (fullscreened_tab_) |
| url = fullscreened_tab_->web_contents()->GetURL(); |
| + else if (extension_caused_fullscreen_) |
| + url = extension_caused_fullscreen_->url(); |
| window_->UpdateFullscreenExitBubbleContent(url, |
| GetFullscreenExitBubbleType()); |
| @@ -335,11 +357,13 @@ void FullscreenController::NotifyFullscreenChange() { |
| content::NotificationService::NoDetails()); |
| } |
| -FullscreenExitBubbleType |
| - FullscreenController::GetFullscreenExitBubbleType() const { |
| +FullscreenExitBubbleType FullscreenController::GetFullscreenExitBubbleType() |
| + const { |
| if (!fullscreened_tab_) { |
| DCHECK_EQ(MOUSELOCK_NOT_REQUESTED, mouse_lock_state_); |
| - return FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION; |
| + return extension_caused_fullscreen_ ? |
| + FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION : |
| + FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION; |
| } |
| if (fullscreened_tab_ && !tab_fullscreen_accepted_) { |
| DCHECK_NE(MOUSELOCK_ACCEPTED, mouse_lock_state_); |