media.py revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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 6import page_sets 7from telemetry import benchmark 8from telemetry.page import page_test 9from telemetry.value import list_of_scalar_values 10from telemetry.value import scalar 11 12 13class _MSEMeasurement(page_test.PageTest): 14 def ValidateAndMeasurePage(self, page, tab, results): 15 media_metric = tab.EvaluateJavaScript('window.__testMetrics') 16 trace = media_metric['id'] if 'id' in media_metric else None 17 metrics = media_metric['metrics'] if 'metrics' in media_metric else [] 18 for m in metrics: 19 trace_name = '%s.%s' % (m, trace) 20 if isinstance(metrics[m], list): 21 results.AddValue(list_of_scalar_values.ListOfScalarValues( 22 results.current_page, trace_name, units='ms', 23 values=[float(v) for v in metrics[m]], 24 important=True)) 25 26 else: 27 results.AddValue(scalar.ScalarValue( 28 results.current_page, trace_name, units='ms', 29 value=float(metrics[m]), important=True)) 30 31 32@benchmark.Disabled('android') 33class Media(benchmark.Benchmark): 34 """Obtains media metrics for key user scenarios.""" 35 test = media.Media 36 page_set = page_sets.ToughVideoCasesPageSet 37 38 39@benchmark.Disabled 40class MediaNetworkSimulation(benchmark.Benchmark): 41 """Obtains media metrics under different network simulations.""" 42 test = media.Media 43 page_set = page_sets.MediaCnsCasesPageSet 44 45 46@benchmark.Enabled('android') 47@benchmark.Disabled('l') 48class MediaAndroid(benchmark.Benchmark): 49 """Obtains media metrics for key user scenarios on Android.""" 50 test = media.Media 51 tag = 'android' 52 page_set = page_sets.ToughVideoCasesPageSet 53 # Exclude is_4k and 50 fps media files (garden* & crowd*). 54 options = {'page_label_filter_exclude': 'is_4k,is_50fps'} 55 56 57@benchmark.Enabled('chromeos') 58class MediaChromeOS4kOnly(benchmark.Benchmark): 59 """Benchmark for media performance on ChromeOS using only is_4k test content. 60 """ 61 test = media.Media 62 tag = 'chromeOS4kOnly' 63 page_set = page_sets.ToughVideoCasesPageSet 64 options = { 65 'page_label_filter': 'is_4k', 66 # Exclude is_50fps test files: crbug/331816 67 'page_label_filter_exclude': 'is_50fps' 68 } 69 70 71@benchmark.Enabled('chromeos') 72class MediaChromeOS(benchmark.Benchmark): 73 """Benchmark for media performance on all ChromeOS platforms. 74 75 This benchmark does not run is_4k content, there's a separate benchmark for 76 that. 77 """ 78 test = media.Media 79 tag = 'chromeOS' 80 page_set = page_sets.ToughVideoCasesPageSet 81 # Exclude is_50fps test files: crbug/331816 82 options = {'page_label_filter_exclude': 'is_4k,is_50fps'} 83 84 85class MediaSourceExtensions(benchmark.Benchmark): 86 """Obtains media metrics for key media source extensions functions.""" 87 test = _MSEMeasurement 88 page_set = page_sets.MseCasesPageSet 89 90 def CustomizeBrowserOptions(self, options): 91 # Needed to allow XHR requests to return stream objects. 92 options.AppendExtraBrowserArgs( 93 ['--enable-experimental-web-platform-features', 94 '--disable-gesture-requirement-for-media-playback']) 95