Mojo C++ bindings: better log message for serialization warnings.
[chromium-blink-merge.git] / tools / perf / measurements / loading_trace.py
blob54752156e785f1334af63dfd62d2f60c26c7ab28
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 from measurements import timeline_controller
5 from metrics import loading
6 from metrics import timeline
7 from telemetry.page import page_test
8 from telemetry.web_perf import timeline_interaction_record as tir_module
10 class LoadingTrace(page_test.PageTest):
11 def __init__(self, *args, **kwargs):
12 super(LoadingTrace, self).__init__(*args, **kwargs)
13 self._timeline_controller = timeline_controller.TimelineController()
15 def WillNavigateToPage(self, page, tab):
16 self._timeline_controller.SetUp(page, tab)
17 self._timeline_controller.Start(tab)
19 def ValidateAndMeasurePage(self, page, tab, results):
20 # In current telemetry tests, all tests wait for DocumentComplete state,
21 # but we need to wait for the load event.
22 tab.WaitForJavaScriptExpression('performance.timing.loadEventStart', 300)
24 # TODO(nduca): when crbug.com/168431 is fixed, modify the page sets to
25 # recognize loading as a toplevel action.
26 self._timeline_controller.Stop(tab)
28 loading.LoadingMetric().AddResults(tab, results)
29 timeline_metric = timeline.LoadTimesTimelineMetric()
30 renderer_thread = \
31 self._timeline_controller.model.GetRendererThreadFromTabId(tab.id)
32 record = tir_module.TimelineInteractionRecord(
33 "loading_trace_interaction", 0, float('inf'))
34 timeline_metric.AddResults(
35 self._timeline_controller.model,
36 renderer_thread,
37 [record],
38 results)
40 def CleanUpAfterPage(self, _, tab):
41 self._timeline_controller.CleanUp(tab)