| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "ash/test/test_metro_viewer_process_host.h" | 5 #include "ash/test/test_metro_viewer_process_host.h" |
| 6 | 6 |
| 7 #include <shellapi.h> | 7 #include <shellapi.h> |
| 8 #include <shlobj.h> | 8 #include <shlobj.h> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 | 54 |
| 55 TestMetroViewerProcessHost::~TestMetroViewerProcessHost() { | 55 TestMetroViewerProcessHost::~TestMetroViewerProcessHost() { |
| 56 channel_.reset(); | 56 channel_.reset(); |
| 57 ipc_thread_.Stop(); | 57 ipc_thread_.Stop(); |
| 58 } | 58 } |
| 59 | 59 |
| 60 void TestMetroViewerProcessHost::NotifyChannelConnected() { | 60 void TestMetroViewerProcessHost::NotifyChannelConnected() { |
| 61 channel_connected_event_.Signal(); | 61 channel_connected_event_.Signal(); |
| 62 } | 62 } |
| 63 | 63 |
| 64 bool TestMetroViewerProcessHost::LaunchImmersiveChromeAndWaitForConnection() { | 64 bool TestMetroViewerProcessHost::LaunchViewerAndWaitForConnection( |
| 65 // Activate metro chrome. NOTE: This assumes a few things: | 65 const string16& app_user_model_id) { |
| 66 // 1) That we are using the per-user AppModelId. This is safe for tests. | 66 // Activate the viewer process. NOTE: This assumes that the viewer process is |
| 67 // | 67 // registered as the default browser using the provided |app_user_model_id|. |
| 68 // 2) That Chrome is registered as the default browser using a test AppModelId | |
| 69 // suffix. | |
| 70 // TODO(robertshield,grt): Automate 2). Note that at current, The Way to | |
| 71 // register chrome.exe is to run | |
| 72 // | |
| 73 // setup.exe --register-dev-chrome --register-dev-chrome-suffix=.test | |
| 74 // | |
| 75 // 3) That chrome.exe/delegate_execute.exe are at all suitable for using as | |
| 76 // a metro viewer process for tests. | |
| 77 // TODO(robertshield): Investigate having a minimal non-chrome viewer process. | |
| 78 // http://crbug.com/170425 | |
| 79 #if defined(GOOGLE_CHROME_BUILD) | |
| 80 const wchar_t kAppUserModelId[] = L"Chrome"; | |
| 81 #else // GOOGLE_CHROME_BUILD | |
| 82 const wchar_t kAppUserModelId[] = L"Chromium"; | |
| 83 #endif // GOOGLE_CHROME_BUILD | |
| 84 | 68 |
| 85 // TODO(robertshield): Initialize COM at test suite startup. | 69 // TODO(robertshield): Initialize COM at test suite startup. |
| 86 base::win::ScopedCOMInitializer com_initializer; | 70 base::win::ScopedCOMInitializer com_initializer; |
| 87 | 71 |
| 88 string16 app_model_id(kAppUserModelId); | |
| 89 app_model_id.append(L".test"); | |
| 90 | |
| 91 base::win::ScopedComPtr<IApplicationActivationManager> activator; | 72 base::win::ScopedComPtr<IApplicationActivationManager> activator; |
| 92 HRESULT hr = activator.CreateInstance(CLSID_ApplicationActivationManager); | 73 HRESULT hr = activator.CreateInstance(CLSID_ApplicationActivationManager); |
| 93 if (SUCCEEDED(hr)) { | 74 if (SUCCEEDED(hr)) { |
| 94 DWORD pid = 0; | 75 DWORD pid = 0; |
| 95 hr = activator->ActivateApplication( | 76 hr = activator->ActivateApplication( |
| 96 app_model_id.c_str(), L"open", AO_NONE, &pid); | 77 app_user_model_id.c_str(), L"open", AO_NONE, &pid); |
| 97 } | 78 } |
| 98 | 79 |
| 99 LOG_IF(ERROR, FAILED(hr)) << "Tried and failed to launch Metro Chrome. " | 80 LOG_IF(ERROR, FAILED(hr)) << "Tried and failed to launch Metro Chrome. " |
| 100 << "hr=" << std::hex << hr; | 81 << "hr=" << std::hex << hr; |
| 101 | 82 |
| 102 // Having launched the viewer process, now we wait for it to connect. | 83 // Having launched the viewer process, now we wait for it to connect. |
| 103 return channel_connected_event_.TimedWait(base::TimeDelta::FromSeconds(60)); | 84 return channel_connected_event_.TimedWait(base::TimeDelta::FromSeconds(60)); |
| 104 } | 85 } |
| 105 | 86 |
| 106 bool TestMetroViewerProcessHost::Send(IPC::Message* msg) { | 87 bool TestMetroViewerProcessHost::Send(IPC::Message* msg) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 132 backing_surface.reset(new AcceleratedSurface(hwnd)); | 113 backing_surface.reset(new AcceleratedSurface(hwnd)); |
| 133 | 114 |
| 134 scoped_refptr<AcceleratedPresenter> any_window = | 115 scoped_refptr<AcceleratedPresenter> any_window = |
| 135 AcceleratedPresenter::GetForWindow(NULL); | 116 AcceleratedPresenter::GetForWindow(NULL); |
| 136 any_window->SetNewTargetWindow(hwnd); | 117 any_window->SetNewTargetWindow(hwnd); |
| 137 aura::RemoteRootWindowHostWin::Instance()->Connected(this); | 118 aura::RemoteRootWindowHostWin::Instance()->Connected(this); |
| 138 } | 119 } |
| 139 | 120 |
| 140 } // namespace test | 121 } // namespace test |
| 141 } // namespace ash | 122 } // namespace ash |
| OLD | NEW |