blob: 3beee31303f6abb3a0837d7a6ef46357fc0e24d3 [file] [log] [blame]
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Multi tab memory test.
This test is a multi tab test, but we're interested in measurements for
the entire test rather than each single page.
"""
from metrics import memory
from telemetry.page import page_measurement
class MemoryMultiTab(page_measurement.PageMeasurement):
def __init__(self, *args, **kwargs):
super(MemoryMultiTab, self).__init__(*args, **kwargs)
self._memory_metric = None
# _first_tab is used to make memory measurements
self._first_tab = None
def DidStartBrowser(self, browser):
self._memory_metric = memory.MemoryMetric(browser)
def CustomizeBrowserOptions(self, options):
memory.MemoryMetric.CustomizeBrowserOptions(options)
# Since this is a memory benchmark, we want to sample memory histograms at
# a high frequency.
options.AppendExtraBrowserArgs('--memory-metrics')
def TabForPage(self, page, browser):
return browser.tabs.New()
def DidNavigateToPage(self, page, tab):
# Start measurement on the first tab.
if not self._first_tab:
self._memory_metric.Start(page, tab)
self._first_tab = tab
def MeasurePage(self, page, tab, results):
# Finalize measurement on the last tab.
if len(tab.browser.tabs) == len(page.page_set.pages):
self._memory_metric.Stop(page, self._first_tab)
self._memory_metric.AddResults(self._first_tab, results)