1 // Copyright (c) 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.
5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_H_
6 #define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_H_
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/values.h"
14 // Utility class for processing DevTools remote debugging messages.
15 // This is a stripped down clone of content::DevTools which is not accessible
16 // from chrome component (see content/browser/devtools/devtools_protocol.*).
17 class DevToolsProtocol {
25 std::string method() { return method_; }
26 base::DictionaryValue* params() { return params_.get(); }
29 Message(const std::string& method, base::DictionaryValue* params);
32 scoped_ptr<base::DictionaryValue> params_;
35 DISALLOW_COPY_AND_ASSIGN(Message);
38 class Command : public Message {
40 Command(int id, const std::string& method, base::DictionaryValue* params);
43 int id() { return id_; }
44 std::string Serialize();
46 // Creates success response. Takes ownership of |result|.
47 scoped_ptr<Response> SuccessResponse(base::DictionaryValue* result);
49 // Creates error response.
50 scoped_ptr<Response> InvalidParamResponse(const std::string& param);
55 DISALLOW_COPY_AND_ASSIGN(Command);
62 int id() { return id_; }
63 int error_code() { return error_code_; }
65 // Result ownership is passed to the caller.
66 base::DictionaryValue* Serialize();
69 friend class DevToolsProtocol;
71 Response(int id, int error_code, const std::string error_message);
72 Response(int id, base::DictionaryValue* result);
75 std::string error_message_;
76 scoped_ptr<base::DictionaryValue> result_;
78 DISALLOW_COPY_AND_ASSIGN(Response);
81 class Notification : public Message {
83 ~Notification() override;
86 friend class DevToolsProtocol;
88 // Takes ownership of |params|.
89 Notification(const std::string& method,
90 base::DictionaryValue* params);
92 DISALLOW_COPY_AND_ASSIGN(Notification);
95 // Result ownership is passed to the caller.
96 static Command* ParseCommand(base::DictionaryValue* command_dict);
98 // Result ownership is passed to the caller.
99 static Notification* ParseNotification(const std::string& json);
101 // Result ownership is passed to the caller.
102 static Response* ParseResponse(const std::string& json);
106 DevToolsProtocol() {}
107 ~DevToolsProtocol() {}
110 #endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_H_