Index: chrome/browser/service_process/service_process_control_browsertest.cc |
diff --git a/chrome/browser/service_process/service_process_control_browsertest.cc b/chrome/browser/service_process/service_process_control_browsertest.cc |
index eb934c85a7a853d4e6ae91dc41776dd0cb4d088d..097b8f597e352c3bd04e393a4f574dbf052a42fb 100644 |
--- a/chrome/browser/service_process/service_process_control_browsertest.cc |
+++ b/chrome/browser/service_process/service_process_control_browsertest.cc |
@@ -9,7 +9,7 @@ |
#include "base/command_line.h" |
#include "base/path_service.h" |
#include "base/process/kill.h" |
-#include "base/process/process_handle.h" |
+#include "base/process/process.h" |
#include "base/process/process_iterator.h" |
#include "base/test/test_timeouts.h" |
#include "chrome/browser/ui/browser.h" |
@@ -25,12 +25,9 @@ |
class ServiceProcessControlBrowserTest |
: public InProcessBrowserTest { |
public: |
- ServiceProcessControlBrowserTest() |
- : service_process_handle_(base::kNullProcessHandle) { |
+ ServiceProcessControlBrowserTest() { |
} |
virtual ~ServiceProcessControlBrowserTest() { |
- base::CloseProcessHandle(service_process_handle_); |
- service_process_handle_ = base::kNullProcessHandle; |
} |
void HistogramsCallback() { |
@@ -69,7 +66,10 @@ class ServiceProcessControlBrowserTest |
} |
virtual void SetUp() override { |
- service_process_handle_ = base::kNullProcessHandle; |
+ // This should not be needed because TearDown() ends with a closed |
+ // service_process_, but HistogramsTimeout and Histograms fail without this |
+ // on Mac. |
+ service_process_.Close(); |
} |
virtual void TearDown() override { |
@@ -79,11 +79,11 @@ class ServiceProcessControlBrowserTest |
// ForceServiceProcessShutdown removes the process from launched on Mac. |
ForceServiceProcessShutdown("", 0); |
#endif // OS_MACOSX |
- if (service_process_handle_ != base::kNullProcessHandle) { |
+ if (service_process_.IsValid()) { |
EXPECT_TRUE(base::WaitForSingleProcess( |
- service_process_handle_, |
+ service_process_.Handle(), |
TestTimeouts::action_max_timeout())); |
- service_process_handle_ = base::kNullProcessHandle; |
+ service_process_.Close(); |
} |
} |
@@ -91,12 +91,16 @@ class ServiceProcessControlBrowserTest |
base::ProcessId service_pid; |
EXPECT_TRUE(GetServiceProcessData(NULL, &service_pid)); |
EXPECT_NE(static_cast<base::ProcessId>(0), service_pid); |
- EXPECT_TRUE(base::OpenProcessHandleWithAccess( |
- service_pid, |
- base::kProcessAccessWaitForTermination | |
- // we need query permission to get exit code |
- base::kProcessAccessQueryInformation, |
- &service_process_handle_)); |
+#if defined(OS_WIN) |
+ service_process_ = |
+ base::Process::OpenWithAccess(service_pid, |
+ SYNCHRONIZE | PROCESS_QUERY_INFORMATION); |
+ EXPECT_TRUE(service_process_.IsValid()); |
+#else |
+ base::ProcessHandle service_process_handle; |
+ EXPECT_TRUE(base::OpenProcessHandle(service_pid, &service_process_handle)); |
+ service_process_ = base::Process(service_process_handle); |
+#endif |
// Quit the current message. Post a QuitTask instead of just calling Quit() |
// because this can get invoked in the context of a Launch() call and we |
// may not be in Run() yet. |
@@ -112,7 +116,7 @@ class ServiceProcessControlBrowserTest |
} |
private: |
- base::ProcessHandle service_process_handle_; |
+ base::Process service_process_; |
}; |
class RealServiceProcessControlBrowserTest |