OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
| 5 from measurements import media |
5 from telemetry import test | 6 from telemetry import test |
6 from telemetry.page import page_measurement | 7 from telemetry.page import page_measurement |
7 | 8 |
8 from measurements import media | |
9 | |
10 | 9 |
11 class MSEMeasurement(page_measurement.PageMeasurement): | 10 class MSEMeasurement(page_measurement.PageMeasurement): |
12 def MeasurePage(self, page, tab, results): | 11 def MeasurePage(self, page, tab, results): |
13 media_metric = tab.EvaluateJavaScript('window.__testMetrics') | 12 media_metric = tab.EvaluateJavaScript('window.__testMetrics') |
14 trace = media_metric['id'] if 'id' in media_metric else None | 13 trace = media_metric['id'] if 'id' in media_metric else None |
15 metrics = media_metric['metrics'] if 'metrics' in media_metric else [] | 14 metrics = media_metric['metrics'] if 'metrics' in media_metric else [] |
16 for m in metrics: | 15 for m in metrics: |
17 if isinstance(metrics[m], list): | 16 if isinstance(metrics[m], list): |
18 values = [float(v) for v in metrics[m]] | 17 values = [float(v) for v in metrics[m]] |
19 else: | 18 else: |
20 values = float(metrics[m]) | 19 values = float(metrics[m]) |
21 results.Add(trace, 'ms', values, chart_name=m) | 20 results.Add(trace, 'ms', values, chart_name=m) |
22 | 21 |
23 | 22 |
24 class Media(test.Test): | 23 class Media(test.Test): |
25 """Obtains media metrics for key user scenarios.""" | 24 """Obtains media metrics for key user scenarios.""" |
26 test = media.Media | 25 test = media.Media |
27 page_set = 'page_sets/tough_video_cases.json' | 26 page_set = 'page_sets/tough_video_cases.json' |
28 | 27 |
| 28 |
29 class MediaNetworkSimulation(test.Test): | 29 class MediaNetworkSimulation(test.Test): |
30 """Obtains media metrics under different network simulations.""" | 30 """Obtains media metrics under different network simulations.""" |
31 test = media.Media | 31 test = media.Media |
32 page_set = 'page_sets/media_cns_cases.json' | 32 page_set = 'page_sets/media_cns_cases.json' |
33 | 33 |
| 34 |
34 class MediaAndroid(test.Test): | 35 class MediaAndroid(test.Test): |
35 """Obtains media metrics for key user scenarios on Android.""" | 36 """Obtains media metrics for key user scenarios on Android.""" |
36 test = media.Media | 37 test = media.Media |
37 tag = 'android' | 38 tag = 'android' |
38 page_set = 'page_sets/tough_video_cases.json' | 39 page_set = 'page_sets/tough_video_cases.json' |
39 # Exclude 4k and 50 fps media files (garden* & crowd*). | 40 # Exclude 4k and 50 fps media files (garden* & crowd*). |
40 options = { | 41 options = { |
41 'page_filter_exclude': '.*(crowd|garden).*' | 42 'page_label_filter_exclude': '4k,50fps'} |
42 } | 43 |
| 44 |
| 45 class MediaChromeOS4kOnly(test.Test): |
| 46 """Benchmark for media performance on ChromeOS using only 4k test content.""" |
| 47 test = media.Media |
| 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'} |
| 53 |
43 | 54 |
44 class MediaChromeOS(test.Test): | 55 class MediaChromeOS(test.Test): |
45 """Obtains media metrics for key user scenarios on ChromeOS.""" | 56 """Benchmark for media performance on all ChromeOS platforms. |
| 57 |
| 58 This benchmark does not run 4k content, there's a separate benchmark for that. |
| 59 """ |
46 test = media.Media | 60 test = media.Media |
47 tag = 'chromeOS' | 61 tag = 'chromeOS' |
48 page_set = 'page_sets/tough_video_cases.json' | 62 page_set = 'page_sets/tough_video_cases.json' |
49 # Exclude crowd* media files (50fps 2160p): crbug/331816 | 63 # Exclude 50fps test files: crbug/331816 |
50 options = { | 64 options = {'page_label_filter_exclude': '4k,50fps'} |
51 'page_filter_exclude': '.*crowd.*' | 65 |
52 } | |
53 | 66 |
54 class MediaSourceExtensions(test.Test): | 67 class MediaSourceExtensions(test.Test): |
55 """Obtains media metrics for key media source extensions functions.""" | 68 """Obtains media metrics for key media source extensions functions.""" |
56 test = MSEMeasurement | 69 test = MSEMeasurement |
57 page_set = 'page_sets/mse_cases.json' | 70 page_set = 'page_sets/mse_cases.json' |
58 | 71 |
59 def CustomizeBrowserOptions(self, options): | 72 def CustomizeBrowserOptions(self, options): |
60 # Needed to allow XHR requests to return stream objects. | 73 # Needed to allow XHR requests to return stream objects. |
61 options.AppendExtraBrowserArgs( | 74 options.AppendExtraBrowserArgs( |
62 ['--enable-experimental-web-platform-features', | 75 ['--enable-experimental-web-platform-features', |
63 '--disable-gesture-requirement-for-media-playback']) | 76 '--disable-gesture-requirement-for-media-playback']) |
OLD | NEW |