OLD | NEW |
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_command_controller.h" | 5 #include "chrome/browser/ui/browser_command_controller.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 #include "content/public/browser/web_contents_observer.h" | 51 #include "content/public/browser/web_contents_observer.h" |
52 #include "content/public/common/url_constants.h" | 52 #include "content/public/common/url_constants.h" |
53 #include "extensions/browser/extension_system.h" | 53 #include "extensions/browser/extension_system.h" |
54 #include "ui/events/keycodes/keyboard_codes.h" | 54 #include "ui/events/keycodes/keyboard_codes.h" |
55 | 55 |
56 #if defined(OS_MACOSX) | 56 #if defined(OS_MACOSX) |
57 #include "chrome/browser/ui/browser_commands_mac.h" | 57 #include "chrome/browser/ui/browser_commands_mac.h" |
58 #endif | 58 #endif |
59 | 59 |
60 #if defined(OS_WIN) | 60 #if defined(OS_WIN) |
61 #include "base/win/metro.h" | |
62 #include "base/win/windows_version.h" | 61 #include "base/win/windows_version.h" |
63 #include "chrome/browser/ui/apps/apps_metro_handler_win.h" | |
64 #include "content/public/browser/gpu_data_manager.h" | 62 #include "content/public/browser/gpu_data_manager.h" |
65 #endif | 63 #endif |
66 | 64 |
67 #if defined(USE_ASH) | 65 #if defined(USE_ASH) |
68 #include "ash/accelerators/accelerator_commands.h" | 66 #include "ash/accelerators/accelerator_commands.h" |
69 #include "chrome/browser/ui/ash/ash_util.h" | 67 #include "chrome/browser/ui/ash/ash_util.h" |
70 #endif | 68 #endif |
71 | 69 |
72 #if defined(OS_CHROMEOS) | 70 #if defined(OS_CHROMEOS) |
73 #include "ash/multi_profile_uma.h" | 71 #include "ash/multi_profile_uma.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 return true; | 109 return true; |
112 | 110 |
113 // If the |virtual_url()| isn't a chrome:// URL, check if it's actually | 111 // If the |virtual_url()| isn't a chrome:// URL, check if it's actually |
114 // view-source: of a chrome:// URL. | 112 // view-source: of a chrome:// URL. |
115 if (entry->GetVirtualURL().SchemeIs(content::kViewSourceScheme)) | 113 if (entry->GetVirtualURL().SchemeIs(content::kViewSourceScheme)) |
116 return entry->GetURL().SchemeIs(content::kChromeUIScheme); | 114 return entry->GetURL().SchemeIs(content::kChromeUIScheme); |
117 | 115 |
118 return false; | 116 return false; |
119 } | 117 } |
120 | 118 |
121 #if defined(OS_WIN) | |
122 // Windows 8 specific helper class to manage DefaultBrowserWorker. It does the | |
123 // following asynchronous actions in order: | |
124 // 1- Check that chrome is the default browser | |
125 // 2- If we are the default, restart chrome in metro and exit | |
126 // 3- If not the default browser show the 'select default browser' system dialog | |
127 // 4- When dialog dismisses check again who got made the default | |
128 // 5- If we are the default then restart chrome in metro and exit | |
129 // 6- If we are not the default exit. | |
130 // | |
131 // Note: this class deletes itself. | |
132 class SwitchToMetroUIHandler | |
133 : public ShellIntegration::DefaultWebClientObserver { | |
134 public: | |
135 SwitchToMetroUIHandler() | |
136 : default_browser_worker_( | |
137 new ShellIntegration::DefaultBrowserWorker(this)), | |
138 first_check_(true) { | |
139 default_browser_worker_->StartCheckIsDefault(); | |
140 } | |
141 | |
142 ~SwitchToMetroUIHandler() override { | |
143 default_browser_worker_->ObserverDestroyed(); | |
144 } | |
145 | |
146 private: | |
147 void SetDefaultWebClientUIState( | |
148 ShellIntegration::DefaultWebClientUIState state) override { | |
149 switch (state) { | |
150 case ShellIntegration::STATE_PROCESSING: | |
151 return; | |
152 case ShellIntegration::STATE_UNKNOWN : | |
153 break; | |
154 case ShellIntegration::STATE_IS_DEFAULT: | |
155 chrome::AttemptRestartToMetroMode(); | |
156 break; | |
157 case ShellIntegration::STATE_NOT_DEFAULT: | |
158 if (first_check_) { | |
159 default_browser_worker_->StartSetAsDefault(); | |
160 return; | |
161 } | |
162 break; | |
163 default: | |
164 NOTREACHED(); | |
165 } | |
166 delete this; | |
167 } | |
168 | |
169 void OnSetAsDefaultConcluded(bool success) override { | |
170 if (!success) { | |
171 delete this; | |
172 return; | |
173 } | |
174 first_check_ = false; | |
175 } | |
176 | |
177 bool IsInteractiveSetDefaultPermitted() override { | |
178 return true; | |
179 } | |
180 | |
181 scoped_refptr<ShellIntegration::DefaultBrowserWorker> default_browser_worker_; | |
182 bool first_check_; | |
183 | |
184 DISALLOW_COPY_AND_ASSIGN(SwitchToMetroUIHandler); | |
185 }; | |
186 #endif // defined(OS_WIN) | |
187 | |
188 } // namespace | 119 } // namespace |
189 | 120 |
190 namespace chrome { | 121 namespace chrome { |
191 | 122 |
192 /////////////////////////////////////////////////////////////////////////////// | 123 /////////////////////////////////////////////////////////////////////////////// |
193 // BrowserCommandController, public: | 124 // BrowserCommandController, public: |
194 | 125 |
195 BrowserCommandController::BrowserCommandController(Browser* browser) | 126 BrowserCommandController::BrowserCommandController(Browser* browser) |
196 : browser_(browser), | 127 : browser_(browser), |
197 command_updater_(this), | 128 command_updater_(this), |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 #endif | 423 #endif |
493 | 424 |
494 #if defined(OS_WIN) | 425 #if defined(OS_WIN) |
495 // Windows 8 specific commands. | 426 // Windows 8 specific commands. |
496 case IDC_METRO_SNAP_ENABLE: | 427 case IDC_METRO_SNAP_ENABLE: |
497 browser_->SetMetroSnapMode(true); | 428 browser_->SetMetroSnapMode(true); |
498 break; | 429 break; |
499 case IDC_METRO_SNAP_DISABLE: | 430 case IDC_METRO_SNAP_DISABLE: |
500 browser_->SetMetroSnapMode(false); | 431 browser_->SetMetroSnapMode(false); |
501 break; | 432 break; |
| 433 // TODO(scottmg): Remove entirely http://crbug.com/558054. |
502 case IDC_WIN_DESKTOP_RESTART: | 434 case IDC_WIN_DESKTOP_RESTART: |
503 if (!VerifyASHSwitchForApps(window()->GetNativeWindow(), id)) | |
504 break; | |
505 | |
506 chrome::AttemptRestartToDesktopMode(); | |
507 if (base::win::GetVersion() >= base::win::VERSION_WIN8) { | |
508 content::RecordAction(base::UserMetricsAction("Win8DesktopRestart")); | |
509 } else { | |
510 content::RecordAction(base::UserMetricsAction("Win7DesktopRestart")); | |
511 } | |
512 break; | 435 break; |
| 436 // TODO(scottmg): Remove entirely http://crbug.com/558054. |
513 case IDC_WIN8_METRO_RESTART: | 437 case IDC_WIN8_METRO_RESTART: |
514 case IDC_WIN_CHROMEOS_RESTART: | 438 case IDC_WIN_CHROMEOS_RESTART: |
515 if (!VerifyASHSwitchForApps(window()->GetNativeWindow(), id)) | |
516 break; | |
517 if (base::win::GetVersion() >= base::win::VERSION_WIN8) { | |
518 // SwitchToMetroUIHandler deletes itself. | |
519 new SwitchToMetroUIHandler; | |
520 content::RecordAction(base::UserMetricsAction("Win8MetroRestart")); | |
521 } else { | |
522 content::RecordAction(base::UserMetricsAction("Win7ASHRestart")); | |
523 chrome::AttemptRestartToMetroMode(); | |
524 } | |
525 break; | |
526 case IDC_PIN_TO_START_SCREEN: | |
527 TogglePagePinnedToStartScreen(browser_); | |
528 break; | 439 break; |
529 #endif | 440 #endif |
530 | 441 |
531 #if defined(OS_MACOSX) | 442 #if defined(OS_MACOSX) |
532 case IDC_PRESENTATION_MODE: | 443 case IDC_PRESENTATION_MODE: |
533 chrome::ToggleFullscreenMode(browser_); | 444 chrome::ToggleFullscreenMode(browser_); |
534 break; | 445 break; |
535 case IDC_TOGGLE_FULLSCREEN_TOOLBAR: | 446 case IDC_TOGGLE_FULLSCREEN_TOOLBAR: |
536 chrome::ToggleFullscreenToolbar(browser_); | 447 chrome::ToggleFullscreenToolbar(browser_); |
537 break; | 448 break; |
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1384 | 1295 |
1385 BrowserWindow* BrowserCommandController::window() { | 1296 BrowserWindow* BrowserCommandController::window() { |
1386 return browser_->window(); | 1297 return browser_->window(); |
1387 } | 1298 } |
1388 | 1299 |
1389 Profile* BrowserCommandController::profile() { | 1300 Profile* BrowserCommandController::profile() { |
1390 return browser_->profile(); | 1301 return browser_->profile(); |
1391 } | 1302 } |
1392 | 1303 |
1393 } // namespace chrome | 1304 } // namespace chrome |
OLD | NEW |