| Index: chrome/browser/browser_process_platform_part_aurawin.cc
|
| diff --git a/chrome/browser/browser_process_platform_part_aurawin.cc b/chrome/browser/browser_process_platform_part_aurawin.cc
|
| index 8299d01a3347fe8b7e997b74206070c07948ae07..34813a654bb852f66559808b5535aa8ed75915e2 100644
|
| --- a/chrome/browser/browser_process_platform_part_aurawin.cc
|
| +++ b/chrome/browser/browser_process_platform_part_aurawin.cc
|
| @@ -24,11 +24,23 @@ void BrowserProcessPlatformPart::OnMetroViewerProcessTerminated() {
|
|
|
| void BrowserProcessPlatformPart::PlatformSpecificCommandLineProcessing(
|
| const CommandLine& command_line) {
|
| - if (base::win::GetVersion() >= base::win::VERSION_WIN8 &&
|
| - command_line.HasSwitch(switches::kViewerConnect) &&
|
| - !metro_viewer_process_host_.get()) {
|
| - // Create a host to connect to the Metro viewer process over IPC.
|
| - metro_viewer_process_host_.reset(new ChromeMetroViewerProcessHost());
|
| + // Check for Windows 8 specific commandlines requesting that this process
|
| + // either connect to an existing viewer or launch a new viewer and
|
| + // synchronously wait for it to connect.
|
| + if (base::win::GetVersion() >= base::win::VERSION_WIN8) {
|
| + bool launch = command_line.HasSwitch(switches::kViewerLaunchViaAppId);
|
| + bool connect = (launch ||
|
| + (command_line.HasSwitch(switches::kViewerConnect) &&
|
| + !metro_viewer_process_host_.get()));
|
| + if (connect) {
|
| + // Create a host to connect to the Metro viewer process over IPC.
|
| + metro_viewer_process_host_.reset(new ChromeMetroViewerProcessHost());
|
| + if (launch) {
|
| + CHECK(metro_viewer_process_host_->LaunchViewerAndWaitForConnection(
|
| + command_line.GetSwitchValueNative(
|
| + switches::kViewerLaunchViaAppId)));
|
| + }
|
| + }
|
| }
|
| }
|
|
|
|
|