Exemple #1
0
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        self.debugger_store().chrome_channel.setSocket(self)

        common_domain_args = {'debugger_store': self.debugger_store()}

        runtime_domain = RuntimeDomain(**common_domain_args)
        debugger_domain = DebuggerDomain(runtime_domain, **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            debugger_domain,
            PageDomain(**common_domain_args),
            runtime_domain,
        )
Exemple #2
0
class DebuggerWebSocket(WebSocket):
    # List of HandlerDomainSets for the server to respond to reqs with.
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        self.debugger_store().chrome_channel.setSocket(self)

        common_domain_args = {'debugger_store': self.debugger_store()}

        runtime_domain = RuntimeDomain(**common_domain_args)
        debugger_domain = DebuggerDomain(runtime_domain, **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            debugger_domain,
            PageDomain(**common_domain_args),
            runtime_domain,
        )

    @staticmethod
    def debugger_store():
        """The ChromeDevToolsDebugger instance associated with this handler.
        """
        raise NotImplementedError()

    def _generate_response(self, message):
        response = {}
        try:
            response['id'] = message['id']
            response['result'] = self.handlers.handle(
                method=str(message['method']),
                params=message.get('params', {}),
            )
        except UndefinedDomainError as e:
            response['error'] = 'Undefined domain: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except UndefinedHandlerError as e:
            response['error'] = 'Undefined handler: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except Exception as e:
            response['error'] = repr(e)
            response['result'] = {}
            response['stack'] = traceback.format_exc()
            traceback.print_exc(file=sys.stderr)

        return response

    def received_message(self, message):
        log_debug('received_message: %s' % message.data)
        parsed = None
        try:
            parsed = json.loads(message.data)
        except Exception:
            # Print invalid JSON requests to stderr.
            log_error('Invalid JSON: %s' % message)

        response = self._generate_response(parsed)
        response_in_json = json.dumps(response)
        log_debug('response: %s' % response_in_json)
        self.send(response_in_json)
Exemple #3
0
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        common_domain_args = {
            'debugger': self.debugger(),
            'socket': self,
        }
        file_manager = FileManager(self)
        remote_object_manager = RemoteObjectManager()

        runtime_domain = RuntimeDomain(remote_object_manager,
                                       **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            DebuggerDomain(runtime_domain,
                           file_manager,
                           remote_object_manager,
                           basepath=self.basepath(),
                           **common_domain_args),
            PageDomain(**common_domain_args),
            runtime_domain,
        )
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        self.debugger_store().chrome_channel.setSocket(self)

        common_domain_args = {
            'debugger_store': self.debugger_store()
        }

        runtime_domain = RuntimeDomain(**common_domain_args)
        debugger_domain = DebuggerDomain(
            runtime_domain,
            **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            debugger_domain,
            PageDomain(**common_domain_args),
            runtime_domain,
        )
Exemple #5
0
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        common_domain_args = {
            'debugger': self.debugger(),
            'socket': self,
        }
        file_manager = FileManager(self)
        remote_object_manager = RemoteObjectManager()

        runtime_domain = RuntimeDomain(
            remote_object_manager,
            **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            DebuggerDomain(
                runtime_domain,
                file_manager,
                remote_object_manager,
                basepath=self.basepath(),
                **common_domain_args),
            PageDomain(**common_domain_args),
            runtime_domain,
        )
Exemple #6
0
class DebuggerWebSocket(WebSocket):
    # List of HandlerDomainSets for the server to respond to reqs with.
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        channel = self.debugger_store().channel
        channel.setSocket(self)

        common_domain_args = {
            'debugger_store': self.debugger_store()
        }

        runtime_domain = RuntimeDomain(**common_domain_args)
        debugger_domain = DebuggerDomain(
            runtime_domain,
            **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            debugger_domain,
            PageDomain(**common_domain_args),
            runtime_domain,
        )

    @staticmethod
    def debugger_store():
        """The ChromeDevToolsDebugger instance associated with this handler.
        """
        raise NotImplementedError()

    def _generate_response(self, message):
        response = {}
        try:
            response['id'] = message['id']
            response['result'] = self.handlers.handle(
                method=str(message['method']),
                params=message.get('params', {}),
            )
        except UndefinedDomainError as e:
            response['error'] = 'Undefined domain: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except UndefinedHandlerError as e:
            response['error'] = 'Undefined handler: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except Exception as e:
            response['error'] = repr(e)
            response['result'] = {}
            response['stack'] = traceback.format_exc()
            traceback.print_exc(file=sys.stderr)

        return response

    def received_message(self, message):
        log_debug('received_message: %s' % message.data);
        parsed = None
        try:
            parsed = json.loads(message.data)
        except Exception:
            # Print invalid JSON requests to stderr.
            log_error('Invalid JSON: %s' % message)

        response = self._generate_response(parsed)
        response_in_json = json.dumps(response);
        log_debug('response: %s' % response_in_json);
        self.send(response_in_json)
