| Index: tools/telemetry/telemetry/timeline_event.py
|
| diff --git a/tools/telemetry/telemetry/timeline_event.py b/tools/telemetry/telemetry/timeline_event.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bbcafb2e4a3e0c78cb4689cc0c3fba69e4905dfd
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/timeline_event.py
|
| @@ -0,0 +1,48 @@
|
| +# Copyright (c) 2013 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.
|
| +
|
| +class TimelineEvent(object):
|
| + """Represents a timeline event."""
|
| + def __init__(self, name, start_time_ms, duration_ms, args=None):
|
| + self.name = name
|
| + self.start_time_ms = start_time_ms
|
| + self.duration_ms = duration_ms
|
| + self.children = []
|
| + self.args = args
|
| +
|
| + @property
|
| + def end_time_ms(self):
|
| + return self.start_time_ms + self.duration_ms
|
| +
|
| + @property
|
| + def self_time_ms(self):
|
| + """Time spent in this function less any time spent in child events."""
|
| + child_total = sum(
|
| + [e.duration_ms for e in self.children])
|
| + return self.duration_ms - child_total
|
| +
|
| + def __repr__(self):
|
| + if self.args:
|
| + args_str = ', ' + repr(self.args)
|
| + else:
|
| + args_str = ''
|
| +
|
| + return "TimelineEvent(name='%s', start_ms=%f, duration_ms=%s%s)" % (
|
| + self.name,
|
| + self.start_time_ms,
|
| + self.duration_ms,
|
| + args_str)
|
| +
|
| + @staticmethod
|
| + def _GetAllChildrenRecursive(events, item):
|
| + events.append(item)
|
| + for child in item.children:
|
| + TimelineEvent._GetAllChildrenRecursive(events, child)
|
| +
|
| + def GetAllChildrenRecursive(self, include_self=False):
|
| + events = []
|
| + TimelineEvent._GetAllChildrenRecursive(events, self)
|
| + if not include_self:
|
| + del events[0]
|
| + return events
|
|
|