Explicitly add python-numpy dependency to install-build-deps.
[chromium-blink-merge.git] / tools / perf / measurements / media.py
blob2e58ed7cedff0933b3a4aaa22655b25cbf2590c1
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.
5 from metrics import cpu
6 from metrics import media
7 from metrics import system_memory
8 from metrics import power
9 from telemetry.page import page_test
12 class Media(page_test.PageTest):
13 """The MediaMeasurement class gathers media-related metrics on a page set.
15 Media metrics recorded are controlled by metrics/media.js. At the end of the
16 test each metric for every media element in the page are reported.
17 """
19 def __init__(self):
20 super(Media, self).__init__('RunPageInteractions')
21 self._media_metric = None
22 # Used to add browser power and CPU metrics to results per test.
23 self._add_browser_metrics = False
24 self._cpu_metric = None
25 self._memory_metric = None
26 self._power_metric = None
28 def WillStartBrowser(self, platform):
29 self._power_metric = power.PowerMetric(platform)
31 def CustomizeBrowserOptions(self, options):
32 # Needed to run media actions in JS on touch-based devices as on Android.
33 options.AppendExtraBrowserArgs(
34 '--disable-gesture-requirement-for-media-playback')
35 power.PowerMetric.CustomizeBrowserOptions(options)
37 def DidNavigateToPage(self, page, tab):
38 """Override to do operations right after the page is navigated."""
39 self._media_metric = media.MediaMetric(tab)
40 self._media_metric.Start(page, tab)
42 # Reset to false for every page.
43 self._add_browser_metrics = (page.add_browser_metrics
44 if hasattr(page, 'add_browser_metrics') else False)
46 if self._add_browser_metrics:
47 self._cpu_metric = cpu.CpuMetric(tab.browser)
48 self._cpu_metric.Start(page, tab)
49 self._memory_metric = system_memory.SystemMemoryMetric(tab.browser)
50 self._memory_metric.Start(page, tab)
51 self._power_metric.Start(page, tab)
53 def ValidateAndMeasurePage(self, page, tab, results):
54 """Measure the page's performance."""
55 self._media_metric.Stop(page, tab)
56 trace_name = self._media_metric.AddResults(tab, results)
58 if self._add_browser_metrics:
59 self._cpu_metric.Stop(page, tab)
60 self._memory_metric.Stop(page, tab)
61 self._power_metric.Stop(page, tab)
62 self._cpu_metric.AddResults(tab, results, trace_name=trace_name)
63 exclude_metrics = ['WorkingSetSizePeak', 'SystemCommitCharge', 'VMPeak',
64 'VM']
65 self._memory_metric.AddResults(tab, results,
66 trace_name=trace_name,
67 exclude_metrics=exclude_metrics)
68 self._power_metric.AddResults(tab, results)