GTTF: Initialize TestTimeouts in out-of-process test runner.

This is needed to make command-line changes take effect.

Also, added checks to prevent a similar mistake from happening in the future. Actually, the checks detected such misuse in process_util_unittests, and this CL fixes it.

BUG=85287
Review URL: http://codereview.chromium.org/7044048

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88561 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 9749550b77e75523ed3bbedfb52b34536799e280
diff --git a/base/process_util_unittest.cc b/base/process_util_unittest.cc
index 02d02ac..06b7537 100644
--- a/base/process_util_unittest.cc
+++ b/base/process_util_unittest.cc
@@ -59,9 +59,6 @@
 const int kExpectedStillRunningExitCode = 0;
 #endif
 
-// The longest we'll wait for a process, in milliseconds.
-const int kMaxWaitTimeMs = TestTimeouts::action_max_timeout_ms();
-
 // Sleeps until file filename is created.
 void WaitToDie(const char* filename) {
   FILE *fp;
@@ -94,7 +91,7 @@
     base::PlatformThread::Sleep(kIntervalMs);
     waited += kIntervalMs;
   } while (status == base::TERMINATION_STATUS_STILL_RUNNING &&
-           waited < kMaxWaitTimeMs);
+           waited < TestTimeouts::action_max_timeout_ms());
 
   return status;
 }
@@ -116,7 +113,8 @@
 TEST_F(ProcessUtilTest, SpawnChild) {
   base::ProcessHandle handle = this->SpawnChild("SimpleChildProcess", false);
   ASSERT_NE(base::kNullProcessHandle, handle);
-  EXPECT_TRUE(base::WaitForSingleProcess(handle, kMaxWaitTimeMs));
+  EXPECT_TRUE(base::WaitForSingleProcess(
+                  handle, TestTimeouts::action_max_timeout_ms()));
   base::CloseProcessHandle(handle);
 }
 
@@ -130,7 +128,8 @@
   base::ProcessHandle handle = this->SpawnChild("SlowChildProcess", false);
   ASSERT_NE(base::kNullProcessHandle, handle);
   SignalChildren(kSignalFileSlow);
-  EXPECT_TRUE(base::WaitForSingleProcess(handle, kMaxWaitTimeMs));
+  EXPECT_TRUE(base::WaitForSingleProcess(
+                  handle, TestTimeouts::action_max_timeout_ms()));
   base::CloseProcessHandle(handle);
   remove(kSignalFileSlow);
 }
diff --git a/base/test/test_timeouts.h b/base/test/test_timeouts.h
index 67b81b0..9ae2b04 100644
--- a/base/test/test_timeouts.h
+++ b/base/test/test_timeouts.h
@@ -6,6 +6,7 @@
 #define BASE_TEST_TEST_TIMEOUTS_H_
 
 #include "base/basictypes.h"
+#include "base/logging.h"
 
 // Returns common timeouts to use in tests. Makes it possible to adjust
 // the timeouts for different environments (like Valgrind).
@@ -16,28 +17,44 @@
   static void Initialize();
 
   // Timeout for actions that are expected to finish "almost instantly".
-  static int tiny_timeout_ms() { return tiny_timeout_ms_; }
+  static int tiny_timeout_ms() {
+    DCHECK(initialized_);
+    return tiny_timeout_ms_;
+  }
 
   // Timeout to wait for something to happen. If you are not sure
   // which timeout to use, this is the one you want.
-  static int action_timeout_ms() { return action_timeout_ms_; }
+  static int action_timeout_ms() {
+    DCHECK(initialized_);
+    return action_timeout_ms_;
+  }
 
   // Timeout longer than the above, but still suitable to use
   // multiple times in a single test. Use if the timeout above
   // is not sufficient.
-  static int action_max_timeout_ms() { return action_max_timeout_ms_; }
+  static int action_max_timeout_ms() {
+    DCHECK(initialized_);
+    return action_max_timeout_ms_;
+  }
 
   // Timeout for a large test that may take a few minutes to run.
-  static int large_test_timeout_ms() { return large_test_timeout_ms_; }
+  static int large_test_timeout_ms() {
+    DCHECK(initialized_);
+    return large_test_timeout_ms_;
+  }
 
   // Timeout for a huge test (like running a layout test inside the browser).
   // Do not use unless absolutely necessary - try to make the test smaller.
   // Do not use multiple times in a single test.
-  static int huge_test_timeout_ms() { return huge_test_timeout_ms_; }
+  static int huge_test_timeout_ms() {
+    DCHECK(initialized_);
+    return huge_test_timeout_ms_;
+  }
 
   // Timeout to wait for a live operation to complete. Used by tests that access
   // external services.
   static int live_operation_timeout_ms() {
+    DCHECK(initialized_);
     return live_operation_timeout_ms_;
   }