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 |