OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 Metric | 5 from metrics import Metric |
6 | 6 |
7 class LoadingMetric(Metric): | 7 class LoadingMetric(Metric): |
8 """A metric for page loading time based entirely on window.performance""" | 8 """A metric for page loading time based entirely on window.performance""" |
9 | 9 |
10 def Start(self, page, tab): | 10 def Start(self, page, tab): |
11 raise NotImplementedError() | 11 raise NotImplementedError() |
12 | 12 |
13 def Stop(self, page, tab): | 13 def Stop(self, page, tab): |
14 raise NotImplementedError() | 14 raise NotImplementedError() |
15 | 15 |
16 def AddResults(self, tab, results): | 16 def AddResults(self, tab, results): |
17 load_timings = tab.EvaluateJavaScript('window.performance.timing') | 17 load_timings = tab.EvaluateJavaScript('window.performance.timing') |
18 load_time_ms = ( | 18 |
19 float(load_timings['loadEventStart']) - | 19 # NavigationStart relative markers in milliseconds. |
20 load_timings['navigationStart']) | 20 load_start = ( |
21 dom_content_loaded_time_ms = ( | 21 float(load_timings['loadEventStart']) - load_timings['navigationStart']) |
| 22 results.Add('load_start', 'ms', load_start) |
| 23 |
| 24 dom_content_loaded_start = ( |
22 float(load_timings['domContentLoadedEventStart']) - | 25 float(load_timings['domContentLoadedEventStart']) - |
23 load_timings['navigationStart']) | 26 load_timings['navigationStart']) |
24 results.Add('load_time', 'ms', load_time_ms) | 27 results.Add('dom_content_loaded_start', 'ms', dom_content_loaded_start) |
25 results.Add('dom_content_loaded_time', 'ms', | 28 |
26 dom_content_loaded_time_ms) | 29 fetch_start = ( |
| 30 float(load_timings['fetchStart']) - load_timings['navigationStart']) |
| 31 results.Add('fetch_start', 'ms', fetch_start, data_type='unimportant') |
| 32 |
| 33 request_start = ( |
| 34 float(load_timings['requestStart']) - load_timings['navigationStart']) |
| 35 results.Add('request_start', 'ms', request_start, data_type='unimportant') |
| 36 |
| 37 # Phase measurements in milliseconds. |
| 38 domain_lookup_duration = ( |
| 39 float(load_timings['domainLookupEnd']) - |
| 40 load_timings['domainLookupStart']) |
| 41 results.Add('domain_lookup_duration', 'ms', domain_lookup_duration, |
| 42 data_type='unimportant') |
| 43 |
| 44 connect_duration = ( |
| 45 float(load_timings['connectEnd']) - load_timings['connectStart']) |
| 46 results.Add('connect_duration', 'ms', connect_duration, |
| 47 data_type='unimportant') |
| 48 |
| 49 request_duration = ( |
| 50 float(load_timings['responseStart']) - load_timings['requestStart']) |
| 51 results.Add('request_duration', 'ms', request_duration, |
| 52 data_type='unimportant') |
| 53 |
| 54 response_duration = ( |
| 55 float(load_timings['responseEnd']) - load_timings['responseStart']) |
| 56 results.Add('response_duration', 'ms', response_duration, |
| 57 data_type='unimportant') |
OLD | NEW |