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

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: Aura compile fixes. 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
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/test/base/test_browser_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 e840de3abbf3720f7155e8b8ace703592f7cdacc..b4e2592170e769a8e624170e3c753ca0cdac6233 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -770,14 +770,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(
@@ -805,17 +805,33 @@ 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::SetMetroSnapMode(bool enable) {
+ ProcessFullscreen(enable, FOR_METRO, GURL(), FEB_TYPE_NONE);
+}
+
+bool BrowserView::IsInMetroSnapMode() const {
+#if defined(USE_AURA)
+ return false;
+#else
+ return static_cast<views::NativeWidgetWin*>(
+ frame_->native_widget())->IsInMetroSnapMode();
+#endif
+}
+#endif // defined(OS_WIN)
+
void BrowserView::RestoreFocus() {
WebContents* selected_web_contents = GetActiveWebContents();
if (selected_web_contents)
@@ -2086,6 +2102,7 @@ bool BrowserView::UpdateChildViewAndLayout(views::View* new_view,
}
void BrowserView::ProcessFullscreen(bool fullscreen,
+ FullscreenType type,
const GURL& url,
FullscreenExitBubbleType bubble_type) {
// Reduce jankiness during the following position changes by:
@@ -2098,7 +2115,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();
@@ -2125,15 +2143,23 @@ void BrowserView::ProcessFullscreen(bool fullscreen,
PushForceHidden();
#endif
- // Toggle fullscreen mode.
- frame_->SetFullscreen(fullscreen);
+ if (type == FOR_METRO) {
+#if defined(OS_WIN) && !defined(USE_AURA)
+ // 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));
}
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/test/base/test_browser_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698