1 # Copyright 2014 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 measurements import media
6 from telemetry import test
7 from telemetry.page import page_measurement
10 class MSEMeasurement(page_measurement.PageMeasurement):
11 def MeasurePage(self, page, tab, results):
12 media_metric = tab.EvaluateJavaScript('window.__testMetrics')
13 trace = media_metric['id'] if 'id' in media_metric else None
14 metrics = media_metric['metrics'] if 'metrics' in media_metric else []
16 if isinstance(metrics[m], list):
17 values = [float(v) for v in metrics[m]]
19 values = float(metrics[m])
20 results.Add(trace, 'ms', values, chart_name=m)
23 class Media(test.Test):
24 """Obtains media metrics for key user scenarios."""
26 page_set = 'page_sets/tough_video_cases.json'
29 class MediaNetworkSimulation(test.Test):
30 """Obtains media metrics under different network simulations."""
32 page_set = 'page_sets/media_cns_cases.json'
35 class MediaAndroid(test.Test):
36 """Obtains media metrics for key user scenarios on Android."""
39 page_set = 'page_sets/tough_video_cases.json'
40 # Exclude 4k and 50 fps media files (garden* & crowd*).
42 'page_label_filter_exclude': '4k,50fps'}
45 class MediaChromeOS4kOnly(test.Test):
46 """Benchmark for media performance on ChromeOS using only 4k test content."""
48 tag = 'chromeOS4kOnly'
49 page_set = 'page_sets/tough_video_cases.json'
50 options = {'page_label_filter': '4k',
51 # Exclude 50fps test files: crbug/331816
52 'page_label_filter_exclude': '50fps'}
55 class MediaChromeOS(test.Test):
56 """Benchmark for media performance on all ChromeOS platforms.
58 This benchmark does not run 4k content, there's a separate benchmark for that.
62 page_set = 'page_sets/tough_video_cases.json'
63 # Exclude 50fps test files: crbug/331816
64 options = {'page_label_filter_exclude': '4k,50fps'}
67 class MediaSourceExtensions(test.Test):
68 """Obtains media metrics for key media source extensions functions."""
70 page_set = 'page_sets/mse_cases.json'
72 def CustomizeBrowserOptions(self, options):
73 # Needed to allow XHR requests to return stream objects.
74 options.AppendExtraBrowserArgs(
75 ['--enable-experimental-web-platform-features',
76 '--disable-gesture-requirement-for-media-playback'])