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

Side by Side Diff: chrome/browser/ui/browser_win.cc

Issue 11411286: Decouple IsMetroProcess() calls, introducing IsSingleWindowMetroMode(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: keep base/win/metro.h in omnibox_view_win.cc for IsTSFAwareRequired() Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/browser.h" 5 #include "chrome/browser/ui/browser.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "base/win/metro.h" 8 #include "base/win/metro.h"
9 #include "chrome/browser/bookmarks/bookmark_utils.h" 9 #include "chrome/browser/bookmarks/bookmark_utils.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/browser_commands.h" 11 #include "chrome/browser/ui/browser_commands.h"
12 #include "chrome/browser/ui/browser_finder.h" 12 #include "chrome/browser/ui/browser_finder.h"
13 #include "chrome/browser/ui/browser_tabstrip.h" 13 #include "chrome/browser/ui/browser_tabstrip.h"
14 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" 14 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h"
15 #include "chrome/browser/ui/tab_contents/tab_contents.h" 15 #include "chrome/browser/ui/tab_contents/tab_contents.h"
16 #include "win8/util/win8_util.h"
16 17
17 namespace { 18 namespace {
18 19
19 void NewMetroWindow(Browser* source_browser, Profile* profile) { 20 void NewWindowMaybeMetro(Browser* source_browser, Profile* profile) {
20 typedef void (*FlipFrameWindows)();
21
22 static FlipFrameWindows flip_window_fn = reinterpret_cast<FlipFrameWindows>(
23 ::GetProcAddress(base::win::GetMetroModule(), "FlipFrameWindows"));
24 DCHECK(flip_window_fn);
25
26 chrome::HostDesktopType host_desktop_type = 21 chrome::HostDesktopType host_desktop_type =
27 source_browser->host_desktop_type(); 22 source_browser->host_desktop_type();
28 Browser* browser = 23 if (win8::IsSingleWindowMetroMode()) {
29 browser::FindTabbedBrowser(profile, false, host_desktop_type); 24 typedef void (*FlipFrameWindows)();
30 25
31 if (!browser) { 26 static FlipFrameWindows flip_window_fn = reinterpret_cast<FlipFrameWindows>(
32 chrome::OpenEmptyWindow(profile); 27 ::GetProcAddress(base::win::GetMetroModule(), "FlipFrameWindows"));
33 return; 28 DCHECK(flip_window_fn);
34 }
35 29
36 chrome::NewTab(browser); 30 Browser* browser =
31 browser::FindTabbedBrowser(profile, false, host_desktop_type);
37 32
38 if (browser != source_browser) { 33 if (!browser) {
39 // Tell the metro_driver to flip our window. This causes the current 34 chrome::OpenEmptyWindow(profile);
40 // browser window to be hidden and the next window to be shown. 35 return;
41 flip_window_fn(); 36 }
37
38 chrome::NewTab(browser);
39
40 if (browser != source_browser) {
41 // Tell the metro_driver to flip our window. This causes the current
42 // browser window to be hidden and the next window to be shown.
43 flip_window_fn();
44 }
45 } else {
46 NewEmptyWindow(profile, host_desktop_type);
42 } 47 }
43 } 48 }
44 49
45 } // namespace 50 } // namespace
46 51
47 namespace chrome { 52 namespace chrome {
48 53
49 void NewWindow(Browser* browser) { 54 void NewWindow(Browser* browser) {
50 #if !defined(USE_AURA) 55 NewWindowMaybeMetro(browser, browser->profile()->GetOriginalProfile());
51 if (base::win::IsMetroProcess()) {
52 NewMetroWindow(browser, browser->profile()->GetOriginalProfile());
53 return;
54 }
55 #endif
56 NewEmptyWindow(browser->profile()->GetOriginalProfile(),
57 browser->host_desktop_type());
58 } 56 }
59 57
60 void NewIncognitoWindow(Browser* browser) { 58 void NewIncognitoWindow(Browser* browser) {
61 #if !defined(USE_AURA) 59 NewWindowMaybeMetro(browser, browser->profile()->GetOffTheRecordProfile());
62 if (base::win::IsMetroProcess()) {
63 NewMetroWindow(browser, browser->profile()->GetOffTheRecordProfile());
64 return;
65 }
66 #endif
67 NewEmptyWindow(browser->profile()->GetOffTheRecordProfile(),
68 browser->host_desktop_type());
69 } 60 }
70 61
71 } // namespace chrome 62 } // namespace chrome
72 63
73 void Browser::SetMetroSnapMode(bool enable) { 64 void Browser::SetMetroSnapMode(bool enable) {
74 fullscreen_controller_->SetMetroSnapMode(enable); 65 fullscreen_controller_->SetMetroSnapMode(enable);
75 } 66 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser_commands.cc ('k') | chrome/browser/ui/extensions/application_launch.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698