Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / backends / chrome / inspector_console.py
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.
4
5
6 class InspectorConsole(object):
7   def __init__(self, inspector_backend):
8     self._inspector_backend = inspector_backend
9     self._inspector_backend.RegisterDomain(
10         'Console',
11         self._OnNotification,
12         self._OnClose)
13     self._message_output_stream = None
14     self._last_message = None
15     self._console_enabled = False
16
17   def _OnNotification(self, msg):
18     if msg['method'] == 'Console.messageAdded':
19       if msg['params']['message']['url'] == 'chrome://newtab/':
20         return
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)
28
29     elif msg['method'] == 'Console.messageRepeatCountUpdated':
30       if self._message_output_stream:
31         self._message_output_stream.write(
32           '%s\n' % self._last_message)
33
34   def _OnClose(self):
35     pass
36
37   # False positive in PyLint 0.25.1: http://www.logilab.org/89092
38   @property
39   def message_output_stream(self):  # pylint: disable=E0202
40     return self._message_output_stream
41
42   @message_output_stream.setter
43   def message_output_stream(self, stream):  # pylint: disable=E0202
44     self._message_output_stream = stream
45     self._UpdateConsoleEnabledState()
46
47   def _UpdateConsoleEnabledState(self):
48     enabled = self._message_output_stream != None
49     if enabled == self._console_enabled:
50       return
51
52     if enabled:
53       method_name = 'enable'
54     else:
55       method_name = 'disable'
56     self._inspector_backend.SyncRequest({
57         'method': 'Console.%s' % method_name
58         })
59     self._console_enabled = enabled