Home | History | Annotate | Download | only in timeline
      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 
      5 from telemetry.timeline import importer
      6 from tracing.trace_data import trace_data as trace_data_module
      7 
      8 
      9 class SurfaceFlingerTimelineImporter(importer.TimelineImporter):
     10   def __init__(self, model, trace_data):
     11     super(SurfaceFlingerTimelineImporter, self).__init__(
     12         model, trace_data, import_order=2)
     13     traces = trace_data.GetTracesFor(trace_data_module.SURFACE_FLINGER_PART)
     14     assert len(traces) == 1
     15     self._events = traces[0]
     16     self._surface_flinger_process = None
     17 
     18   @staticmethod
     19   def GetSupportedPart():
     20     return trace_data_module.SURFACE_FLINGER_PART
     21 
     22   def ImportEvents(self):
     23     for event in self._events:
     24       self._surface_flinger_process = self._model.GetOrCreateProcess(
     25           event['pid'])
     26       self._surface_flinger_process.name = 'SurfaceFlinger'
     27       thread = self._surface_flinger_process.GetOrCreateThread(event['tid'])
     28       thread.BeginSlice(event['cat'],
     29                         event['name'],
     30                         event['ts'],
     31                         args=event.get('args'))
     32       thread.EndSlice(event['ts'])
     33 
     34   def FinalizeImport(self):
     35     """Called by the Model after all other importers have imported their
     36     events."""
     37     self._model.UpdateBounds()
     38     self._model.surface_flinger_process = self._surface_flinger_process
     39