| Index: webkit/tools/test_shell/test_shell_mac.mm
 | 
| ===================================================================
 | 
| --- webkit/tools/test_shell/test_shell_mac.mm	(revision 197949)
 | 
| +++ webkit/tools/test_shell/test_shell_mac.mm	(working copy)
 | 
| @@ -357,100 +357,6 @@
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| -void TestShell::TestFinished() {
 | 
| -  if (!test_is_pending_)
 | 
| -    return;  // reached when running under test_shell_tests
 | 
| -
 | 
| -  test_is_pending_ = false;
 | 
| -  MessageLoop::current()->Quit();
 | 
| -}
 | 
| -
 | 
| -// A class to be the target/selector of the "watchdog" thread that ensures
 | 
| -// pages timeout if they take too long and tells the test harness via stdout.
 | 
| -@interface WatchDogTarget : NSObject {
 | 
| - @private
 | 
| -  NSTimeInterval timeout_;
 | 
| -}
 | 
| -// |timeout| is in seconds
 | 
| -- (id)initWithTimeout:(NSTimeInterval)timeout;
 | 
| -// serves as the "run" method of a NSThread.
 | 
| -- (void)run:(id)sender;
 | 
| -@end
 | 
| -
 | 
| -@implementation WatchDogTarget
 | 
| -
 | 
| -- (id)initWithTimeout:(NSTimeInterval)timeout {
 | 
| -  if ((self = [super init])) {
 | 
| -    timeout_ = timeout;
 | 
| -  }
 | 
| -  return self;
 | 
| -}
 | 
| -
 | 
| -- (void)run:(id)ignore {
 | 
| -  base::mac::ScopedNSAutoreleasePool scoped_pool;
 | 
| -
 | 
| -  // Check for debugger, just bail if so. We don't want the timeouts hitting
 | 
| -  // when we're trying to track down an issue.
 | 
| -  if (base::debug::BeingDebugged())
 | 
| -    return;
 | 
| -
 | 
| -  NSThread* currentThread = [NSThread currentThread];
 | 
| -
 | 
| -  // Wait to be cancelled. If we are that means the test finished. If it hasn't,
 | 
| -  // then we need to tell the layout script we timed out and start again.
 | 
| -  NSDate* limitDate = [NSDate dateWithTimeIntervalSinceNow:timeout_];
 | 
| -  while ([(NSDate*)[NSDate date] compare:limitDate] == NSOrderedAscending &&
 | 
| -         ![currentThread isCancelled]) {
 | 
| -    // sleep for a small increment then check again
 | 
| -    NSDate* incrementDate = [NSDate dateWithTimeIntervalSinceNow:1.0];
 | 
| -    [NSThread sleepUntilDate:incrementDate];
 | 
| -  }
 | 
| -  if (![currentThread isCancelled]) {
 | 
| -    // Print a warning to be caught by the layout-test script.
 | 
| -    // Note: the layout test driver may or may not recognize
 | 
| -    // this as a timeout.
 | 
| -    puts("#TEST_TIMED_OUT\n");
 | 
| -    puts("#EOF\n");
 | 
| -    fflush(stdout);
 | 
| -    abort();
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -@end
 | 
| -
 | 
| -void TestShell::WaitTestFinished() {
 | 
| -  DCHECK(!test_is_pending_) << "cannot be used recursively";
 | 
| -
 | 
| -  test_is_pending_ = true;
 | 
| -
 | 
| -  // Create a watchdog thread which just sets a timer and
 | 
| -  // kills the process if it times out.  This catches really
 | 
| -  // bad hangs where the shell isn't coming back to the
 | 
| -  // message loop.  If the watchdog is what catches a
 | 
| -  // timeout, it can't do anything except terminate the test
 | 
| -  // shell, which is unfortunate.
 | 
| -  // Windows multiplies by 2.5, but that causes us to run for far, far too
 | 
| -  // long. We use the passed value and let the scripts flag override
 | 
| -  // the value as needed.
 | 
| -  NSTimeInterval timeout_seconds = GetLayoutTestTimeoutForWatchDog() / 1000;
 | 
| -  WatchDogTarget* watchdog = [[[WatchDogTarget alloc]
 | 
| -                                initWithTimeout:timeout_seconds] autorelease];
 | 
| -  NSThread* thread = [[NSThread alloc] initWithTarget:watchdog
 | 
| -                                             selector:@selector(run:)
 | 
| -                                               object:nil];
 | 
| -  [thread start];
 | 
| -
 | 
| -  // TestFinished() will post a quit message to break this loop when the page
 | 
| -  // finishes loading.
 | 
| -  while (test_is_pending_)
 | 
| -    MessageLoop::current()->Run();
 | 
| -
 | 
| -  // Tell the watchdog that we're finished. No point waiting to re-join, it'll
 | 
| -  // die on its own.
 | 
| -  [thread cancel];
 | 
| -  [thread release];
 | 
| -}
 | 
| -
 | 
|  void TestShell::InteractiveSetFocus(WebWidgetHost* host, bool enable) {
 | 
|    if (enable) {
 | 
|      [[host->view_handle() window] makeKeyAndOrderFront:nil];
 | 
| 
 |