Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / tools / perf / measurements / memory_multi_tab.py
1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """Multi tab memory test.
6
7 This test is a multi tab test, but we're interested in measurements for
8 the entire test rather than each single page.
9 """
10
11
12 from metrics import memory
13 from telemetry.page import page_test
14
15 class MemoryMultiTab(page_test.PageTest):
16   def __init__(self, *args, **kwargs):
17     super(MemoryMultiTab, self).__init__(*args, **kwargs)
18     self._memory_metric = None
19     # _first_tab is used to make memory measurements
20     self._first_tab = None
21
22   def DidStartBrowser(self, browser):
23     self._memory_metric = memory.MemoryMetric(browser)
24
25   def CustomizeBrowserOptions(self, options):
26     memory.MemoryMetric.CustomizeBrowserOptions(options)
27     # Since this is a memory benchmark, we want to sample memory histograms at
28     # a high frequency.
29     options.AppendExtraBrowserArgs('--memory-metrics')
30
31   def TabForPage(self, page, browser):
32     return browser.tabs.New()
33
34   def DidNavigateToPage(self, page, tab):
35     # Start measurement on the first tab.
36     if not self._first_tab:
37       self._memory_metric.Start(page, tab)
38       self._first_tab = tab
39
40   def ValidateAndMeasurePage(self, page, tab, results):
41     # Finalize measurement on the last tab.
42     if len(tab.browser.tabs) == len(page.page_set.pages):
43       self._memory_metric.Stop(page, self._first_tab)
44       self._memory_metric.AddResults(self._first_tab, results)