| Index: chrome/browser/ui/views/frame/browser_view.cc
|
| diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
|
| index 9f517bfc47420b2889dd38a097d416cc85965e5e..abd0c16e287982e67273e02f07e9456894442673 100644
|
| --- a/chrome/browser/ui/views/frame/browser_view.cc
|
| +++ b/chrome/browser/ui/views/frame/browser_view.cc
|
| @@ -769,14 +769,14 @@ void BrowserView::EnterFullscreen(
|
| if (IsFullscreen())
|
| return; // Nothing to do.
|
|
|
| - ProcessFullscreen(true, url, bubble_type);
|
| + ProcessFullscreen(true, FOR_DESKTOP, url, bubble_type);
|
| }
|
|
|
| void BrowserView::ExitFullscreen() {
|
| if (!IsFullscreen())
|
| return; // Nothing to do.
|
|
|
| - ProcessFullscreen(false, GURL(), FEB_TYPE_NONE);
|
| + ProcessFullscreen(false, FOR_DESKTOP, GURL(), FEB_TYPE_NONE);
|
| }
|
|
|
| void BrowserView::UpdateFullscreenExitBubbleContent(
|
| @@ -804,17 +804,24 @@ void BrowserView::FullScreenStateChanged() {
|
| if (IsFullscreen()) {
|
| if (fullscreen_request_.pending) {
|
| fullscreen_request_.pending = false;
|
| - ProcessFullscreen(true, fullscreen_request_.url,
|
| + ProcessFullscreen(true, FOR_DESKTOP,
|
| + fullscreen_request_.url,
|
| fullscreen_request_.bubble_type);
|
| } else {
|
| - ProcessFullscreen(true, GURL(),
|
| + ProcessFullscreen(true, FOR_DESKTOP, GURL(),
|
| FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION);
|
| }
|
| } else {
|
| - ProcessFullscreen(false, GURL(), FEB_TYPE_NONE);
|
| + ProcessFullscreen(false, FOR_DESKTOP, GURL(), FEB_TYPE_NONE);
|
| }
|
| }
|
|
|
| +#if defined(OS_WIN)
|
| +void BrowserView::ToggleMetroSnapMode(bool enable) {
|
| + ProcessFullscreen(enable, FOR_METRO, GURL(), FEB_TYPE_NONE);
|
| +}
|
| +#endif // defined(OS_WIN)
|
| +
|
| void BrowserView::RestoreFocus() {
|
| WebContents* selected_web_contents = GetSelectedWebContents();
|
| if (selected_web_contents)
|
| @@ -2065,6 +2072,7 @@ bool BrowserView::UpdateChildViewAndLayout(views::View* new_view,
|
| }
|
|
|
| void BrowserView::ProcessFullscreen(bool fullscreen,
|
| + ProcessFullscreenType type,
|
| const GURL& url,
|
| FullscreenExitBubbleType bubble_type) {
|
| // Reduce jankiness during the following position changes by:
|
| @@ -2077,7 +2085,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen,
|
| OmniboxViewWin* omnibox_view =
|
| static_cast<OmniboxViewWin*>(location_bar->GetLocationEntry());
|
| #endif
|
| - if (!fullscreen) {
|
| +
|
| + if (!fullscreen && type != FOR_METRO) {
|
| // Hide the fullscreen bubble as soon as possible, since the mode toggle can
|
| // take enough time for the user to notice.
|
| fullscreen_bubble_.reset();
|
| @@ -2104,15 +2113,22 @@ void BrowserView::ProcessFullscreen(bool fullscreen,
|
| PushForceHidden();
|
| #endif
|
|
|
| - // Toggle fullscreen mode.
|
| - frame_->SetFullscreen(fullscreen);
|
| -
|
| - browser_->WindowFullscreenStateChanged();
|
| + if (type == FOR_METRO) {
|
| +#if defined(OS_WIN)
|
| + // Enter metro snap mode.
|
| + static_cast<views::NativeWidgetWin*>(
|
| + frame_->native_widget())->SetMetroSnapFullscreen(fullscreen);
|
| +#endif
|
| + } else {
|
| + // Toggle fullscreen mode.
|
| + frame_->SetFullscreen(fullscreen);
|
| + browser_->WindowFullscreenStateChanged();
|
| + }
|
|
|
| if (fullscreen) {
|
| bool is_kiosk =
|
| CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode);
|
| - if (!is_kiosk) {
|
| + if (!is_kiosk && type != FOR_METRO) {
|
| fullscreen_bubble_.reset(new FullscreenExitBubbleViews(
|
| GetWidget(), browser_.get(), url, bubble_type));
|
| }
|
|
|