Revert 224458 "Enabling MediaStreamInfoBarTest.DenyingCameraDoes..."
[chromium-blink-merge.git] / tools / perf / measurements / image_decoding.py
blobe838bfbf887a31a0f244136a6579a47e9e3e7332
1 # Copyright (c) 2012 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.
5 from telemetry.page import page_measurement
8 class ImageDecoding(page_measurement.PageMeasurement):
9 def CustomizeBrowserOptions(self, options):
10 options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
12 def WillNavigateToPage(self, page, tab):
13 tab.ExecuteJavaScript("""
14 if (window.chrome &&
15 chrome.gpuBenchmarking &&
16 chrome.gpuBenchmarking.clearImageCache) {
17 chrome.gpuBenchmarking.clearImageCache();
19 """)
20 tab.StartTimelineRecording()
22 def NeedsBrowserRestartAfterEachRun(self, tab):
23 return not tab.ExecuteJavaScript("""
24 window.chrome &&
25 chrome.gpuBenchmarking &&
26 chrome.gpuBenchmarking.clearImageCache;
27 """)
29 def MeasurePage(self, page, tab, results):
30 tab.StopTimelineRecording()
31 def _IsDone():
32 return tab.EvaluateJavaScript('isDone')
34 decode_image_events = \
35 tab.timeline_model.GetAllEventsOfName('DecodeImage')
37 # If it is a real image page, then store only the last-minIterations
38 # decode tasks.
39 if (hasattr(page,
40 'image_decoding_measurement_limit_results_to_min_iterations') and
41 page.image_decoding_measurement_limit_results_to_min_iterations):
42 assert _IsDone()
43 min_iterations = tab.EvaluateJavaScript('minIterations')
44 decode_image_events = decode_image_events[-min_iterations:]
46 durations = [d.duration for d in decode_image_events]
47 if not durations:
48 results.Add('ImageDecoding_avg', 'ms', 'unsupported')
49 return
50 image_decoding_avg = sum(durations) / len(durations)
51 results.Add('ImageDecoding_avg', 'ms', image_decoding_avg)
52 results.Add('ImageLoading_avg', 'ms',
53 tab.EvaluateJavaScript('averageLoadingTimeMs()'))