Introduce ProfilerMetricsProvider
[chromium-blink-merge.git] / chrome / browser / devtools / devtools_protocol.h
blob68b09f2f25417353e9194fef2d943bc72c90f380
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_
8 #include <string>
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 {
18 public:
19 class Response;
21 class Message {
22 public:
23 virtual ~Message();
25 std::string method() { return method_; }
26 base::DictionaryValue* params() { return params_.get(); }
28 protected:
29 Message(const std::string& method, base::DictionaryValue* params);
31 std::string method_;
32 scoped_ptr<base::DictionaryValue> params_;
34 private:
35 DISALLOW_COPY_AND_ASSIGN(Message);
38 class Command : public Message {
39 public:
40 Command(int id, const std::string& method, base::DictionaryValue* params);
41 virtual ~Command();
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);
52 private:
53 int id_;
55 DISALLOW_COPY_AND_ASSIGN(Command);
58 class Response {
59 public:
60 virtual ~Response();
62 int id() { return id_; }
63 int error_code() { return error_code_; }
65 // Result ownership is passed to the caller.
66 base::DictionaryValue* Serialize();
68 private:
69 friend class DevToolsProtocol;
71 Response(int id, int error_code, const std::string error_message);
72 Response(int id, base::DictionaryValue* result);
73 int id_;
74 int error_code_;
75 std::string error_message_;
76 scoped_ptr<base::DictionaryValue> result_;
78 DISALLOW_COPY_AND_ASSIGN(Response);
81 class Notification : public Message {
82 public:
83 virtual ~Notification();
85 private:
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);
104 private:
106 DevToolsProtocol() {}
107 ~DevToolsProtocol() {}
110 #endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_H_