Index: tools/telemetry/telemetry/timeline/event_container.py |
diff --git a/tools/telemetry/telemetry/timeline/event_container.py b/tools/telemetry/telemetry/timeline/event_container.py |
deleted file mode 100644 |
index 4d41e68da75acf4c0366f4eb76b973b01ea7936f..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/timeline/event_container.py |
+++ /dev/null |
@@ -1,144 +0,0 @@ |
-# 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 async_slice as async_slice_module |
-from telemetry.timeline import flow_event as flow_event_module |
-from telemetry.timeline import slice as slice_module |
- |
- |
-class TimelineEventContainer(object): |
- """Represents a container for events. |
- |
- """ |
- def __init__(self, name, parent): |
- self.parent = parent |
- self.name = name |
- |
- @staticmethod |
- def IsAsyncSlice(t): |
- return t == async_slice_module.AsyncSlice |
- |
- # Basic functions that subclasses of TimelineEventContainer should implement |
- # in order to expose their events. New methods should be added to this part of |
- # the code only when absolutely certain they're needed. |
- |
- def IterChildContainers(self): |
- raise NotImplementedError() |
- |
- def IterEventsInThisContainer(self, event_type_predicate, event_predicate): |
- """Iterates all the TimelineEvents in this container. |
- |
- Only events with a type matching event_type_predicate AND matching event |
- event_predicate will be yielded. |
- |
- event_type_predicate is given an actual type object, e.g.: |
- event_type_predicate(slice_module.Slice) |
- |
- event_predicate is given actual events: |
- event_predicate(thread.slices[7]) |
- |
- DO NOT ASSUME that the event_type_predicate will be called for every event |
- found. The relative calling order of the two is left up to the implementer |
- of the method. |
- |
- """ |
- del event_type_predicate, event_predicate # unused |
- return |
- yield # pylint: disable=unreachable |
- |
- |
- def IterAllEvents(self, |
- recursive=True, |
- event_type_predicate=lambda t: True, |
- event_predicate=lambda e: True): |
- """Iterates all events in this container, pre-filtered by two predicates. |
- |
- Only events with a type matching event_type_predicate AND matching event |
- event_predicate will be yielded. |
- |
- event_type_predicate is given an actual type object, e.g.: |
- event_type_predicate(slice_module.Slice) |
- |
- event_predicate is given actual events: |
- event_predicate(thread.slices[7]) |
- """ |
- if not recursive: |
- for e in self.IterEventsInThisContainer( |
- event_type_predicate, event_predicate): |
- yield e |
- return |
- |
- # TODO(nduca): Write this as a proper iterator instead of one that creates a |
- # list and then iterates it. |
- containers = [] |
- def GetContainersRecursive(container): |
- containers.append(container) |
- for container in container.IterChildContainers(): |
- GetContainersRecursive(container) |
- GetContainersRecursive(self) |
- |
- # Actually create the iterator. |
- for c in containers: |
- for e in c.IterEventsInThisContainer(event_type_predicate, |
- event_predicate): |
- yield e |
- |
- # Helper functions for finding common kinds of events. Must always take an |
- # optinal recurisve parameter and be implemented in terms fo IterAllEvents. |
- def IterAllEventsOfName(self, name, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=lambda t: True, |
- event_predicate=lambda e: e.name == name) |
- |
- def IterAllSlices(self, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=lambda t: t == slice_module.Slice) |
- |
- def IterAllSlicesInRange(self, start, end, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=lambda t: t == slice_module.Slice, |
- event_predicate=lambda s: s.start >= start and s.end <= end) |
- |
- def IterAllSlicesOfName(self, name, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=lambda t: t == slice_module.Slice, |
- event_predicate=lambda e: e.name == name) |
- |
- def IterAllToplevelSlicesOfName(self, name, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=lambda t: t == slice_module.Slice, |
- event_predicate=lambda e: e.name == name and e.parent_slice == None) |
- |
- def IterAllAsyncSlicesOfName(self, name, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=self.IsAsyncSlice, |
- event_predicate=lambda e: e.name == name) |
- |
- def IterAllAsyncSlicesStartsWithName(self, name, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=self.IsAsyncSlice, |
- event_predicate=lambda e: e.name.startswith(name)) |
- |
- def IterAllFlowEvents(self, recursive=True): |
- return self.IterAllEvents( |
- recursive=recursive, |
- event_type_predicate=lambda t: t == flow_event_module.FlowEvent) |
- |
- # List versions. These should always be simple expressions that list() on |
- # an underlying iter method. |
- def GetAllEvents(self, recursive=True): |
- return list(self.IterAllEvents(recursive=recursive)) |
- |
- def GetAllEventsOfName(self, name, recursive=True): |
- return list(self.IterAllEventsOfName(name, recursive)) |
- |
- def GetAllToplevelSlicesOfName(self, name, recursive=True): |
- return list(self.IterAllToplevelSlicesOfName(name, recursive)) |