13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_REMOTE_SERVICE_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_REMOTE_SERVICE_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/debugger/devtools_remote.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DevToolsRemoteMessage;
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DevToolsProtocolHandler;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DictionaryValue;
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Value;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Contains constants for DevToolsRemoteService tool protocol commands.
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct DevToolsRemoteServiceCommand {
193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  static const char kPing[];
203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  static const char kVersion[];
213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  static const char kListTabs[];
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Handles Chrome remote debugger protocol service commands.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DevToolsRemoteService : public DevToolsRemoteListener {
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit DevToolsRemoteService(DevToolsProtocolHandler* delegate);
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // DevToolsRemoteListener interface
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void HandleMessage(const DevToolsRemoteMessage& message);
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnConnectionLost() {}
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  static const char kToolName[];
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Operation result returned in the "result" field.
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  struct Result {
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    static const int kOk = 0;
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    static const int kUnknownCommand = 1;
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  };
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~DevToolsRemoteService();
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void ProcessJson(DictionaryValue* json, const DevToolsRemoteMessage& message);
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DevToolsProtocolHandler* delegate_;
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(DevToolsRemoteService);
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_DEBUGGER_DEVTOOLS_REMOTE_SERVICE_H_
48