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
5from metrics import Metric
6
7class 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    load_time_ms = (
19      float(load_timings['loadEventStart']) -
20      load_timings['navigationStart'])
21    dom_content_loaded_time_ms = (
22      float(load_timings['domContentLoadedEventStart']) -
23      load_timings['navigationStart'])
24    results.Add('load_time', 'ms', load_time_ms)
25    results.Add('dom_content_loaded_time', 'ms',
26                dom_content_loaded_time_ms)
27