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