Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / media.py
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
5 from measurements import media
6 from telemetry import test
7 from telemetry.page import page_measurement
8
9
10 class 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
23 class 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
29 class 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
35 class 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
45 class 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
55 class 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
67 class 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'])