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.
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',
65 self
._memory
_metric
.AddResults(tab
, results
,
66 trace_name
=trace_name
,
67 exclude_metrics
=exclude_metrics
)
68 self
._power
_metric
.AddResults(tab
, results
)