| OLD | NEW | 
 | (Empty) | 
|   1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |  | 
|   2 # Use of this source code is governed by a BSD-style license that can be |  | 
|   3 # found in the LICENSE file. |  | 
|   4  |  | 
|   5 import json |  | 
|   6 import os |  | 
|   7  |  | 
|   8  |  | 
|   9 class TimelineModel(object): |  | 
|  10   """A proxy for about:tracing's TimelineModel class. |  | 
|  11  |  | 
|  12   Test authors should never need to know that this class is a proxy. |  | 
|  13   """ |  | 
|  14   @staticmethod |  | 
|  15   def _EscapeForQuotedJavascriptExecution(js): |  | 
|  16       # Poor man's string escape. |  | 
|  17       return js.replace('\'', '\\\''); |  | 
|  18  |  | 
|  19   def __init__(self, js_executor, shim_id): |  | 
|  20     self._js_executor = js_executor |  | 
|  21     self._shim_id = shim_id |  | 
|  22  |  | 
|  23   # Warning: The JSON serialization process removes cyclic references. |  | 
|  24   # TODO(eatnumber): regenerate these cyclic references on deserialization. |  | 
|  25   def _CallModelMethod(self, method_name, *args): |  | 
|  26     result = self._js_executor( |  | 
|  27         """window.timelineModelShims['%s'].invokeMethod('%s', '%s')""" % ( |  | 
|  28             self._shim_id, |  | 
|  29             self._EscapeForQuotedJavascriptExecution(method_name), |  | 
|  30             self._EscapeForQuotedJavascriptExecution(json.dumps(args)) |  | 
|  31         ) |  | 
|  32     ) |  | 
|  33     if result['success']: |  | 
|  34       return result['data'] |  | 
|  35     # TODO(eatnumber): Make these exceptions more reader friendly. |  | 
|  36     raise RuntimeError(result) |  | 
|  37  |  | 
|  38   def __del__(self): |  | 
|  39     self._js_executor(""" |  | 
|  40         window.timelineModelShims['%s'] = undefined; |  | 
|  41         window.domAutomationController.send(''); |  | 
|  42     """ % self._shim_id) |  | 
|  43  |  | 
|  44   def GetAllThreads(self): |  | 
|  45     return self._CallModelMethod('getAllThreads') |  | 
|  46  |  | 
|  47   def GetAllCpus(self): |  | 
|  48     return self._CallModelMethod('getAllCpus') |  | 
|  49  |  | 
|  50   def GetAllProcesses(self): |  | 
|  51     return self._CallModelMethod('getAllProcesses') |  | 
|  52  |  | 
|  53   def GetAllCounters(self): |  | 
|  54     return self._CallModelMethod('getAllCounters') |  | 
|  55  |  | 
|  56   def FindAllThreadsNamed(self, name): |  | 
|  57     return self._CallModelMethod('findAllThreadsNamed', name); |  | 
| OLD | NEW |