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..ebc178fbe1c2e8e1b1e54396e93e57e743c0235f 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, NULL); |
|
yzshen1
2012/02/08 18:05:27
I think the following scenario doesn't work correc
hashimoto
2012/02/09 09:10:18
Thank you for finding this.
Fixed by adding |exten
|
| #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, NULL); |
| #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) { |
| @@ -154,15 +159,25 @@ void FullscreenController::TogglePresentationMode(bool for_tab) { |
| GetFullscreenSetting(url) == CONTENT_SETTING_ALLOW; |
| } |
| if (entering_fullscreen) |
| - window_->EnterPresentationMode(url, GetFullscreenExitBubbleType()); |
| + window_->EnterPresentationMode(url, GetFullscreenExitBubbleType(NULL)); |
| else |
| window_->ExitPresentationMode(); |
| WindowFullscreenStateChanged(); |
| } |
| #endif |
| +void FullscreenController::ToggleFullscreenMode() { |
| + ToggleFullscreenModeInternal(false, NULL); |
| +} |
| + |
| +void FullscreenController::ToggleFullscreenModeWithExtension( |
| + const Extension& extension) { |
| + ToggleFullscreenModeInternal(false, &extension); |
| +} |
| + |
| // TODO(koz): Change |for_tab| to an enum. |
| -void FullscreenController::ToggleFullscreenMode(bool for_tab) { |
| +void FullscreenController::ToggleFullscreenModeInternal( |
| + bool for_tab, const Extension* extension) { |
| bool entering_fullscreen = !window_->IsFullscreen(); |
| #if !defined(OS_MACOSX) |
| @@ -179,12 +194,15 @@ void FullscreenController::ToggleFullscreenMode(bool for_tab) { |
| tab_fullscreen_accepted_ = entering_fullscreen && |
| GetFullscreenSetting(url) == CONTENT_SETTING_ALLOW; |
| } else { |
| + if (extension) |
| + url = extension->url(); |
| content::RecordAction(UserMetricsAction("ToggleFullscreen")); |
| } |
| - if (entering_fullscreen) |
| - window_->EnterFullscreen(url, GetFullscreenExitBubbleType()); |
| - else |
| + if (entering_fullscreen) { |
| + window_->EnterFullscreen(url, GetFullscreenExitBubbleType(extension)); |
| + } else { |
| window_->ExitFullscreen(); |
| + } |
| // Once the window has become fullscreen it'll call back to |
| // WindowFullscreenStateChanged(). We don't do this immediately as |
| @@ -314,7 +332,7 @@ void FullscreenController::NotifyTabOfFullscreenExitIfNecessary() { |
| void FullscreenController::ExitTabbedFullscreenModeIfNecessary() { |
| if (tab_caused_fullscreen_) |
| - ToggleFullscreenMode(false); |
| + ToggleFullscreenMode(); |
| else |
| NotifyTabOfFullscreenExitIfNecessary(); |
| } |
| @@ -325,7 +343,7 @@ void FullscreenController::UpdateFullscreenExitBubbleContent() { |
| url = fullscreened_tab_->web_contents()->GetURL(); |
| window_->UpdateFullscreenExitBubbleContent(url, |
| - GetFullscreenExitBubbleType()); |
| + GetFullscreenExitBubbleType(NULL)); |
| } |
| void FullscreenController::NotifyFullscreenChange() { |
| @@ -335,11 +353,12 @@ void FullscreenController::NotifyFullscreenChange() { |
| content::NotificationService::NoDetails()); |
| } |
| -FullscreenExitBubbleType |
| - FullscreenController::GetFullscreenExitBubbleType() const { |
| +FullscreenExitBubbleType FullscreenController::GetFullscreenExitBubbleType( |
| + const Extension* extension) const { |
| if (!fullscreened_tab_) { |
| DCHECK_EQ(MOUSELOCK_NOT_REQUESTED, mouse_lock_state_); |
| - return FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION; |
| + return extension ? 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_); |