| Index: tools/telemetry/telemetry/core/timeline/trace_event_importer.py | 
| diff --git a/tools/telemetry/telemetry/core/timeline/tracing/trace_event_importer.py b/tools/telemetry/telemetry/core/timeline/trace_event_importer.py | 
| similarity index 94% | 
| rename from tools/telemetry/telemetry/core/timeline/tracing/trace_event_importer.py | 
| rename to tools/telemetry/telemetry/core/timeline/trace_event_importer.py | 
| index 636ac200de896e84aa1a46dda0f455a4a14ec36a..2b191d420b3345c30c61fd19e41c86c1873b9b62 100644 | 
| --- a/tools/telemetry/telemetry/core/timeline/tracing/trace_event_importer.py | 
| +++ b/tools/telemetry/telemetry/core/timeline/trace_event_importer.py | 
| @@ -12,15 +12,13 @@ import json | 
| import re | 
|  | 
| from telemetry.core.timeline import importer | 
| -import telemetry.core.timeline.tracing.async_slice as tracing_async_slice | 
| -import telemetry.core.timeline.tracing.process as tracing_process | 
| +import telemetry.core.timeline.async_slice as tracing_async_slice | 
|  | 
| class TraceEventTimelineImporter(importer.TimelineImporter): | 
| def __init__(self, model, event_data): | 
| super(TraceEventTimelineImporter, self).__init__( | 
| model, event_data, import_priority=1) | 
|  | 
| -    self._processes = {} | 
| self._events_were_from_string = False | 
| self._all_async_events = [] | 
| self._all_object_events = [] | 
| @@ -83,9 +81,7 @@ class TraceEventTimelineImporter(importer.TimelineImporter): | 
| return False | 
|  | 
| def _GetOrCreateProcess(self, pid): | 
| -    if pid not in self._processes: | 
| -      self._processes[pid] = tracing_process.Process(pid) | 
| -    return self._processes[pid] | 
| +    return self._model.GetOrCreateProcess(pid) | 
|  | 
| def _DeepCopyIfNeeded(self, obj): | 
| if self._events_were_from_string: | 
| @@ -236,23 +232,15 @@ class TraceEventTimelineImporter(importer.TimelineImporter): | 
| def FinalizeImport(self): | 
| '''Called by the Model after all other importers have imported their | 
| events.''' | 
| -    # Add all top level process events to the model. | 
| -    for process in self._processes.itervalues(): | 
| -      self._model.AddEvent(process) | 
| self._model.UpdateBounds() | 
|  | 
| -    # Autoclose all open slices | 
| -    for process in self._processes.itervalues(): | 
| -      for thread in process.threads: | 
| -        thread.AutoCloseOpenSlices(max_timestamp=self._model.max_timestamp) | 
| - | 
| # We need to reupdate the bounds in case the minimum start time changes | 
| self._model.UpdateBounds() | 
| self._CreateAsyncSlices() | 
| self._CreateExplicitObjects() | 
| self._CreateImplicitObjects() | 
|  | 
| -    for process in self._processes.itervalues(): | 
| +    for process in self._model.processes.itervalues(): | 
| process.FinalizeImport() | 
|  | 
| def _CreateAsyncSlices(self): | 
| @@ -312,8 +300,7 @@ class TraceEventTimelineImporter(importer.TimelineImporter): | 
| async_slice = tracing_async_slice.AsyncSlice( | 
| events[0]['event']['cat'], | 
| name, | 
| -              events[0]['event']['ts'] / 1000.0, | 
| -              parent=self) | 
| +              events[0]['event']['ts'] / 1000.0) | 
|  | 
| async_slice.duration = ((event['ts'] / 1000.0) | 
| - (events[0]['event']['ts'] / 1000.0)) | 
| @@ -332,6 +319,7 @@ class TraceEventTimelineImporter(importer.TimelineImporter): | 
| events[0]['event']['cat'], | 
| sub_name, | 
| events[j - 1]['event']['ts'] / 1000.0) | 
| +            sub_slice.parent_slice = async_slice | 
|  | 
| sub_slice.duration = ((events[j]['event']['ts'] / 1000.0) | 
| - (events[j - 1]['event']['ts'] / 1000.0)) | 
|  |