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 |