| Index: chrome/browser/process_singleton_win_unittest.cc
|
| diff --git a/chrome/browser/process_singleton_win_unittest.cc b/chrome/browser/process_singleton_win_unittest.cc
|
| index 39225ffb0c2cf5783b2121562b6cbd5ecb049c5d..5db52e348ed855ee8eaad4af6b4089a7d88bdb7d 100644
|
| --- a/chrome/browser/process_singleton_win_unittest.cc
|
| +++ b/chrome/browser/process_singleton_win_unittest.cc
|
| @@ -20,6 +20,7 @@
|
| #include "base/process/process_handle.h"
|
| #include "base/strings/string16.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "base/test/histogram_tester.h"
|
| #include "base/test/multiprocess_test.h"
|
| #include "base/win/scoped_handle.h"
|
| #include "base/win/wrapped_window_proc.h"
|
| @@ -235,6 +236,10 @@ class ProcessSingletonTest : public base::MultiProcessTest {
|
| ProcessSingleton* test_singleton() const { return test_singleton_.get(); }
|
| bool should_kill_called() const { return should_kill_called_; }
|
|
|
| + const base::HistogramTester& histogram_tester() const {
|
| + return histogram_tester_;
|
| + }
|
| +
|
| private:
|
| bool MockShouldKillRemoteProcess(bool allow_kill) {
|
| should_kill_called_ = true;
|
| @@ -253,6 +258,7 @@ class ProcessSingletonTest : public base::MultiProcessTest {
|
|
|
| base::TimeDelta old_notification_timeout_;
|
| bool should_kill_called_;
|
| + base::HistogramTester histogram_tester_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ProcessSingletonTest);
|
| };
|
| @@ -275,6 +281,19 @@ TEST_F(ProcessSingletonTest, KillsHungBrowserWithNoWindows) {
|
| // not have visible window.
|
| EXPECT_FALSE(should_kill_called());
|
|
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.RemoteProcessInteractionResult",
|
| + ProcessSingleton::TERMINATE_SUCCEEDED, 1u);
|
| + histogram_tester().ExpectTotalCount(
|
| + "Chrome.ProcessSingleton.TerminateProcessTime", 1u);
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.ProcessTerminateErrorCode.Windows", 0, 1u);
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.TerminationWaitErrorCode.Windows", 0, 1u);
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.RemoteHungProcessTerminateReason",
|
| + ProcessSingleton::NO_VISIBLE_WINDOW_FOUND, 1u);
|
| +
|
| // Verify that the hung browser has been terminated with the
|
| // RESULT_CODE_HUNG exit code.
|
| int exit_code = 0;
|
| @@ -296,6 +315,9 @@ TEST_F(ProcessSingletonTest, DoesntKillWithoutUserPermission) {
|
| // visible window.
|
| EXPECT_TRUE(should_kill_called());
|
|
|
| + histogram_tester().ExpectTotalCount(
|
| + "Chrome.ProcessSingleton.RemoteProcessInteractionResult", 0);
|
| +
|
| // Make sure the process hasn't been killed.
|
| int exit_code = 0;
|
| EXPECT_FALSE(
|
| @@ -318,6 +340,19 @@ TEST_F(ProcessSingletonTest, KillWithUserPermission) {
|
| // visible window.
|
| EXPECT_TRUE(should_kill_called());
|
|
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.RemoteProcessInteractionResult",
|
| + ProcessSingleton::TERMINATE_SUCCEEDED, 1u);
|
| + histogram_tester().ExpectTotalCount(
|
| + "Chrome.ProcessSingleton.TerminateProcessTime", 1u);
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.ProcessTerminateErrorCode.Windows", 0, 1u);
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.TerminationWaitErrorCode.Windows", 0, 1u);
|
| + histogram_tester().ExpectUniqueSample(
|
| + "Chrome.ProcessSingleton.RemoteHungProcessTerminateReason",
|
| + ProcessSingleton::USER_ACCEPTED_TERMINATION, 1u);
|
| +
|
| // Verify that the hung browser has been terminated with the
|
| // RESULT_CODE_HUNG exit code.
|
| int exit_code = 0;
|
|
|