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):
else:
cls._cold_run_start_index = args.pageset_repeat * args.page_repeat
- def WillStartBrowser(self, browser):
+ def WillStartBrowser(self, platform):
"""Initialize metrics once right before the browser has been launched."""
- self._power_metric = power.PowerMetric(browser)
+ self._power_metric = power.PowerMetric(platform)
def DidStartBrowser(self, browser):
"""Initialize metrics once right after the browser has been launched."""
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)