summaryrefslogtreecommitdiff
path: root/systrace/catapult/telemetry/telemetry/timeline/surface_flinger_importer.py
blob: a02637f4a2769c39ba0757a04ecf018b9a34bfb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from telemetry.timeline import importer
from tracing.trace_data import trace_data as trace_data_module


class SurfaceFlingerTimelineImporter(importer.TimelineImporter):
  def __init__(self, model, trace_data):
    super(SurfaceFlingerTimelineImporter, self).__init__(
        model, trace_data, import_order=2)
    traces = trace_data.GetTracesFor(trace_data_module.SURFACE_FLINGER_PART)
    assert len(traces) == 1
    self._events = traces[0]
    self._surface_flinger_process = None

  @staticmethod
  def GetSupportedPart():
    return trace_data_module.SURFACE_FLINGER_PART

  def ImportEvents(self):
    for event in self._events:
      self._surface_flinger_process = self._model.GetOrCreateProcess(
          event['pid'])
      self._surface_flinger_process.name = 'SurfaceFlinger'
      thread = self._surface_flinger_process.GetOrCreateThread(event['tid'])
      thread.BeginSlice(event['cat'],
                        event['name'],
                        event['ts'],
                        args=event.get('args'))
      thread.EndSlice(event['ts'])

  def FinalizeImport(self):
    """Called by the Model after all other importers have imported their
    events."""
    self._model.UpdateBounds()
    self._model.surface_flinger_process = self._surface_flinger_process