OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/process_util.h" | 5 #include "base/process_util.h" |
6 #include "base/test/test_timeouts.h" | 6 #include "base/test/test_timeouts.h" |
7 #include "chrome/browser/service/service_process_control.h" | 7 #include "chrome/browser/service/service_process_control.h" |
8 #include "chrome/browser/service/service_process_control_manager.h" | 8 #include "chrome/browser/service/service_process_control_manager.h" |
9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
10 #include "chrome/common/chrome_version_info.h" | 10 #include "chrome/common/chrome_version_info.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 process_ = NULL; | 64 process_ = NULL; |
65 } | 65 } |
66 | 66 |
67 void WaitForShutdown() { | 67 void WaitForShutdown() { |
68 EXPECT_TRUE(base::WaitForSingleProcess( | 68 EXPECT_TRUE(base::WaitForSingleProcess( |
69 service_process_handle_, | 69 service_process_handle_, |
70 TestTimeouts::wait_for_terminate_timeout_ms())); | 70 TestTimeouts::wait_for_terminate_timeout_ms())); |
71 } | 71 } |
72 | 72 |
73 void ProcessControlLaunched() { | 73 void ProcessControlLaunched() { |
74 base::ProcessId service_pid = GetServiceProcessPid(); | 74 base::ProcessId service_pid; |
| 75 EXPECT_TRUE(GetServiceProcessSharedData(NULL, &service_pid)); |
75 EXPECT_NE(static_cast<base::ProcessId>(0), service_pid); | 76 EXPECT_NE(static_cast<base::ProcessId>(0), service_pid); |
76 EXPECT_TRUE(base::OpenProcessHandleWithAccess( | 77 EXPECT_TRUE(base::OpenProcessHandleWithAccess( |
77 service_pid, | 78 service_pid, |
78 base::kProcessAccessWaitForTermination, | 79 base::kProcessAccessWaitForTermination, |
79 &service_process_handle_)); | 80 &service_process_handle_)); |
80 // Quit the current message. Post a QuitTask instead of just calling Quit() | 81 // Quit the current message. Post a QuitTask instead of just calling Quit() |
81 // because this can get invoked in the context of a Launch() call and we | 82 // because this can get invoked in the context of a Launch() call and we |
82 // may not be in Run() yet. | 83 // may not be in Run() yet. |
83 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 84 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
84 } | 85 } |
85 | 86 |
86 void ProcessControlLaunchFailed() { | 87 void ProcessControlLaunchFailed() { |
87 ADD_FAILURE(); | 88 ADD_FAILURE(); |
88 // Quit the current message. | 89 // Quit the current message. |
89 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 90 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
90 } | 91 } |
91 | 92 |
92 ServiceProcessControl* process() { return process_; } | 93 ServiceProcessControl* process() { return process_; } |
93 | 94 |
94 private: | 95 private: |
95 ServiceProcessControl* process_; | 96 ServiceProcessControl* process_; |
96 base::ProcessHandle service_process_handle_; | 97 base::ProcessHandle service_process_handle_; |
97 }; | 98 }; |
98 | 99 |
99 #if defined(OS_WIN) | |
100 // They way that the IPC is implemented only works on windows. This has to | 100 // They way that the IPC is implemented only works on windows. This has to |
101 // change when we implement a different scheme for IPC. | 101 // change when we implement a different scheme for IPC. |
102 // Times out flakily, http://crbug.com/70076. | 102 // Times out flakily, http://crbug.com/70076. |
103 IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, | 103 IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, |
104 DISABLED_LaunchAndIPC) { | 104 DISABLED_LaunchAndIPC) { |
105 LaunchServiceProcessControl(); | 105 LaunchServiceProcessControl(); |
106 | 106 |
107 // Make sure we are connected to the service process. | 107 // Make sure we are connected to the service process. |
108 EXPECT_TRUE(process()->is_connected()); | 108 EXPECT_TRUE(process()->is_connected()); |
109 SendRequestAndWait(); | 109 SendRequestAndWait(); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 WaitForShutdown(); | 186 WaitForShutdown(); |
187 } | 187 } |
188 | 188 |
189 //http://code.google.com/p/chromium/issues/detail?id=70793 | 189 //http://code.google.com/p/chromium/issues/detail?id=70793 |
190 IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, | 190 IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, |
191 DISABLED_ForceShutdown) { | 191 DISABLED_ForceShutdown) { |
192 // Launch the service process. | 192 // Launch the service process. |
193 LaunchServiceProcessControl(); | 193 LaunchServiceProcessControl(); |
194 // Make sure we are connected to the service process. | 194 // Make sure we are connected to the service process. |
195 EXPECT_TRUE(process()->is_connected()); | 195 EXPECT_TRUE(process()->is_connected()); |
| 196 base::ProcessId service_pid; |
| 197 EXPECT_TRUE(GetServiceProcessSharedData(NULL, &service_pid)); |
| 198 EXPECT_NE(static_cast<base::ProcessId>(0), service_pid); |
196 chrome::VersionInfo version_info; | 199 chrome::VersionInfo version_info; |
197 ForceServiceProcessShutdown(version_info.Version()); | 200 ForceServiceProcessShutdown(version_info.Version(), service_pid); |
198 WaitForShutdown(); | 201 WaitForShutdown(); |
199 } | 202 } |
200 | 203 |
201 IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, CheckPid) { | 204 IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, CheckPid) { |
202 EXPECT_EQ(0, GetServiceProcessPid()); | 205 base::ProcessId service_pid; |
| 206 EXPECT_FALSE(GetServiceProcessSharedData(NULL, &service_pid)); |
203 // Launch the service process. | 207 // Launch the service process. |
204 LaunchServiceProcessControl(); | 208 LaunchServiceProcessControl(); |
205 EXPECT_NE(static_cast<base::ProcessId>(0), GetServiceProcessPid()); | 209 EXPECT_TRUE(GetServiceProcessSharedData(NULL, &service_pid)); |
| 210 EXPECT_NE(static_cast<base::ProcessId>(0), service_pid); |
206 } | 211 } |
207 | 212 |
208 #endif | |
209 | |
210 DISABLE_RUNNABLE_METHOD_REFCOUNT(ServiceProcessControlBrowserTest); | 213 DISABLE_RUNNABLE_METHOD_REFCOUNT(ServiceProcessControlBrowserTest); |
OLD | NEW |