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