diff options
Diffstat (limited to 'chrome/browser/ui/views/frame/browser_view.cc')
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.cc | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 5e5ec9c..7ae027f 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -121,6 +121,7 @@ #include "ui/views/window/dialog_delegate.h" #if defined(USE_ASH) +#include "ash/ash_switches.h" #include "ash/launcher/launcher.h" #include "ash/launcher/launcher_model.h" #include "ash/shell.h" @@ -194,6 +195,19 @@ bool ShouldSaveOrRestoreWindowPos() { return true; } +// Returns whether immersive mode should replace fullscreen, which should only +// occur for "browser-fullscreen" and not for "tab-fullscreen" (which has a URL +// for the tab entering fullscreen). +bool UseImmersiveFullscreen(const GURL& url) { +#if defined(USE_ASH) + bool is_browser_fullscreen = url.is_empty(); + return is_browser_fullscreen && + CommandLine::ForCurrentProcess()->HasSwitch( + ash::switches::kAshImmersiveMode); +#endif + return false; +} + } // namespace /////////////////////////////////////////////////////////////////////////////// @@ -766,7 +780,10 @@ void BrowserView::ExitFullscreen() { void BrowserView::UpdateFullscreenExitBubbleContent( const GURL& url, FullscreenExitBubbleType bubble_type) { - if (bubble_type == FEB_TYPE_NONE) { + // Immersive mode has no exit bubble because it has a visible strip at the + // top that gives the user a hover target. + // TODO(jamescook): Figure out what to do with mouse-lock. + if (bubble_type == FEB_TYPE_NONE || UseImmersiveFullscreen(url)) { fullscreen_bubble_.reset(); } else if (fullscreen_bubble_.get()) { fullscreen_bubble_->UpdateContent(url, bubble_type); @@ -776,6 +793,14 @@ void BrowserView::UpdateFullscreenExitBubbleContent( } } +bool BrowserView::ShouldHideUIForFullscreen() const { +#if defined(USE_ASH) + // Immersive reveal needs UI for the slide-down top panel. + return IsFullscreen() && !immersive_mode_controller_->IsRevealed(); +#endif + return IsFullscreen(); +} + bool BrowserView::IsFullscreen() const { return frame_->IsFullscreen(); } @@ -2282,7 +2307,9 @@ void BrowserView::ProcessFullscreen(bool fullscreen, browser_->WindowFullscreenStateChanged(); if (fullscreen) { - if (!chrome::IsRunningInAppMode() && type != FOR_METRO) { + if (!chrome::IsRunningInAppMode() && + type != FOR_METRO && + !UseImmersiveFullscreen(url)) { fullscreen_bubble_.reset(new FullscreenExitBubbleViews( GetWidget(), browser_.get(), url, bubble_type)); } @@ -2296,6 +2323,9 @@ void BrowserView::ProcessFullscreen(bool fullscreen, #endif } + if (UseImmersiveFullscreen(url)) + immersive_mode_controller_->SetEnabled(fullscreen); + // Undo our anti-jankiness hacks and force the window to re-layout now that // it's in its final position. ignore_layout_ = false; |