Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Unified Diff: chrome/browser/ui/views/frame/browser_view.cc

Issue 10446106: Preliminary metro snap plumbing. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix test errors, unify fullscreen code in browser view. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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));
}

Powered by Google App Engine
This is Rietveld 408576698