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 |