Home | History | Annotate | Download | only in metrics
      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
      3 # found in the LICENSE file.
      4 
      5 from metrics import Metric
      6 
      7 class LoadingMetric(Metric):
      8   """A metric for page loading time based entirely on window.performance"""
      9 
     10   def Start(self, page, tab):
     11     raise NotImplementedError()
     12 
     13   def Stop(self, page, tab):
     14     raise NotImplementedError()
     15 
     16   def AddResults(self, tab, results):
     17     load_timings = tab.EvaluateJavaScript('window.performance.timing')
     18 
     19     # NavigationStart relative markers in milliseconds.
     20     load_start = (
     21       float(load_timings['loadEventStart']) - load_timings['navigationStart'])
     22     results.Add('load_start', 'ms', load_start)
     23 
     24     dom_content_loaded_start = (
     25       float(load_timings['domContentLoadedEventStart']) -
     26       load_timings['navigationStart'])
     27     results.Add('dom_content_loaded_start', 'ms', dom_content_loaded_start)
     28 
     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')
     58