1 # Copyright 2014 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.
5 from telemetry
.core
.platform
import tracing_category_filter
6 from telemetry
.page
import page_test
7 from telemetry
.web_perf
.metrics
import layout
9 from measurements
import timeline_controller
10 from metrics
import timeline
13 class ThreadTimes(page_test
.PageTest
):
14 def __init__(self
, report_silk_details
=False):
15 super(ThreadTimes
, self
).__init
__()
16 self
._timeline
_controller
= None
17 self
._report
_silk
_details
= report_silk_details
19 def WillNavigateToPage(self
, page
, tab
):
20 self
._timeline
_controller
= timeline_controller
.TimelineController()
21 if self
._report
_silk
_details
:
22 # We need the other traces in order to have any details to report.
23 self
._timeline
_controller
.trace_categories
= None
25 self
._timeline
_controller
.trace_categories
= \
26 tracing_category_filter
.CreateNoOverheadFilter().filter_string
27 self
._timeline
_controller
.SetUp(page
, tab
)
29 def WillRunActions(self
, page
, tab
):
30 self
._timeline
_controller
.Start(tab
)
32 def ValidateAndMeasurePage(self
, page
, tab
, results
):
33 self
._timeline
_controller
.Stop(tab
, results
)
34 metric
= timeline
.ThreadTimesTimelineMetric()
36 self
._timeline
_controller
.model
.GetRendererThreadFromTabId(tab
.id)
37 if self
._report
_silk
_details
:
38 metric
.details_to_report
= timeline
.ReportSilkDetails
39 metric
.AddResults(self
._timeline
_controller
.model
, renderer_thread
,
40 self
._timeline
_controller
.smooth_records
, results
)
41 layout_metric
= layout
.LayoutMetric()
42 layout_metric
.AddResults(self
._timeline
_controller
.model
, renderer_thread
,
43 self
._timeline
_controller
.smooth_records
, results
)
45 def CleanUpAfterPage(self
, _
, tab
):
46 if self
._timeline
_controller
:
47 self
._timeline
_controller
.CleanUp(tab
)