blob: 703869b62b2dec4b92bdf1dea817accee6019697 [file] [log] [blame]
# 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
class InspectorMemoryException(Exception):
pass
class InspectorMemory(object):
"""Communicates with the remote inspector's Memory domain."""
def __init__(self, inspector_backend):
self._inspector_backend = inspector_backend
self._inspector_backend.RegisterDomain(
'Memory',
self._OnNotification,
self._OnClose)
def _OnNotification(self, msg):
pass
def _OnClose(self):
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".
"""
res = self._inspector_backend.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']
}