OLD | NEW |
1 # Copyright 2012 The Chromium Authors. All rights reserved. | 1 # Copyright 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 from metrics import power | 5 from metrics import power |
| 6 |
| 7 from telemetry.core.platform import tracing_category_filter |
| 8 from telemetry.core.platform import tracing_options |
6 from telemetry.page import page_test | 9 from telemetry.page import page_test |
7 from telemetry.timeline import model | 10 from telemetry.timeline import model |
8 from telemetry.value import scalar | 11 from telemetry.value import scalar |
9 | 12 |
10 | 13 |
11 class ImageDecoding(page_test.PageTest): | 14 class ImageDecoding(page_test.PageTest): |
12 def __init__(self): | 15 def __init__(self): |
13 super(ImageDecoding, self).__init__() | 16 super(ImageDecoding, self).__init__() |
14 self._power_metric = None | 17 self._power_metric = None |
15 | 18 |
16 def CustomizeBrowserOptions(self, options): | 19 def CustomizeBrowserOptions(self, options): |
17 options.AppendExtraBrowserArgs('--enable-gpu-benchmarking') | 20 options.AppendExtraBrowserArgs('--enable-gpu-benchmarking') |
18 power.PowerMetric.CustomizeBrowserOptions(options) | 21 power.PowerMetric.CustomizeBrowserOptions(options) |
19 | 22 |
20 def WillStartBrowser(self, browser): | 23 def WillStartBrowser(self, browser): |
21 self._power_metric = power.PowerMetric(browser) | 24 self._power_metric = power.PowerMetric(browser) |
22 | 25 |
23 def WillNavigateToPage(self, page, tab): | 26 def WillNavigateToPage(self, page, tab): |
24 tab.ExecuteJavaScript(""" | 27 tab.ExecuteJavaScript(""" |
25 if (window.chrome && | 28 if (window.chrome && |
26 chrome.gpuBenchmarking && | 29 chrome.gpuBenchmarking && |
27 chrome.gpuBenchmarking.clearImageCache) { | 30 chrome.gpuBenchmarking.clearImageCache) { |
28 chrome.gpuBenchmarking.clearImageCache(); | 31 chrome.gpuBenchmarking.clearImageCache(); |
29 } | 32 } |
30 """) | 33 """) |
31 self._power_metric.Start(page, tab) | 34 self._power_metric.Start(page, tab) |
| 35 |
| 36 options = tracing_options.TracingOptions() |
| 37 options.enable_chrome_trace = True |
32 # FIXME: bare 'devtools' is for compatibility with older reference versions | 38 # FIXME: bare 'devtools' is for compatibility with older reference versions |
33 # only and may eventually be removed. | 39 # only and may eventually be removed. |
| 40 category_filter = tracing_category_filter.TracingCategoryFilter( |
| 41 'disabled-by-default-devtools.timeline*') |
| 42 |
34 # FIXME: Remove webkit.console when blink.console lands in chromium and | 43 # FIXME: Remove webkit.console when blink.console lands in chromium and |
35 # the ref builds are updated. crbug.com/386847 | 44 # the ref builds are updated. crbug.com/386847 |
36 tab.browser.StartTracing( | 45 categories = [ |
37 'disabled-by-default-devtools.timeline*,' + | 46 'devtools', |
38 'devtools,webkit.console,blink.console') | 47 'webkit.console', |
| 48 'blink.console' |
| 49 ] |
| 50 for c in categories: |
| 51 category_filter.AddIncludedCategory(c) |
| 52 tab.browser.platform.tracing_controller.Start(options, category_filter) |
39 | 53 |
40 def StopBrowserAfterPage(self, browser, page): | 54 def StopBrowserAfterPage(self, browser, page): |
41 return not browser.tabs[0].ExecuteJavaScript(""" | 55 return not browser.tabs[0].ExecuteJavaScript(""" |
42 window.chrome && | 56 window.chrome && |
43 chrome.gpuBenchmarking && | 57 chrome.gpuBenchmarking && |
44 chrome.gpuBenchmarking.clearImageCache; | 58 chrome.gpuBenchmarking.clearImageCache; |
45 """) | 59 """) |
46 | 60 |
47 def ValidateAndMeasurePage(self, page, tab, results): | 61 def ValidateAndMeasurePage(self, page, tab, results): |
48 timeline_data = tab.browser.StopTracing() | 62 timeline_data = tab.browser.platform.tracing_controller.Stop() |
49 timeline_model = model.TimelineModel(timeline_data) | 63 timeline_model = model.TimelineModel(timeline_data) |
50 self._power_metric.Stop(page, tab) | 64 self._power_metric.Stop(page, tab) |
51 self._power_metric.AddResults(tab, results) | 65 self._power_metric.AddResults(tab, results) |
52 | 66 |
53 def _IsDone(): | 67 def _IsDone(): |
54 return tab.EvaluateJavaScript('isDone') | 68 return tab.EvaluateJavaScript('isDone') |
55 | 69 |
56 decode_image_events = timeline_model.GetAllEventsOfName('Decode Image') | 70 decode_image_events = timeline_model.GetAllEventsOfName('Decode Image') |
57 | 71 |
58 # If it is a real image page, then store only the last-minIterations | 72 # If it is a real image page, then store only the last-minIterations |
(...skipping 12 matching lines...) Expand all Loading... |
71 results.AddValue(scalar.ScalarValue( | 85 results.AddValue(scalar.ScalarValue( |
72 results.current_page, 'ImageDecoding_avg', 'ms', image_decoding_avg, | 86 results.current_page, 'ImageDecoding_avg', 'ms', image_decoding_avg, |
73 description='Average decode time for images in 4 different ' | 87 description='Average decode time for images in 4 different ' |
74 'formats: gif, png, jpg, and webp. The image files are ' | 88 'formats: gif, png, jpg, and webp. The image files are ' |
75 'located at chrome/test/data/image_decoding.')) | 89 'located at chrome/test/data/image_decoding.')) |
76 results.AddValue(scalar.ScalarValue( | 90 results.AddValue(scalar.ScalarValue( |
77 results.current_page, 'ImageLoading_avg', 'ms', | 91 results.current_page, 'ImageLoading_avg', 'ms', |
78 tab.EvaluateJavaScript('averageLoadingTimeMs()'))) | 92 tab.EvaluateJavaScript('averageLoadingTimeMs()'))) |
79 | 93 |
80 def CleanUpAfterPage(self, page, tab): | 94 def CleanUpAfterPage(self, page, tab): |
81 if tab.browser.is_tracing_running: | 95 tracing_controller = tab.browser.platform.tracing_controller |
82 tab.browser.StopTracing() | 96 if tracing_controller.is_tracing_running: |
| 97 tracing_controller.Stop() |
OLD | NEW |