| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 '''Imports event data obtained from the inspector's timeline.''' | 4 '''Imports event data obtained from the inspector's timeline.''' |
| 5 | 5 |
| 6 from telemetry.timeline import importer | 6 from telemetry.timeline import importer |
| 7 from telemetry.timeline import inspector_timeline_data | |
| 8 import telemetry.timeline.thread as timeline_thread | 7 import telemetry.timeline.thread as timeline_thread |
| 9 import telemetry.timeline.slice as tracing_slice | 8 import telemetry.timeline.slice as tracing_slice |
| 9 import telemetry.value.trace as trace_value_module |
| 10 | 10 |
| 11 class InspectorTimelineImporter(importer.TimelineImporter): | 11 class InspectorTimelineImporter(importer.TimelineImporter): |
| 12 def __init__(self, model, timeline_data): | 12 def __init__(self, model, trace_value): |
| 13 super(InspectorTimelineImporter, self).__init__(model, timeline_data) | 13 super(InspectorTimelineImporter, self).__init__( |
| 14 model, |
| 15 trace_value, |
| 16 import_order=1) |
| 17 self._events = trace_value.GetEventsFor( |
| 18 trace_value_module.INSPECTOR_TRACE_PART) |
| 14 | 19 |
| 15 @staticmethod | 20 @staticmethod |
| 16 def CanImport(timeline_data): | 21 def GetSupportedPart(): |
| 17 ''' Checks if timeline_data is from the inspector timeline. We assume | 22 return trace_value_module.INSPECTOR_TRACE_PART |
| 18 that if the first event is a valid inspector event, we can import the | |
| 19 entire list. | |
| 20 ''' | |
| 21 if not isinstance(timeline_data, | |
| 22 inspector_timeline_data.InspectorTimelineData): | |
| 23 return False | |
| 24 | |
| 25 event_data = timeline_data.EventData() | |
| 26 | |
| 27 if isinstance(event_data, list) and len(event_data): | |
| 28 event_datum = event_data[0] | |
| 29 return 'startTime' in event_datum and 'type' in event_datum | |
| 30 return False | |
| 31 | 23 |
| 32 def ImportEvents(self): | 24 def ImportEvents(self): |
| 33 render_process = self._model.GetOrCreateProcess(0) | 25 render_process = self._model.GetOrCreateProcess(0) |
| 34 for raw_event in self._timeline_data.EventData(): | 26 for raw_event in self._events: |
| 35 thread = render_process.GetOrCreateThread(raw_event.get('thread', 0)) | 27 thread = render_process.GetOrCreateThread(raw_event.get('thread', 0)) |
| 36 InspectorTimelineImporter.AddRawEventToThreadRecursive(thread, raw_event) | 28 InspectorTimelineImporter.AddRawEventToThreadRecursive(thread, raw_event) |
| 37 | 29 |
| 38 def FinalizeImport(self): | 30 def FinalizeImport(self): |
| 39 pass | 31 pass |
| 40 | 32 |
| 41 @staticmethod | 33 @staticmethod |
| 42 def AddRawEventToThreadRecursive(thread, raw_inspector_event): | 34 def AddRawEventToThreadRecursive(thread, raw_inspector_event): |
| 43 pending_slice = None | 35 pending_slice = None |
| 44 if ('startTime' in raw_inspector_event and | 36 if ('startTime' in raw_inspector_event and |
| (...skipping 27 matching lines...) Expand all Loading... |
| 72 def RawEventToTimelineEvent(raw_inspector_event): | 64 def RawEventToTimelineEvent(raw_inspector_event): |
| 73 """Converts raw_inspector_event to TimelineEvent.""" | 65 """Converts raw_inspector_event to TimelineEvent.""" |
| 74 thread = timeline_thread.Thread(None, 0) | 66 thread = timeline_thread.Thread(None, 0) |
| 75 InspectorTimelineImporter.AddRawEventToThreadRecursive( | 67 InspectorTimelineImporter.AddRawEventToThreadRecursive( |
| 76 thread, raw_inspector_event) | 68 thread, raw_inspector_event) |
| 77 thread.FinalizeImport() | 69 thread.FinalizeImport() |
| 78 assert len(thread.toplevel_slices) <= 1 | 70 assert len(thread.toplevel_slices) <= 1 |
| 79 if len(thread.toplevel_slices) == 0: | 71 if len(thread.toplevel_slices) == 0: |
| 80 return None | 72 return None |
| 81 return thread.toplevel_slices[0] | 73 return thread.toplevel_slices[0] |
| OLD | NEW |