Index: tools/perf/perf_tools/page_cycler.py |
diff --git a/tools/perf/perf_tools/page_cycler.py b/tools/perf/perf_tools/page_cycler.py |
index d10adcdf7dc6ba24b7dfd65461323cdd36d5ade7..c185a28f5f30748e4ad7743986a6dea231747d8e 100644 |
--- a/tools/perf/perf_tools/page_cycler.py |
+++ b/tools/perf/perf_tools/page_cycler.py |
@@ -28,6 +28,16 @@ MEMORY_HISTOGRAMS = [ |
{'name': 'V8.MemoryHeapSampleTotalUsed', 'units': 'kb'}] |
class PageCycler(page_measurement.PageMeasurement): |
+ def __init__(self, *args, **kwargs): |
+ super(PageCycler, self).__init__(*args, **kwargs) |
+ |
+ with open(os.path.join(os.path.dirname(__file__), |
+ 'page_cycler.js'), 'r') as f: |
+ self._page_cycler_js = f.read() |
+ |
+ self._start_commit_charge = None |
+ self._histograms = None |
+ |
def AddCommandLineOptions(self, parser): |
# The page cyclers should default to 10 iterations. In order to change the |
# default of an option, we must remove and re-add it. |
@@ -36,29 +46,23 @@ class PageCycler(page_measurement.PageMeasurement): |
parser.remove_option('--pageset-repeat') |
parser.add_option(pageset_repeat_option) |
- def WillRunPageSet(self, tab, results): |
- # Avoid paying for a cross-renderer navigation on the first page on legacy |
- # page cyclers which use the filesystem. |
- if tab.browser.http_server: |
- tab.Navigate(tab.browser.http_server.UrlOf('nonexistent.html')) |
- |
- with open(os.path.join(os.path.dirname(__file__), |
- 'page_cycler.js'), 'r') as f: |
- self.page_cycler_js = f.read() # pylint: disable=W0201 |
- |
- # pylint: disable=W0201 |
- self.start_commit_charge = tab.browser.memory_stats['SystemCommitCharge'] |
+ def SetUpBrowser(self, browser): |
+ self._start_commit_charge = browser.memory_stats['SystemCommitCharge'] |
- # pylint: disable=W0201 |
- self.histograms = [histogram_metric.HistogramMetric( |
+ self._histograms = [histogram_metric.HistogramMetric( |
h, histogram_metric.RENDERER_HISTOGRAM) |
for h in MEMORY_HISTOGRAMS] |
+ 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): |
- page.script_to_evaluate_on_commit = self.page_cycler_js |
+ page.script_to_evaluate_on_commit = self._page_cycler_js |
def DidNavigateToPage(self, page, tab): |
- for h in self.histograms: |
+ for h in self._histograms: |
h.Start(page, tab) |
def CustomizeBrowserOptions(self, options): |
@@ -107,7 +111,7 @@ class PageCycler(page_measurement.PageMeasurement): |
AddSummariesForProcessTypes(['Browser', 'Renderer', 'Gpu'], 'total') |
results.AddSummary('commit_charge', 'kb', |
- memory['SystemCommitCharge'] - self.start_commit_charge, |
+ memory['SystemCommitCharge'] - self._start_commit_charge, |
data_type='unimportant') |
results.AddSummary('processes', 'count', memory['ProcessCount'], |
data_type='unimportant') |
@@ -147,7 +151,7 @@ class PageCycler(page_measurement.PageMeasurement): |
return bool(tab.EvaluateJavaScript('__pc_load_time')) |
util.WaitFor(_IsDone, 60) |
- for h in self.histograms: |
+ for h in self._histograms: |
h.GetValue(page, tab, results) |
results.Add('page_load_time', 'ms', |