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 virtual ~Notification();
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_