Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: headless/lib/browser/domain_h.template

Issue 1904073002: headless: Move hidden commands and events to experimental domains (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // This file is generated 1 // This file is generated
2 2
3 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 3 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style license that can be 4 // Use of this source code is governed by a BSD-style license that can be
5 // found in the LICENSE file. 5 // found in the LICENSE file.
6 6
7 #ifndef HEADLESS_PUBLIC_DOMAINS_{{domain.domain | camelcase_to_hacker_style | up per}}_H_ 7 #ifndef HEADLESS_PUBLIC_DOMAINS_{{domain.domain | camelcase_to_hacker_style | up per}}_H_
8 #define HEADLESS_PUBLIC_DOMAINS_{{domain.domain | camelcase_to_hacker_style | up per}}_H_ 8 #define HEADLESS_PUBLIC_DOMAINS_{{domain.domain | camelcase_to_hacker_style | up per}}_H_
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/observer_list.h" 11 #include "base/observer_list.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "headless/public/domains/types.h" 13 #include "headless/public/domains/types.h"
14 #include "headless/public/headless_export.h" 14 #include "headless/public/headless_export.h"
15 #include "headless/public/internal/message_dispatcher.h" 15 #include "headless/public/internal/message_dispatcher.h"
16 16
17 {# Macro for defining a member function for a given command. #}
18 {% macro command_decl(command) %}
19 {% set method_name = command.name | to_title_case %}
20 {% if command.description %}
21 // {{ command.description }}
22 {% endif %}
23 {% if "parameters" in command and "returns" in command %}
24 void {{method_name}}(std::unique_ptr<{{method_name}}Params> params, base::Call back<void(std::unique_ptr<{{method_name}}Result>)> callback = base::Callback<voi d(std::unique_ptr<{{method_name}}Result>)>());
25 {% elif "parameters" in command %}
26 void {{method_name}}(std::unique_ptr<{{method_name}}Params> params, base::Call back<void()> callback = base::Callback<void()>());
27 {% elif "returns" in command %}
28 void {{method_name}}(base::Callback<void(std::unique_ptr<{{method_name}}Result >)> callback = base::Callback<void(std::unique_ptr<{{method_name}}Result>)>());
29 {% else %}
30 void {{method_name}}(base::Callback<void()> callback = base::Callback<void()>( ));
31 {% endif %}
32 {# Generate convenience methods that take the required parameters directly. #}
33 {% if "parameters" in command %}
34 void {{method_name}}({##}
35 {% for parameter in command.parameters -%}
36 {% if parameter.get("optional", False) -%}
37 {% break %}
38 {% endif %}
39 {% if not loop.first %}, {% endif %}
40 {{resolve_type(parameter).pass_type}} {{parameter.name | camelcase_to_hacker_sty le -}}
41 {% endfor %}
42 {% if "parameters" in command and not command.parameters[0].get("optional", False) %}, {% endif %}{# -#}
43 {% if "returns" in command -%}
44 base::Callback<void(std::unique_ptr<{{method_name}}Result>)> callback = ba se::Callback<void(std::unique_ptr<{{method_name}}Result>)>(){##}
45 {% else -%}
46 base::Callback<void()> callback = base::Callback<void()>(){##}
47 {% endif %});
48 {% endif %}
49 {% endmacro %}
50
17 namespace headless { 51 namespace headless {
18 namespace {{domain.domain | camelcase_to_hacker_style}} { 52 namespace {{domain.domain | camelcase_to_hacker_style}} {
53 class ExperimentalDomain;
54 class ExperimentalObserver;
19 {% if "events" in domain %} 55 {% if "events" in domain %}
20 class Observer { 56
57 class HEADLESS_EXPORT ExperimentalObserver {
21 public: 58 public:
22 virtual ~Observer() {} 59 virtual ~ExperimentalObserver() {}
23 {% for event in domain.events %} 60 {% for event in domain.events %}
61 {% if event.description %}
62 // {{event.description}}
63 {% endif %}
24 virtual void On{{event.name | to_title_case}}({# -#} 64 virtual void On{{event.name | to_title_case}}({# -#}
25 {% if "parameters" in event %}{# -#} 65 {% if "parameters" in event %}{# -#}
26 const {{event.name | to_title_case}}Params& params{# -#} 66 const {{event.name | to_title_case}}Params& params{# -#}
27 {% endif %}) {} 67 {% endif %}) {}
28 {% endfor %} 68 {% endfor %}
29 }; 69 };
70
71 class HEADLESS_EXPORT Observer : public ExperimentalObserver {
72 public:
73 virtual ~Observer() {}
74 {% for event in domain.events %}
75 {% if event.description %}
76 // {% if event.hidden %}Experimental: {% endif %}{{event.description}}
77 {% endif %}
78 virtual void On{{event.name | to_title_case}}({# -#}
79 {% if "parameters" in event %}{# -#}
80 const {{event.name | to_title_case}}Params& params{# -#}
81 {% endif %}) {% if event.hidden %}final {% endif %}{}
82 {% endfor %}
83 };
30 {% endif %} 84 {% endif %}
31 85
32 {% if domain.description %} 86 {% if domain.description %}
33 // {{domain.description}} 87 // {{domain.description}}
34 {% endif %} 88 {% endif %}
35 class HEADLESS_EXPORT Domain { 89 class HEADLESS_EXPORT Domain {
36 public: 90 public:
37 Domain(internal::MessageDispatcher* dispatcher);
38 ~Domain();
39
40 {% if "events" in domain %} 91 {% if "events" in domain %}
41 // Add or remove an observer. |observer| must be removed before being 92 // Add or remove an observer. |observer| must be removed before being
42 // destroyed. 93 // destroyed.
43 void AddObserver(Observer* observer); 94 void AddObserver(Observer* observer);
44 void RemoveObserver(Observer* observer); 95 void RemoveObserver(Observer* observer);
45 {% endif %} 96 {% endif %}
46 97
98 // Return the experimental interface for this domain. Note that experimental
99 // commands may be changed or removed at any time.
100 ExperimentalDomain* GetExperimental();
101
47 {# Generate methods for each command. #} 102 {# Generate methods for each command. #}
48 {% for command in domain.commands %} 103 {% for command in domain.commands %}
49 {# Skip redirected commands. #} 104 {# Skip redirected commands. #}
50 {% if "redirect" in command %}{% continue %}{% endif %} 105 {% if "redirect" in command %}{% continue %}{% endif %}
51 {% set method_name = command.name | to_title_case %} 106 {# Skip hidden commands. #}
52 {% if command.description %} 107 {% if command.hidden %}{% continue %}{% endif %}
53 // {{ command.description }} 108 {{ command_decl(command) }}
54 {% endif %}
55 {% if "parameters" in command and "returns" in command %}
56 void {{method_name}}(std::unique_ptr<{{method_name}}Params> params, base::Call back<void(std::unique_ptr<{{method_name}}Result>)> callback = base::Callback<voi d(std::unique_ptr<{{method_name}}Result>)>());
57 {% elif "parameters" in command %}
58 void {{method_name}}(std::unique_ptr<{{method_name}}Params> params, base::Call back<void()> callback = base::Callback<void()>());
59 {% elif "returns" in command %}
60 void {{method_name}}(base::Callback<void(std::unique_ptr<{{method_name}}Result >)> callback = base::Callback<void(std::unique_ptr<{{method_name}}Result>)>());
61 {% else %}
62 void {{method_name}}(base::Callback<void()> callback = base::Callback<void()>( ));
63 {% endif %}
64 {# Generate convenience methods that take the required parameters directly. #}
65 {% if not "parameters" in command %}{% continue %}{% endif %}
66 void {{method_name}}({##}
67 {% for parameter in command.parameters -%}
68 {% if parameter.get("optional", False) -%}
69 {% break %}
70 {% endif %}
71 {% if not loop.first %}, {% endif %}
72 {{resolve_type(parameter).pass_type}} {{parameter.name | camelcase_to_hacker_sty le -}}
73 {% endfor %}
74 {% if "parameters" in command and not command.parameters[0].get("optional", False) %}, {% endif %}{# -#}
75 {% if "returns" in command -%}
76 base::Callback<void(std::unique_ptr<{{method_name}}Result>)> callback = ba se::Callback<void(std::unique_ptr<{{method_name}}Result>)>(){##}
77 {% else -%}
78 base::Callback<void()> callback = base::Callback<void()>(){##}
79 {% endif %});
80 {% endfor %} 109 {% endfor %}
81 private: 110 protected:
111 Domain(internal::MessageDispatcher* dispatcher);
112 ~Domain();
113
82 {# Generate response handlers for commands that need them. #} 114 {# Generate response handlers for commands that need them. #}
83 {% for command in domain.commands %} 115 {% for command in domain.commands %}
84 {% if not "returns" in command %}{% continue %}{% endif %} 116 {% if not "returns" in command %}{% continue %}{% endif %}
85 {% set method_name = command.name | to_title_case %} 117 {% set method_name = command.name | to_title_case %}
86 static void Handle{{method_name}}Response(base::Callback<void(std::unique_ptr< {{method_name}}Result>)> callback, const base::Value& response); 118 static void Handle{{method_name}}Response(base::Callback<void(std::unique_ptr< {{method_name}}Result>)> callback, const base::Value& response);
87 {% endfor %} 119 {% endfor %}
88 120
89 {# Generate event dispatchers. #} 121 {# Generate event dispatchers. #}
90 {% for event in domain.events %} 122 {% for event in domain.events %}
91 void Dispatch{{event.name | to_title_case}}Event({# -#} 123 void Dispatch{{event.name | to_title_case}}Event({# -#}
92 {% if "parameters" in event %}{# -#} 124 {% if "parameters" in event %}{# -#}
93 const base::Value& params{# -#} 125 const base::Value& params{# -#}
94 {% endif %}); 126 {% endif %});
95 {% endfor %} 127 {% endfor %}
96 128
97 internal::MessageDispatcher* dispatcher_; // Not owned. 129 internal::MessageDispatcher* dispatcher_; // Not owned.
98 {% if "events" in domain %} 130 {% if "events" in domain %}
99 base::ObserverList<Observer> observers_; 131 base::ObserverList<ExperimentalObserver> observers_;
100 {% endif %} 132 {% endif %}
101 133
134 private:
102 DISALLOW_COPY_AND_ASSIGN(Domain); 135 DISALLOW_COPY_AND_ASSIGN(Domain);
103 }; 136 };
104 137
138 class ExperimentalDomain : public Domain {
139 public:
140 ExperimentalDomain(internal::MessageDispatcher* dispatcher);
141 ~ExperimentalDomain();
142
143 {% if "events" in domain %}
144 // Add or remove an observer. |observer| must be removed before being
145 // destroyed.
146 void AddObserver(ExperimentalObserver* observer);
147 void RemoveObserver(ExperimentalObserver* observer);
148 {% endif %}
149
150 {# Generate methods for each experimental command. #}
151 {% for command in domain.commands %}
152 {# Skip redirected commands. #}
153 {% if "redirect" in command %}{% continue %}{% endif %}
154 {# Skip non-hidden commands. #}
155 {% if not command.hidden %}{% continue %}{% endif %}
156 {{ command_decl(command) }}
157 {% endfor %}
158
159 private:
160 DISALLOW_COPY_AND_ASSIGN(ExperimentalDomain);
161 };
162
105 } // namespace {{domain.domain | camelcase_to_hacker_style}} 163 } // namespace {{domain.domain | camelcase_to_hacker_style}}
106 } // namespace headless 164 } // namespace headless
107 165
108 #endif // HEADLESS_PUBLIC_DOMAINS_{{domain.domain | camelcase_to_hacker_style | upper}}_H_ 166 #endif // HEADLESS_PUBLIC_DOMAINS_{{domain.domain | camelcase_to_hacker_style | upper}}_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698