media.py revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
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. 4 5from measurements import media 6from telemetry import test 7from telemetry.page import page_measurement 8 9 10class _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 [] 15 for m in metrics: 16 if isinstance(metrics[m], list): 17 values = [float(v) for v in metrics[m]] 18 else: 19 values = float(metrics[m]) 20 results.Add(trace, 'ms', values, chart_name=m) 21 22 23class Media(test.Test): 24 """Obtains media metrics for key user scenarios.""" 25 test = media.Media 26 page_set = 'page_sets/tough_video_cases.json' 27 28 29@test.Disabled('mac') # http://crbug.com/353268 30class MediaNetworkSimulation(test.Test): 31 """Obtains media metrics under different network simulations.""" 32 test = media.Media 33 page_set = 'page_sets/media_cns_cases.json' 34 35 36class MediaAndroid(test.Test): 37 """Obtains media metrics for key user scenarios on Android.""" 38 test = media.Media 39 tag = 'android' 40 page_set = 'page_sets/tough_video_cases.json' 41 # Exclude 4k and 50 fps media files (garden* & crowd*). 42 options = { 43 'page_label_filter_exclude': '4k,50fps'} 44 45 46class MediaChromeOS4kOnly(test.Test): 47 """Benchmark for media performance on ChromeOS using only 4k test content.""" 48 test = media.Media 49 tag = 'chromeOS4kOnly' 50 page_set = 'page_sets/tough_video_cases.json' 51 options = {'page_label_filter': '4k', 52 # Exclude 50fps test files: crbug/331816 53 'page_label_filter_exclude': '50fps'} 54 55 56class MediaChromeOS(test.Test): 57 """Benchmark for media performance on all ChromeOS platforms. 58 59 This benchmark does not run 4k content, there's a separate benchmark for that. 60 """ 61 test = media.Media 62 tag = 'chromeOS' 63 page_set = 'page_sets/tough_video_cases.json' 64 # Exclude 50fps test files: crbug/331816 65 options = {'page_label_filter_exclude': '4k,50fps'} 66 67 68class MediaSourceExtensions(test.Test): 69 """Obtains media metrics for key media source extensions functions.""" 70 test = _MSEMeasurement 71 page_set = 'page_sets/mse_cases.json' 72 73 def CustomizeBrowserOptions(self, options): 74 # Needed to allow XHR requests to return stream objects. 75 options.AppendExtraBrowserArgs( 76 ['--enable-experimental-web-platform-features', 77 '--disable-gesture-requirement-for-media-playback']) 78