1 # Copyright 2013 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.
6 class InspectorConsole(object):
7 def __init__(self, inspector_backend):
8 self._inspector_backend = inspector_backend
9 self._inspector_backend.RegisterDomain(
13 self._message_output_stream = None
14 self._last_message = None
15 self._console_enabled = False
17 def _OnNotification(self, msg):
18 if msg['method'] == 'Console.messageAdded':
19 if msg['params']['message']['url'] == 'chrome://newtab/':
21 self._last_message = 'At %s:%i: %s' % (
22 msg['params']['message']['url'],
23 msg['params']['message']['line'],
24 msg['params']['message']['text'])
25 if self._message_output_stream:
26 self._message_output_stream.write(
27 '%s\n' % self._last_message)
29 elif msg['method'] == 'Console.messageRepeatCountUpdated':
30 if self._message_output_stream:
31 self._message_output_stream.write(
32 '%s\n' % self._last_message)
37 # False positive in PyLint 0.25.1: http://www.logilab.org/89092
39 def message_output_stream(self): # pylint: disable=E0202
40 return self._message_output_stream
42 @message_output_stream.setter
43 def message_output_stream(self, stream): # pylint: disable=E0202
44 self._message_output_stream = stream
45 self._UpdateConsoleEnabledState()
47 def _UpdateConsoleEnabledState(self):
48 enabled = self._message_output_stream != None
49 if enabled == self._console_enabled:
53 method_name = 'enable'
55 method_name = 'disable'
56 self._inspector_backend.SyncRequest({
57 'method': 'Console.%s' % method_name
59 self._console_enabled = enabled