Index: tools/perf/measurements/page_cycler.py |
diff --git a/tools/perf/measurements/page_cycler.py b/tools/perf/measurements/page_cycler.py |
index 84c9dc25aa6f744de1491e3f1a6cfb46ad826628..c18d2ccdee5ce12b51129eed9df5c05a384be9aa 100644 |
--- a/tools/perf/measurements/page_cycler.py |
+++ b/tools/perf/measurements/page_cycler.py |
@@ -45,6 +45,7 @@ class PageCycler(page_test.PageTest): |
self._cpu_metric = None |
self._v8_object_stats_metric = None |
self._has_loaded_page = collections.defaultdict(int) |
+ self._initial_renderer_url = None # to avoid cross-renderer navigation |
@classmethod |
def AddCommandLineArgs(cls, parser): |
@@ -94,12 +95,15 @@ class PageCycler(page_test.PageTest): |
if self._record_v8_object_stats: |
self._v8_object_stats_metric = v8_object_stats.V8ObjectStatsMetric() |
- def DidStartHTTPServer(self, tab): |
- # Avoid paying for a cross-renderer navigation on the first page on legacy |
- # page cyclers which use the filesystem. |
- tab.Navigate(tab.browser.http_server.UrlOf('nonexistent.html')) |
- |
def WillNavigateToPage(self, page, tab): |
+ if page.is_file: |
+ # For legacy page cyclers which use the filesystem, do an initial |
+ # navigate to avoid paying for a cross-renderer navigation. |
+ initial_url = tab.browser.http_server.UrlOf('nonexistent.html') |
+ if self._initial_renderer_url != initial_url: |
+ self._initial_renderer_url = initial_url |
+ tab.Navigate(self._initial_renderer_url) |
+ |
page.script_to_evaluate_on_commit = self._page_cycler_js |
if self.ShouldRunCold(page.url): |
tab.ClearCache(force=True) |