anchor.diff:  
       // We are currently terminating this browser, don't start a new test.
       if (status.timeout) return null;
  +
  +    // Restart content_shell and dartium on Android if they have been
  +    // running for longer than RESTART_BROWSER_INTERVAL. The tests have
  +    // had flaky timeouts, and this may help.
  +    if ((browserName == 'ContentShellOnAndroid' ||
  +         browserName == 'DartiumOnAndroid' ) &&
  +        status.timeSinceRestart.elapsed > RESTART_BROWSER_INTERVAL) {
  +      var id = status.browser.id;
  +      status.browser.close().then((_) {
  +        // We don't want to start a new browser if we are terminating.
  +        if (underTermination) return;
  +        restartBrowser(id);
  +      });
  +      // Don't send a test to the browser we are restarting.
  +      return null;
  +    }
   
       BrowserTest test = testQueue.removeLast();
       if (status.currentTest == null) {
  
positive.code:   BrowserTest lastTest;
    bool timeout = false;
    Timer nextTestTimeout;
  
    BrowserTestingStatus(Browser this.browser);
  }
  
negative.code:               var status = new BrowserTestingStatus(browser);
                browserStatus[browser.id] = status;
                status.nextTestTimeout = createNextTestTimer(status);
                status.timeSinceRestart.start();
              }
              return success;
            });
  