blob: cd4ddf01a7faa13d8f50f751dbd53a07db206894 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
from telemetry.core import exceptions
class InspectorMemoryException(exceptions.Error):
pass
class InspectorMemory(object):
"""Communicates with the remote inspector's Memory domain."""
def __init__(self, inspector_websocket):
self._inspector_websocket = inspector_websocket
self._inspector_websocket.RegisterDomain('Memory', self._OnNotification)
def _OnNotification(self, msg):
pass
def GetDOMCounters(self, timeout):
"""Retrieves DOM element counts.
Args:
timeout: The number of seconds to wait for the inspector backend to
service the request before timing out.
Returns:
A dictionary containing the counts associated with "nodes", "documents",
and "jsEventListeners".
Raises:
InspectorMemoryException
websocket.WebSocketException
socket.error
exceptions.WebSocketDisconnected
"""
res = self._inspector_websocket.SyncRequest({
'method': 'Memory.getDOMCounters'
}, timeout)
if ('result' not in res or
'nodes' not in res['result'] or
'documents' not in res['result'] or
'jsEventListeners' not in res['result']):
raise InspectorMemoryException(
'Inspector returned unexpected result for Memory.getDOMCounters:\n' +
json.dumps(res, indent=2))
return {
'nodes': res['result']['nodes'],
'documents': res['result']['documents'],
'jsEventListeners': res['result']['jsEventListeners']
}
|