Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: tools/telemetry/telemetry/core/timeline/model.py

Issue 29423005: telemetry: Add GetRendererProcessFromTab to timeline model. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean-ups. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 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 '''A container for timeline-based events and traces and can handle importing 4 '''A container for timeline-based events and traces and can handle importing
5 raw event data from different sources. This model closely resembles that in the 5 raw event data from different sources. This model closely resembles that in the
6 trace_viewer project: 6 trace_viewer project:
7 https://code.google.com/p/trace-viewer/ 7 https://code.google.com/p/trace-viewer/
8 ''' 8 '''
9 9
10 from operator import attrgetter 10 from operator import attrgetter
11 11
12 import telemetry.core.timeline.process as tracing_process 12 import telemetry.core.timeline.process as tracing_process
13 from telemetry.core import web_contents
14 from telemetry.core import browser
13 15
14 # Register importers for data 16 # Register importers for data
15 from telemetry.core.timeline import inspector_importer 17 from telemetry.core.timeline import inspector_importer
16 from telemetry.core.timeline import bounds 18 from telemetry.core.timeline import bounds
17 from telemetry.core.timeline import trace_event_importer 19 from telemetry.core.timeline import trace_event_importer
18 20
19 _IMPORTERS = [ 21 _IMPORTERS = [
20 inspector_importer.InspectorTimelineImporter, 22 inspector_importer.InspectorTimelineImporter,
21 trace_event_importer.TraceEventTimelineImporter 23 trace_event_importer.TraceEventTimelineImporter
22 ] 24 ]
(...skipping 11 matching lines...) Expand all
34 'Overlapping timeline markers found') 36 'Overlapping timeline markers found')
35 37
36 38
37 class TimelineModel(object): 39 class TimelineModel(object):
38 def __init__(self, event_data=None, shift_world_to_zero=True): 40 def __init__(self, event_data=None, shift_world_to_zero=True):
39 self._bounds = bounds.Bounds() 41 self._bounds = bounds.Bounds()
40 self._processes = {} 42 self._processes = {}
41 self._frozen = False 43 self._frozen = False
42 self.import_errors = [] 44 self.import_errors = []
43 self.metadata = [] 45 self.metadata = []
46 self._core_object_to_timeline_container_map = {}
44 47
45 if event_data is not None: 48 if event_data is not None:
46 self.ImportTraces([event_data], shift_world_to_zero=shift_world_to_zero) 49 self.ImportTraces([event_data], shift_world_to_zero=shift_world_to_zero)
47 50
48 @property 51 @property
49 def bounds(self): 52 def bounds(self):
50 return self._bounds 53 return self._bounds
51 54
52 @property 55 @property
53 def processes(self): 56 def processes(self):
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 for (i, event) in enumerate(events): 164 for (i, event) in enumerate(events):
162 if event.name != labels[i]: 165 if event.name != labels[i]:
163 raise MarkerMismatchError() 166 raise MarkerMismatchError()
164 for i in xrange(0, len(events)): 167 for i in xrange(0, len(events)):
165 for j in xrange(i+1, len(events)): 168 for j in xrange(i+1, len(events)):
166 if (events[j].start < events[i].start + events[i].duration): 169 if (events[j].start < events[i].start + events[i].duration):
167 raise MarkerOverlapError() 170 raise MarkerOverlapError()
168 171
169 return events 172 return events
170 173
174 def GetRendererProcessFromTab(self, tab):
175 return self._core_object_to_timeline_container_map[tab]
176
177 def AddCoreObjectToContainerMapping(self, core_object, container):
178 """ Add a mapping from a core object to a timeline container.
179
180 Used for example to map a Tab to its renderer process in the timeline model.
181 """
182 assert(isinstance(core_object, web_contents.WebContents) or
183 isinstance(core_object, browser.Browser))
184 self._core_object_to_timeline_container_map[core_object] = container
185
171 def _CreateImporter(self, event_data): 186 def _CreateImporter(self, event_data):
172 for importer_class in _IMPORTERS: 187 for importer_class in _IMPORTERS:
173 if importer_class.CanImport(event_data): 188 if importer_class.CanImport(event_data):
174 return importer_class(self, event_data) 189 return importer_class(self, event_data)
175 raise ValueError("Could not find an importer for the provided event data") 190 raise ValueError("Could not find an importer for the provided event data")
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698