Home | History | Annotate | Download | only in measurements
      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.
      4 from measurements import timeline_controller
      5 from metrics import timeline
      6 from telemetry.core.platform import tracing_category_filter
      7 from telemetry.page import page_test
      8 
      9 class ThreadTimes(page_test.PageTest):
     10   def __init__(self):
     11     super(ThreadTimes, self).__init__('RunSmoothness')
     12     self._timeline_controller = None
     13 
     14   @classmethod
     15   def AddCommandLineArgs(cls, parser):
     16     parser.add_option('--report-silk-results', action='store_true',
     17                       help='Report results relevant to silk.')
     18     parser.add_option('--report-silk-details', action='store_true',
     19                       help='Report details relevant to silk.')
     20 
     21   def WillNavigateToPage(self, page, tab):
     22     self._timeline_controller = timeline_controller.TimelineController()
     23     if self.options.report_silk_details:
     24       # We need the other traces in order to have any details to report.
     25       self.timeline_controller.trace_categories = None
     26     else:
     27       self._timeline_controller.trace_categories = \
     28           tracing_category_filter.CreateNoOverheadFilter().filter_string
     29     self._timeline_controller.SetUp(page, tab)
     30 
     31   def WillRunActions(self, page, tab):
     32     self._timeline_controller.Start(tab)
     33 
     34   def DidRunActions(self, page, tab):
     35     self._timeline_controller.Stop(tab)
     36 
     37   def ValidateAndMeasurePage(self, page, tab, results):
     38     metric = timeline.ThreadTimesTimelineMetric()
     39     renderer_thread = \
     40         self._timeline_controller.model.GetRendererThreadFromTabId(tab.id)
     41     if self.options.report_silk_results:
     42       metric.results_to_report = timeline.ReportSilkResults
     43     if self.options.report_silk_details:
     44       metric.details_to_report = timeline.ReportSilkDetails
     45     metric.AddResults(self._timeline_controller.model, renderer_thread,
     46                       self._timeline_controller.smooth_records, results)
     47 
     48   def CleanUpAfterPage(self, _, tab):
     49     self._timeline_controller.CleanUp(tab)
     50