media.py revision a02191e04bc25c4935f804f2c080ae28663d096d
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.py' 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.py' 41 # Exclude is_4k and 50 fps media files (garden* & crowd*). 42 options = {'page_label_filter_exclude': 'is_4k,is_50fps'} 43 44 45class MediaChromeOS4kOnly(test.Test): 46 """Benchmark for media performance on ChromeOS using only is_4k test content. 47 """ 48 test = media.Media 49 tag = 'chromeOS4kOnly' 50 page_set = 'page_sets/tough_video_cases.py' 51 options = { 52 'page_label_filter': 'is_4k', 53 # Exclude is_50fps test files: crbug/331816 54 'page_label_filter_exclude': 'is_50fps' 55 } 56 57 58class MediaChromeOS(test.Test): 59 """Benchmark for media performance on all ChromeOS platforms. 60 61 This benchmark does not run is_4k content, there's a separate benchmark for 62 that. 63 """ 64 test = media.Media 65 tag = 'chromeOS' 66 page_set = 'page_sets/tough_video_cases.py' 67 # Exclude is_50fps test files: crbug/331816 68 options = {'page_label_filter_exclude': 'is_4k,is_50fps'} 69 70 71class MediaSourceExtensions(test.Test): 72 """Obtains media metrics for key media source extensions functions.""" 73 test = _MSEMeasurement 74 page_set = 'page_sets/mse_cases.json' 75 76 def CustomizeBrowserOptions(self, options): 77 # Needed to allow XHR requests to return stream objects. 78 options.AppendExtraBrowserArgs( 79 ['--enable-experimental-web-platform-features', 80 '--disable-gesture-requirement-for-media-playback']) 81