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_websocket
):
8 self
._inspector
_websocket
= inspector_websocket
9 self
._inspector
_websocket
.RegisterDomain('Console', self
._OnNotification
)
10 self
._message
_output
_stream
= None
11 self
._last
_message
= None
12 self
._console
_enabled
= False
14 def _OnNotification(self
, msg
):
15 if msg
['method'] == 'Console.messageAdded':
16 if msg
['params']['message']['url'] == 'chrome://newtab/':
18 self
._last
_message
= 'At %s:%i: %s' % (
19 msg
['params']['message']['url'],
20 msg
['params']['message']['line'],
21 msg
['params']['message']['text'])
22 if self
._message
_output
_stream
:
23 self
._message
_output
_stream
.write(
24 '%s\n' % self
._last
_message
)
26 elif msg
['method'] == 'Console.messageRepeatCountUpdated':
27 if self
._message
_output
_stream
:
28 self
._message
_output
_stream
.write(
29 '%s\n' % self
._last
_message
)
31 # False positive in PyLint 0.25.1: http://www.logilab.org/89092
33 def message_output_stream(self
): # pylint: disable=E0202
34 return self
._message
_output
_stream
36 @message_output_stream.setter
37 def message_output_stream(self
, stream
): # pylint: disable=E0202
38 self
._message
_output
_stream
= stream
39 self
._UpdateConsoleEnabledState
()
41 def _UpdateConsoleEnabledState(self
):
42 enabled
= self
._message
_output
_stream
!= None
43 if enabled
== self
._console
_enabled
:
47 method_name
= 'enable'
49 method_name
= 'disable'
50 self
._inspector
_websocket
.SyncRequest({
51 'method': 'Console.%s' % method_name
53 self
._console
_enabled
= enabled