media.py revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 29class MediaNetworkSimulation(test.Test): 30 """Obtains media metrics under different network simulations.""" 31 test = media.Media 32 page_set = 'page_sets/media_cns_cases.json' 33 34 35class MediaAndroid(test.Test): 36 """Obtains media metrics for key user scenarios on Android.""" 37 test = media.Media 38 tag = 'android' 39 page_set = 'page_sets/tough_video_cases.json' 40 # Exclude 4k and 50 fps media files (garden* & crowd*). 41 options = { 42 'page_label_filter_exclude': '4k,50fps'} 43 44 45class 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 54 55class MediaChromeOS(test.Test): 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 """ 60 test = media.Media 61 tag = 'chromeOS' 62 page_set = 'page_sets/tough_video_cases.json' 63 # Exclude 50fps test files: crbug/331816 64 options = {'page_label_filter_exclude': '4k,50fps'} 65 66 67class MediaSourceExtensions(test.Test): 68 """Obtains media metrics for key media source extensions functions.""" 69 test = MSEMeasurement 70 page_set = 'page_sets/mse_cases.json' 71 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']) 77