Exemple #7
0
class DebuggerWebSocket(WebSocket):
    # List of HandlerDomainSets for the server to respond to reqs with.
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        common_domain_args = {
            'debugger': self.debugger(),
            'socket': self,
        }
        file_manager = FileManager(self)
        remote_object_manager = RemoteObjectManager()

        runtime_domain = RuntimeDomain(
            remote_object_manager,
            **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            DebuggerDomain(
                runtime_domain,
                file_manager,
                remote_object_manager,
                basepath=self.basepath(),
                **common_domain_args),
            PageDomain(**common_domain_args),
            runtime_domain,
        )

    @staticmethod
    def debugger():
        """The ChromeDevToolsDebugger instance associated with this handler.
        """
        raise NotImplementedError()

    @staticmethod
    def basepath():
        raise NotImplementedError()

    def _generate_response(self, message):
        response = {}
        try:
            response['id'] = message['id']
            response['result'] = self.handlers.handle(
                method=str(message['method']),
                params=message.get('params', {}),
            )
        except UndefinedDomainError as e:
            response['error'] = 'Undefined domain: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except UndefinedHandlerError as e:
            response['error'] = 'Undefined handler: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except Exception as e:
            response['error'] = repr(e)
            response['result'] = {}
            response['stack'] = traceback.format_exc()
            traceback.print_exc(file=sys.stderr)

        return response

    def received_message(self, message):
        log_debug('received_message: %s' % message.data);
        parsed = None
        try:
            parsed = json.loads(message.data)
        except Exception:
            # Print invalid JSON requests to stderr.
            log_error('Invalid JSON: %s' % message)

        response = self._generate_response(parsed)
        response_in_json = json.dumps(response);
        log_debug('response: %s' % response_in_json);
        self.send(response_in_json)

    def send_notification(self, method, params=None):
        """ Send a notification over the socket to a Chrome Dev Tools client.
        """
        notification_in_json = json.dumps({'method': method, 'params': params});
        log_debug('send_notification: %s' % notification_in_json);
        self.send(notification_in_json)
Exemple #8
0
class DebuggerWebSocket(WebSocket):
    # List of HandlerDomainSets for the server to respond to reqs with.
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        common_domain_args = {
            'debugger': self.debugger(),
            'socket': self,
        }
        file_manager = FileManager(self)
        remote_object_manager = RemoteObjectManager()

        runtime_domain = RuntimeDomain(remote_object_manager,
                                       **common_domain_args)
        self.handlers = HandlerDomainSet(
            ConsoleDomain(**common_domain_args),
            DebuggerDomain(runtime_domain,
                           file_manager,
                           remote_object_manager,
                           basepath=self.basepath(),
                           **common_domain_args),
            PageDomain(**common_domain_args),
            runtime_domain,
        )

    @staticmethod
    def debugger():
        """The ChromeDevToolsDebugger instance associated with this handler.
        """
        raise NotImplementedError()

    @staticmethod
    def basepath():
        raise NotImplementedError()

    def _generate_response(self, message):
        response = {}
        try:
            response['id'] = message['id']
            response['result'] = self.handlers.handle(
                method=str(message['method']),
                params=message.get('params', {}),
            )
        except UndefinedDomainError as e:
            response['error'] = 'Undefined domain: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except UndefinedHandlerError as e:
            response['error'] = 'Undefined handler: %s' % str(e)
            response['result'] = {}
            log_debug('Received message with %s' % response['error'])
        except Exception as e:
            response['error'] = repr(e)
            response['result'] = {}
            response['stack'] = traceback.format_exc()
            traceback.print_exc(file=sys.stderr)

        return response

    def received_message(self, message):
        log_debug('received_message: %s' % message.data)
        parsed = None
        try:
            parsed = json.loads(message.data)
        except Exception:
            # Print invalid JSON requests to stderr.
            log_error('Invalid JSON: %s' % message)

        response = self._generate_response(parsed)
        response_in_json = json.dumps(response)
        log_debug('response: %s' % response_in_json)
        self.send(response_in_json)

    def send_notification(self, method, params=None):
        """ Send a notification over the socket to a Chrome Dev Tools client.
        """
        notification_in_json = json.dumps({
            'method': method,
            'params': params
        })
        log_debug('send_notification: %s' % notification_in_json)
        self.send(notification_in_json)