Web Inspector: the protocol generator should generate factory method stubs for protoc...
[WebKit-https.git] / Source / JavaScriptCore / inspector / scripts / tests / expected / commands-with-optional-call-return-parameters.json-result
1 ### Begin File: InspectorBackendCommands.js
2 /*
3  * Copyright (C) 2013 Google Inc. All rights reserved.
4  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
5  * Copyright (C) 2014 University of Washington. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26  * THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
30 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
31
32 // Database.
33 InspectorBackend.registerEnum("Database.PrimaryColors", {Red: "red", Green: "green", Blue: "blue"});
34 InspectorBackend.registerCommand("Database.executeAllOptionalParameters", [{"name": "columnNames", "type": "object", "optional": true}, {"name": "notes", "type": "string", "optional": true}, {"name": "timestamp", "type": "number", "optional": true}, {"name": "values", "type": "object", "optional": true}, {"name": "payload", "type": "object", "optional": true}, {"name": "databaseId", "type": "number", "optional": true}, {"name": "sqlError", "type": "object", "optional": true}, {"name": "screenColor", "type": "string", "optional": true}, {"name": "alternateColors", "type": "object", "optional": true}, {"name": "printColor", "type": "string", "optional": true}], ["columnNames", "notes", "timestamp", "values", "payload", "databaseId", "sqlError", "screenColor", "alternateColors", "printColor"]);
35 InspectorBackend.registerCommand("Database.executeNoOptionalParameters", [{"name": "columnNames", "type": "object", "optional": false}, {"name": "notes", "type": "string", "optional": false}, {"name": "timestamp", "type": "number", "optional": false}, {"name": "values", "type": "object", "optional": false}, {"name": "payload", "type": "object", "optional": false}, {"name": "databaseId", "type": "number", "optional": false}, {"name": "sqlError", "type": "object", "optional": false}, {"name": "screenColor", "type": "string", "optional": false}, {"name": "alternateColors", "type": "object", "optional": false}, {"name": "printColor", "type": "string", "optional": false}], ["columnNames", "notes", "timestamp", "values", "payload", "databaseId", "sqlError", "screenColor", "alternateColors", "printColor"]);
36 InspectorBackend.activateDomain("Database");
37 ### End File: InspectorBackendCommands.js
38
39 ### Begin File: InspectorAlternateBackendDispatchers.h
40 /*
41  * Copyright (C) 2013 Google Inc. All rights reserved.
42  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
43  * Copyright (C) 2014 University of Washington. All rights reserved.
44  *
45  * Redistribution and use in source and binary forms, with or without
46  * modification, are permitted provided that the following conditions
47  * are met:
48  * 1. Redistributions of source code must retain the above copyright
49  *    notice, this list of conditions and the following disclaimer.
50  * 2. Redistributions in binary form must reproduce the above copyright
51  *    notice, this list of conditions and the following disclaimer in the
52  *    documentation and/or other materials provided with the distribution.
53  *
54  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
55  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
56  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
58  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
59  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
60  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
61  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
62  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
63  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
64  * THE POSSIBILITY OF SUCH DAMAGE.
65  */
66
67 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
68 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
69
70 #ifndef InspectorAlternateBackendDispatchers_h
71 #define InspectorAlternateBackendDispatchers_h
72
73 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
74
75 #include "InspectorProtocolTypes.h"
76 #include <inspector/InspectorFrontendRouter.h>
77 #include <JavaScriptCore/InspectorBackendDispatcher.h>
78
79 namespace Inspector {
80
81 class AlternateBackendDispatcher {
82 public:
83     void setBackendDispatcher(RefPtr<BackendDispatcher>&& dispatcher) { m_backendDispatcher = WTFMove(dispatcher); }
84     BackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
85 private:
86     RefPtr<BackendDispatcher> m_backendDispatcher;
87 };
88
89
90 class AlternateDatabaseBackendDispatcher : public AlternateBackendDispatcher {
91 public:
92     virtual ~AlternateDatabaseBackendDispatcher() { }
93     virtual void executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor) = 0;
94     virtual void executeNoOptionalParameters(long callId, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor) = 0;
95 };
96
97 } // namespace Inspector
98
99 #endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
100
101 #endif // !defined(InspectorAlternateBackendDispatchers_h)
102 ### End File: InspectorAlternateBackendDispatchers.h
103
104 ### Begin File: InspectorBackendDispatchers.h
105 /*
106  * Copyright (C) 2013 Google Inc. All rights reserved.
107  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
108  * Copyright (C) 2014 University of Washington. All rights reserved.
109  *
110  * Redistribution and use in source and binary forms, with or without
111  * modification, are permitted provided that the following conditions
112  * are met:
113  * 1. Redistributions of source code must retain the above copyright
114  *    notice, this list of conditions and the following disclaimer.
115  * 2. Redistributions in binary form must reproduce the above copyright
116  *    notice, this list of conditions and the following disclaimer in the
117  *    documentation and/or other materials provided with the distribution.
118  *
119  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
120  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
121  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
122  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
123  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
124  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
125  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
126  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
127  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
128  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
129  * THE POSSIBILITY OF SUCH DAMAGE.
130  */
131
132 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
133 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
134
135 #ifndef InspectorBackendDispatchers_h
136 #define InspectorBackendDispatchers_h
137
138 #include "InspectorProtocolObjects.h"
139 #include <inspector/InspectorBackendDispatcher.h>
140 #include <wtf/text/WTFString.h>
141
142 namespace Inspector {
143
144 typedef String ErrorString;
145
146 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
147 class AlternateDatabaseBackendDispatcher;
148 #endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
149
150 class DatabaseBackendDispatcherHandler {
151 public:
152     // Named after parameter 'screenColor' while generating command/event executeAllOptionalParameters.
153     enum class ScreenColor {
154         Red = 0,
155         Green = 1,
156         Blue = 2,
157     }; // enum class ScreenColor
158     // Named after parameter 'printColor' while generating command/event executeAllOptionalParameters.
159     enum class PrintColor {
160         Cyan = 3,
161         Magenta = 4,
162         Yellow = 5,
163         Black = 6,
164     }; // enum class PrintColor
165     virtual void executeAllOptionalParameters(ErrorString&, const Inspector::InspectorArray* opt_in_columnNames, const String* opt_in_notes, const double* opt_in_timestamp, const Inspector::InspectorObject* opt_in_values, const Inspector::InspectorValue* opt_in_payload, const int* opt_in_databaseId, const Inspector::InspectorObject* opt_in_sqlError, const String* opt_in_screenColor, const Inspector::InspectorArray* opt_in_alternateColors, const String* opt_in_printColor, RefPtr<Inspector::Protocol::Array<String>>& opt_out_columnNames, Inspector::Protocol::OptOutput<String>* opt_out_notes, Inspector::Protocol::OptOutput<double>* opt_out_timestamp, Inspector::Protocol::OptOutput<Inspector::InspectorObject>* opt_out_values, Inspector::Protocol::OptOutput<Inspector::InspectorValue>* opt_out_payload, Inspector::Protocol::OptOutput<int>* opt_out_databaseId, RefPtr<Inspector::Protocol::Database::Error>& opt_out_sqlError, Inspector::Protocol::Database::PrimaryColors* opt_out_screenColor, RefPtr<Inspector::Protocol::Database::ColorList>& opt_out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
166     virtual void executeNoOptionalParameters(ErrorString&, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor, RefPtr<Inspector::Protocol::Array<String>>& out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr<Inspector::Protocol::Database::Error>& out_sqlError, Inspector::Protocol::Database::PrimaryColors* out_screenColor, RefPtr<Inspector::Protocol::Database::ColorList>& out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
167 protected:
168     virtual ~DatabaseBackendDispatcherHandler();
169 };
170
171 class DatabaseBackendDispatcher final : public SupplementalBackendDispatcher {
172 public:
173     static Ref<DatabaseBackendDispatcher> create(BackendDispatcher&, DatabaseBackendDispatcherHandler*);
174     void dispatch(long requestId, const String& method, Ref<InspectorObject>&& message) override;
175 private:
176     void executeAllOptionalParameters(long requestId, RefPtr<InspectorObject>&& parameters);
177     void executeNoOptionalParameters(long requestId, RefPtr<InspectorObject>&& parameters);
178 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
179 public:
180     void setAlternateDispatcher(AlternateDatabaseBackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
181 private:
182     AlternateDatabaseBackendDispatcher* m_alternateDispatcher { nullptr };
183 #endif
184 private:
185     DatabaseBackendDispatcher(BackendDispatcher&, DatabaseBackendDispatcherHandler*);
186     DatabaseBackendDispatcherHandler* m_agent { nullptr };
187 };
188
189 } // namespace Inspector
190
191 #endif // !defined(InspectorBackendDispatchers_h)
192 ### End File: InspectorBackendDispatchers.h
193
194 ### Begin File: InspectorBackendDispatchers.cpp
195 /*
196  * Copyright (C) 2013 Google Inc. All rights reserved.
197  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
198  * Copyright (C) 2014 University of Washington. All rights reserved.
199  *
200  * Redistribution and use in source and binary forms, with or without
201  * modification, are permitted provided that the following conditions
202  * are met:
203  * 1. Redistributions of source code must retain the above copyright
204  *    notice, this list of conditions and the following disclaimer.
205  * 2. Redistributions in binary form must reproduce the above copyright
206  *    notice, this list of conditions and the following disclaimer in the
207  *    documentation and/or other materials provided with the distribution.
208  *
209  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
210  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
211  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
212  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
213  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
214  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
215  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
216  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
217  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
218  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
219  * THE POSSIBILITY OF SUCH DAMAGE.
220  */
221
222 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
223 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
224
225 #include "config.h"
226 #include "InspectorBackendDispatchers.h"
227
228 #include <inspector/InspectorFrontendRouter.h>
229 #include <inspector/InspectorValues.h>
230 #include <wtf/NeverDestroyed.h>
231 #include <wtf/text/CString.h>
232
233 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
234 #include "InspectorAlternateBackendDispatchers.h"
235 #endif
236
237 namespace Inspector {
238
239 DatabaseBackendDispatcherHandler::~DatabaseBackendDispatcherHandler() { }
240
241 Ref<DatabaseBackendDispatcher> DatabaseBackendDispatcher::create(BackendDispatcher& backendDispatcher, DatabaseBackendDispatcherHandler* agent)
242 {
243     return adoptRef(*new DatabaseBackendDispatcher(backendDispatcher, agent));
244 }
245
246 DatabaseBackendDispatcher::DatabaseBackendDispatcher(BackendDispatcher& backendDispatcher, DatabaseBackendDispatcherHandler* agent)
247     : SupplementalBackendDispatcher(backendDispatcher)
248     , m_agent(agent)
249 {
250     m_backendDispatcher->registerDispatcherForDomain(ASCIILiteral("Database"), this);
251 }
252
253 void DatabaseBackendDispatcher::dispatch(long requestId, const String& method, Ref<InspectorObject>&& message)
254 {
255     Ref<DatabaseBackendDispatcher> protect(*this);
256
257     RefPtr<InspectorObject> parameters;
258     message->getObject(ASCIILiteral("params"), parameters);
259
260     if (method == "executeAllOptionalParameters")
261         executeAllOptionalParameters(requestId, WTFMove(parameters));
262     else if (method == "executeNoOptionalParameters")
263         executeNoOptionalParameters(requestId, WTFMove(parameters));
264     else
265         m_backendDispatcher->reportProtocolError(BackendDispatcher::MethodNotFound, makeString('\'', "Database", '.', method, "' was not found"));
266 }
267
268 void DatabaseBackendDispatcher::executeAllOptionalParameters(long requestId, RefPtr<InspectorObject>&& parameters)
269 {
270     bool opt_in_columnNames_valueFound = false;
271     RefPtr<Inspector::InspectorArray> opt_in_columnNames = m_backendDispatcher->getArray(parameters.get(), ASCIILiteral("columnNames"), &opt_in_columnNames_valueFound);
272     bool opt_in_notes_valueFound = false;
273     String opt_in_notes = m_backendDispatcher->getString(parameters.get(), ASCIILiteral("notes"), &opt_in_notes_valueFound);
274     bool opt_in_timestamp_valueFound = false;
275     Inspector::Protocol::OptOutput<double> opt_in_timestamp = m_backendDispatcher->getDouble(parameters.get(), ASCIILiteral("timestamp"), &opt_in_timestamp_valueFound);
276     bool opt_in_values_valueFound = false;
277     RefPtr<Inspector::InspectorObject> opt_in_values = m_backendDispatcher->getObject(parameters.get(), ASCIILiteral("values"), &opt_in_values_valueFound);
278     bool opt_in_payload_valueFound = false;
279     RefPtr<Inspector::InspectorValue> opt_in_payload = m_backendDispatcher->getValue(parameters.get(), ASCIILiteral("payload"), &opt_in_payload_valueFound);
280     bool opt_in_databaseId_valueFound = false;
281     int opt_in_databaseId = m_backendDispatcher->getInteger(parameters.get(), ASCIILiteral("databaseId"), &opt_in_databaseId_valueFound);
282     bool opt_in_sqlError_valueFound = false;
283     RefPtr<Inspector::InspectorObject> opt_in_sqlError = m_backendDispatcher->getObject(parameters.get(), ASCIILiteral("sqlError"), &opt_in_sqlError_valueFound);
284     bool opt_in_screenColor_valueFound = false;
285     String opt_in_screenColor = m_backendDispatcher->getString(parameters.get(), ASCIILiteral("screenColor"), &opt_in_screenColor_valueFound);
286     bool opt_in_alternateColors_valueFound = false;
287     RefPtr<Inspector::InspectorArray> opt_in_alternateColors = m_backendDispatcher->getArray(parameters.get(), ASCIILiteral("alternateColors"), &opt_in_alternateColors_valueFound);
288     bool opt_in_printColor_valueFound = false;
289     String opt_in_printColor = m_backendDispatcher->getString(parameters.get(), ASCIILiteral("printColor"), &opt_in_printColor_valueFound);
290     if (m_backendDispatcher->hasProtocolErrors()) {
291         m_backendDispatcher->reportProtocolError(BackendDispatcher::InvalidParams, String::format("Some arguments of method '%s' can't be processed", "Database.executeAllOptionalParameters"));
292         return;
293     }
294
295 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
296     if (m_alternateDispatcher) {
297         m_alternateDispatcher->executeAllOptionalParameters(requestId, opt_in_columnNames_valueFound ? opt_in_columnNames.get() : nullptr, opt_in_notes_valueFound ? &opt_in_notes : nullptr, opt_in_timestamp_valueFound ? &opt_in_timestamp : nullptr, opt_in_values_valueFound ? opt_in_values.get() : nullptr, opt_in_payload_valueFound ? opt_in_payload.get() : nullptr, opt_in_databaseId_valueFound ? &opt_in_databaseId : nullptr, opt_in_sqlError_valueFound ? opt_in_sqlError.get() : nullptr, opt_in_screenColor_valueFound ? &opt_in_screenColor : nullptr, opt_in_alternateColors_valueFound ? opt_in_alternateColors.get() : nullptr, opt_in_printColor_valueFound ? &opt_in_printColor : nullptr);
298         return;
299     }
300 #endif
301
302     ErrorString error;
303     Ref<InspectorObject> result = InspectorObject::create();
304     RefPtr<Inspector::Protocol::Array<String>> out_columnNames;
305     Inspector::Protocol::OptOutput<String> out_notes;
306     Inspector::Protocol::OptOutput<double> out_timestamp;
307     Inspector::Protocol::OptOutput<Inspector::InspectorObject> out_values;
308     Inspector::Protocol::OptOutput<Inspector::InspectorValue> out_payload;
309     Inspector::Protocol::OptOutput<Inspector::Protocol::Database::DatabaseId> out_databaseId;
310     RefPtr<Inspector::Protocol::Database::Error> out_sqlError;
311     Inspector::Protocol::Database::PrimaryColors out_screenColor;
312     RefPtr<Inspector::Protocol::Database::ColorList> out_alternateColors;
313     DatabaseBackendDispatcherHandler::PrintColor out_printColor;
314     m_agent->executeAllOptionalParameters(error, opt_in_columnNames_valueFound ? opt_in_columnNames.get() : nullptr, opt_in_notes_valueFound ? &opt_in_notes : nullptr, opt_in_timestamp_valueFound ? &opt_in_timestamp : nullptr, opt_in_values_valueFound ? opt_in_values.get() : nullptr, opt_in_payload_valueFound ? opt_in_payload.get() : nullptr, opt_in_databaseId_valueFound ? &opt_in_databaseId : nullptr, opt_in_sqlError_valueFound ? opt_in_sqlError.get() : nullptr, opt_in_screenColor_valueFound ? &opt_in_screenColor : nullptr, opt_in_alternateColors_valueFound ? opt_in_alternateColors.get() : nullptr, opt_in_printColor_valueFound ? &opt_in_printColor : nullptr, out_columnNames, &out_notes, &out_timestamp, out_values, &out_payload, &out_databaseId, out_sqlError, &out_screenColor, out_alternateColors, &out_printColor);
315
316     if (!error.length()) {
317         if (out_columnNames)
318             result->setArray(ASCIILiteral("columnNames"), out_columnNames);
319         if (out_notes.isAssigned())
320             result->setString(ASCIILiteral("notes"), out_notes.getValue());
321         if (out_timestamp.isAssigned())
322             result->setDouble(ASCIILiteral("timestamp"), out_timestamp.getValue());
323         if (out_values.isAssigned())
324             result->setObject(ASCIILiteral("values"), out_values.getValue());
325         if (out_payload.isAssigned())
326             result->setValue(ASCIILiteral("payload"), out_payload.getValue());
327         if (out_databaseId.isAssigned())
328             result->setInteger(ASCIILiteral("databaseId"), out_databaseId.getValue());
329         if (out_sqlError)
330             result->setObject(ASCIILiteral("sqlError"), out_sqlError);
331         if (out_screenColor.isAssigned())
332             result->setString(ASCIILiteral("screenColor"), out_screenColor.getValue());
333         if (out_alternateColors)
334             result->setArray(ASCIILiteral("alternateColors"), out_alternateColors);
335         if (out_printColor.isAssigned())
336             result->setString(ASCIILiteral("printColor"), out_printColor.getValue());
337     }
338     if (!error.length())
339         m_backendDispatcher->sendResponse(requestId, WTFMove(result));
340     else
341         m_backendDispatcher->reportProtocolError(BackendDispatcher::ServerError, WTFMove(error));
342 }
343
344 void DatabaseBackendDispatcher::executeNoOptionalParameters(long requestId, RefPtr<InspectorObject>&& parameters)
345 {
346     RefPtr<Inspector::InspectorArray> in_columnNames = m_backendDispatcher->getArray(parameters.get(), ASCIILiteral("columnNames"), nullptr);
347     String in_notes = m_backendDispatcher->getString(parameters.get(), ASCIILiteral("notes"), nullptr);
348     double in_timestamp = m_backendDispatcher->getDouble(parameters.get(), ASCIILiteral("timestamp"), nullptr);
349     RefPtr<Inspector::InspectorObject> in_values = m_backendDispatcher->getObject(parameters.get(), ASCIILiteral("values"), nullptr);
350     RefPtr<Inspector::InspectorValue> in_payload = m_backendDispatcher->getValue(parameters.get(), ASCIILiteral("payload"), nullptr);
351     int in_databaseId = m_backendDispatcher->getInteger(parameters.get(), ASCIILiteral("databaseId"), nullptr);
352     RefPtr<Inspector::InspectorObject> in_sqlError = m_backendDispatcher->getObject(parameters.get(), ASCIILiteral("sqlError"), nullptr);
353     String in_screenColor = m_backendDispatcher->getString(parameters.get(), ASCIILiteral("screenColor"), nullptr);
354     RefPtr<Inspector::InspectorArray> in_alternateColors = m_backendDispatcher->getArray(parameters.get(), ASCIILiteral("alternateColors"), nullptr);
355     String in_printColor = m_backendDispatcher->getString(parameters.get(), ASCIILiteral("printColor"), nullptr);
356     if (m_backendDispatcher->hasProtocolErrors()) {
357         m_backendDispatcher->reportProtocolError(BackendDispatcher::InvalidParams, String::format("Some arguments of method '%s' can't be processed", "Database.executeNoOptionalParameters"));
358         return;
359     }
360
361 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
362     if (m_alternateDispatcher) {
363         m_alternateDispatcher->executeNoOptionalParameters(requestId, *in_columnNames, in_notes, in_timestamp, *in_values, *in_payload, in_databaseId, *in_sqlError, in_screenColor, *in_alternateColors, in_printColor);
364         return;
365     }
366 #endif
367
368     ErrorString error;
369     Ref<InspectorObject> result = InspectorObject::create();
370     RefPtr<Inspector::Protocol::Array<String>> out_columnNames;
371     String out_notes;
372     double out_timestamp;
373     Inspector::InspectorObject out_values;
374     Inspector::InspectorValue out_payload;
375     Inspector::Protocol::Database::DatabaseId out_databaseId;
376     RefPtr<Inspector::Protocol::Database::Error> out_sqlError;
377     Inspector::Protocol::Database::PrimaryColors out_screenColor;
378     RefPtr<Inspector::Protocol::Database::ColorList> out_alternateColors;
379     DatabaseBackendDispatcherHandler::PrintColor out_printColor;
380     m_agent->executeNoOptionalParameters(error, *in_columnNames, in_notes, in_timestamp, *in_values, *in_payload, in_databaseId, *in_sqlError, in_screenColor, *in_alternateColors, in_printColor, out_columnNames, &out_notes, &out_timestamp, out_values, &out_payload, &out_databaseId, out_sqlError, &out_screenColor, out_alternateColors, &out_printColor);
381
382     if (!error.length()) {
383         result->setArray(ASCIILiteral("columnNames"), out_columnNames);
384         result->setString(ASCIILiteral("notes"), out_notes);
385         result->setDouble(ASCIILiteral("timestamp"), out_timestamp);
386         result->setObject(ASCIILiteral("values"), out_values);
387         result->setValue(ASCIILiteral("payload"), out_payload);
388         result->setInteger(ASCIILiteral("databaseId"), out_databaseId);
389         result->setObject(ASCIILiteral("sqlError"), out_sqlError);
390         result->setString(ASCIILiteral("screenColor"), Inspector::Protocol::getEnumConstantValue(out_screenColor));
391         result->setArray(ASCIILiteral("alternateColors"), out_alternateColors);
392         result->setString(ASCIILiteral("printColor"), Inspector::Protocol::getEnumConstantValue(out_printColor));
393     }
394     if (!error.length())
395         m_backendDispatcher->sendResponse(requestId, WTFMove(result));
396     else
397         m_backendDispatcher->reportProtocolError(BackendDispatcher::ServerError, WTFMove(error));
398 }
399
400 } // namespace Inspector
401
402 ### End File: InspectorBackendDispatchers.cpp
403
404 ### Begin File: InspectorFrontendDispatchers.h
405 /*
406  * Copyright (C) 2013 Google Inc. All rights reserved.
407  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
408  * Copyright (C) 2014 University of Washington. All rights reserved.
409  *
410  * Redistribution and use in source and binary forms, with or without
411  * modification, are permitted provided that the following conditions
412  * are met:
413  * 1. Redistributions of source code must retain the above copyright
414  *    notice, this list of conditions and the following disclaimer.
415  * 2. Redistributions in binary form must reproduce the above copyright
416  *    notice, this list of conditions and the following disclaimer in the
417  *    documentation and/or other materials provided with the distribution.
418  *
419  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
420  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
421  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
422  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
423  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
424  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
425  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
426  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
427  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
428  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
429  * THE POSSIBILITY OF SUCH DAMAGE.
430  */
431
432 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
433 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
434
435 #ifndef InspectorFrontendDispatchers_h
436 #define InspectorFrontendDispatchers_h
437
438 #include "InspectorProtocolObjects.h"
439 #include <inspector/InspectorValues.h>
440 #include <wtf/text/WTFString.h>
441
442 namespace Inspector {
443
444 class FrontendRouter;
445
446 } // namespace Inspector
447
448 #endif // !defined(InspectorFrontendDispatchers_h)
449 ### End File: InspectorFrontendDispatchers.h
450
451 ### Begin File: InspectorFrontendDispatchers.cpp
452 /*
453  * Copyright (C) 2013 Google Inc. All rights reserved.
454  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
455  * Copyright (C) 2014 University of Washington. All rights reserved.
456  *
457  * Redistribution and use in source and binary forms, with or without
458  * modification, are permitted provided that the following conditions
459  * are met:
460  * 1. Redistributions of source code must retain the above copyright
461  *    notice, this list of conditions and the following disclaimer.
462  * 2. Redistributions in binary form must reproduce the above copyright
463  *    notice, this list of conditions and the following disclaimer in the
464  *    documentation and/or other materials provided with the distribution.
465  *
466  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
467  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
468  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
469  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
470  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
471  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
472  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
473  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
474  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
475  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
476  * THE POSSIBILITY OF SUCH DAMAGE.
477  */
478
479 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
480 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
481
482 #include "config.h"
483 #include "InspectorFrontendDispatchers.h"
484
485 #include "InspectorFrontendRouter.h"
486 #include <wtf/text/CString.h>
487
488 namespace Inspector {
489
490 } // namespace Inspector
491
492 ### End File: InspectorFrontendDispatchers.cpp
493
494 ### Begin File: InspectorProtocolObjects.h
495 /*
496  * Copyright (C) 2013 Google Inc. All rights reserved.
497  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
498  * Copyright (C) 2014 University of Washington. All rights reserved.
499  *
500  * Redistribution and use in source and binary forms, with or without
501  * modification, are permitted provided that the following conditions
502  * are met:
503  * 1. Redistributions of source code must retain the above copyright
504  *    notice, this list of conditions and the following disclaimer.
505  * 2. Redistributions in binary form must reproduce the above copyright
506  *    notice, this list of conditions and the following disclaimer in the
507  *    documentation and/or other materials provided with the distribution.
508  *
509  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
510  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
511  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
512  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
513  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
514  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
515  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
516  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
517  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
518  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
519  * THE POSSIBILITY OF SUCH DAMAGE.
520  */
521
522 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
523 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
524
525 #ifndef InspectorProtocolObjects_h
526 #define InspectorProtocolObjects_h
527
528 #include <inspector/InspectorProtocolTypes.h>
529 #include <wtf/Assertions.h>
530
531 namespace Inspector {
532
533
534
535 namespace Protocol {
536
537 // Forward declarations.
538 namespace Database {
539 class Error;
540 enum class PrimaryColors;
541 } // Database
542 // End of forward declarations.
543
544
545 // Typedefs.
546 namespace Database {
547 /* Unique identifier of Database object. */
548 typedef int DatabaseId;
549 typedef Inspector::Protocol::Array<Inspector::Protocol::Database::PrimaryColors> ColorList;
550 } // Database
551 // End of typedefs.
552
553 String getEnumConstantValue(int code);
554
555 template<typename T> String getEnumConstantValue(T enumValue)
556 {
557     return getEnumConstantValue(static_cast<int>(enumValue));
558 }
559
560 namespace Database {
561 /*  */
562 enum class PrimaryColors {
563     Red = 0,
564     Green = 1,
565     Blue = 2,
566 }; // enum class PrimaryColors
567 /* Database error. */
568 class Error : public Inspector::InspectorObjectBase {
569 public:
570     enum {
571         NoFieldsSet = 0,
572         MessageSet = 1 << 0,
573         CodeSet = 1 << 1,
574         AllFieldsSet = (MessageSet | CodeSet)
575     };
576
577     template<int STATE>
578     class Builder {
579     private:
580         RefPtr<InspectorObject> m_result;
581
582         template<int STEP> Builder<STATE | STEP>& castState()
583         {
584             return *reinterpret_cast<Builder<STATE | STEP>*>(this);
585         }
586
587         Builder(Ref</*Error*/InspectorObject>&& object)
588             : m_result(WTFMove(object))
589         {
590             COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
591         }
592         friend class Error;
593     public:
594
595         Builder<STATE | MessageSet>& setMessage(const String& value)
596         {
597             COMPILE_ASSERT(!(STATE & MessageSet), property_message_already_set);
598             m_result->setString(ASCIILiteral("message"), value);
599             return castState<MessageSet>();
600         }
601
602         Builder<STATE | CodeSet>& setCode(int value)
603         {
604             COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
605             m_result->setInteger(ASCIILiteral("code"), value);
606             return castState<CodeSet>();
607         }
608
609         Ref<Error> release()
610         {
611             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
612             COMPILE_ASSERT(sizeof(Error) == sizeof(InspectorObject), cannot_cast);
613
614             Ref<InspectorObject> result = m_result.releaseNonNull();
615             return WTFMove(*reinterpret_cast<Ref<Error>*>(&result));
616         }
617     };
618
619     /*
620      * Synthetic constructor:
621      * Ref<Error> result = Error::create()
622      *     .setMessage(...)
623      *     .setCode(...)
624      *     .release();
625      */
626     static Builder<NoFieldsSet> create()
627     {
628         return Builder<NoFieldsSet>(InspectorObject::create());
629     }
630 };
631
632 } // Database
633
634
635
636 } // namespace Protocol
637
638 } // namespace Inspector
639
640 #endif // !defined(InspectorProtocolObjects_h)
641 ### End File: InspectorProtocolObjects.h
642
643 ### Begin File: InspectorProtocolObjects.cpp
644 /*
645  * Copyright (C) 2013 Google Inc. All rights reserved.
646  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
647  * Copyright (C) 2014 University of Washington. All rights reserved.
648  *
649  * Redistribution and use in source and binary forms, with or without
650  * modification, are permitted provided that the following conditions
651  * are met:
652  * 1. Redistributions of source code must retain the above copyright
653  *    notice, this list of conditions and the following disclaimer.
654  * 2. Redistributions in binary form must reproduce the above copyright
655  *    notice, this list of conditions and the following disclaimer in the
656  *    documentation and/or other materials provided with the distribution.
657  *
658  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
659  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
660  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
661  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
662  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
663  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
664  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
665  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
666  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
667  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
668  * THE POSSIBILITY OF SUCH DAMAGE.
669  */
670
671 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
672 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
673
674 #include "config.h"
675 #include "InspectorProtocolObjects.h"
676
677 #include <wtf/text/CString.h>
678
679 namespace Inspector {
680
681 namespace Protocol {
682
683 static const char* const enum_constant_values[] = {
684     "red",
685     "green",
686     "blue",
687     "cyan",
688     "magenta",
689     "yellow",
690     "black",
691 };
692
693 String getEnumConstantValue(int code) {
694     return enum_constant_values[code];
695 }
696
697
698
699 } // namespace Protocol
700
701 } // namespace Inspector
702
703 ### End File: InspectorProtocolObjects.cpp
704
705 ### Begin File: TestProtocolBackendDispatchers.h
706 /*
707  * Copyright (C) 2013 Google Inc. All rights reserved.
708  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
709  * Copyright (C) 2014 University of Washington. All rights reserved.
710  *
711  * Redistribution and use in source and binary forms, with or without
712  * modification, are permitted provided that the following conditions
713  * are met:
714  * 1. Redistributions of source code must retain the above copyright
715  *    notice, this list of conditions and the following disclaimer.
716  * 2. Redistributions in binary form must reproduce the above copyright
717  *    notice, this list of conditions and the following disclaimer in the
718  *    documentation and/or other materials provided with the distribution.
719  *
720  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
721  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
722  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
723  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
724  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
725  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
726  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
727  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
728  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
729  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
730  * THE POSSIBILITY OF SUCH DAMAGE.
731  */
732
733 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
734 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
735
736 #include <JavaScriptCore/InspectorAlternateBackendDispatchers.h>
737 #include <wtf/RetainPtr.h>
738
739 @protocol TestProtocolDatabaseDomainHandler;
740
741 namespace Inspector {
742
743
744 class ObjCInspectorDatabaseBackendDispatcher final : public AlternateDatabaseBackendDispatcher {
745 public:
746     ObjCInspectorDatabaseBackendDispatcher(id<TestProtocolDatabaseDomainHandler> handler) { m_delegate = handler; }
747     virtual void executeAllOptionalParameters(long requestId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor) override;
748     virtual void executeNoOptionalParameters(long requestId, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor) override;
749 private:
750     RetainPtr<id<TestProtocolDatabaseDomainHandler>> m_delegate;
751 };
752
753 } // namespace Inspector
754
755 ### End File: TestProtocolBackendDispatchers.h
756
757 ### Begin File: TestProtocolConfiguration.mm
758 /*
759  * Copyright (C) 2013 Google Inc. All rights reserved.
760  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
761  * Copyright (C) 2014 University of Washington. All rights reserved.
762  *
763  * Redistribution and use in source and binary forms, with or without
764  * modification, are permitted provided that the following conditions
765  * are met:
766  * 1. Redistributions of source code must retain the above copyright
767  *    notice, this list of conditions and the following disclaimer.
768  * 2. Redistributions in binary form must reproduce the above copyright
769  *    notice, this list of conditions and the following disclaimer in the
770  *    documentation and/or other materials provided with the distribution.
771  *
772  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
773  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
774  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
775  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
776  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
777  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
778  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
779  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
780  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
781  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
782  * THE POSSIBILITY OF SUCH DAMAGE.
783  */
784
785 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
786 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
787
788 #import "config.h"
789 #import "TestProtocolConfiguration.h"
790
791 #import "TestProtocolInternal.h"
792 #import "TestProtocolBackendDispatchers.h"
793 #import <JavaScriptCore/AlternateDispatchableAgent.h>
794 #import <JavaScriptCore/AugmentableInspectorController.h>
795 #import <JavaScriptCore/InspectorAlternateBackendDispatchers.h>
796 #import <JavaScriptCore/InspectorBackendDispatchers.h>
797
798 using namespace Inspector;
799
800 @implementation TestProtocolConfiguration
801 {
802     AugmentableInspectorController* _controller;
803     id<TestProtocolDatabaseDomainHandler> _databaseHandler;
804 }
805
806 - (instancetype)initWithController:(AugmentableInspectorController*)controller
807 {
808     self = [super init];
809     if (!self)
810         return nil;
811     ASSERT(controller);
812     _controller = controller;
813     return self;
814 }
815
816 - (void)dealloc
817 {
818     [_databaseHandler release];
819     [super dealloc];
820 }
821
822 - (void)setDatabaseHandler:(id<TestProtocolDatabaseDomainHandler>)handler
823 {
824     if (handler == _databaseHandler)
825         return;
826
827     [_databaseHandler release];
828     _databaseHandler = [handler retain];
829
830     auto alternateDispatcher = std::make_unique<ObjCInspectorDatabaseBackendDispatcher>(handler);
831     auto alternateAgent = std::make_unique<AlternateDispatchableAgent<DatabaseBackendDispatcher, AlternateDatabaseBackendDispatcher>>(ASCIILiteral("Database"), *_controller, WTFMove(alternateDispatcher));
832     _controller->appendExtraAgent(WTFMove(alternateAgent));
833 }
834
835 - (id<TestProtocolDatabaseDomainHandler>)databaseHandler
836 {
837     return _databaseHandler;
838 }
839
840 @end
841
842
843 ### End File: TestProtocolConfiguration.mm
844
845 ### Begin File: TestProtocolConfiguration.h
846 /*
847  * Copyright (C) 2013 Google Inc. All rights reserved.
848  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
849  * Copyright (C) 2014 University of Washington. All rights reserved.
850  *
851  * Redistribution and use in source and binary forms, with or without
852  * modification, are permitted provided that the following conditions
853  * are met:
854  * 1. Redistributions of source code must retain the above copyright
855  *    notice, this list of conditions and the following disclaimer.
856  * 2. Redistributions in binary form must reproduce the above copyright
857  *    notice, this list of conditions and the following disclaimer in the
858  *    documentation and/or other materials provided with the distribution.
859  *
860  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
861  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
862  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
863  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
864  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
865  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
866  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
867  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
868  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
869  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
870  * THE POSSIBILITY OF SUCH DAMAGE.
871  */
872
873 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
874 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
875
876 #import <WebInspector/TestProtocol.h>
877
878 __attribute__((visibility ("default")))
879 @interface TestProtocolConfiguration : NSObject
880 @property (nonatomic, retain, setter=setDatabaseHandler:) id<TestProtocolDatabaseDomainHandler> databaseHandler;
881 @end
882
883
884 ### End File: TestProtocolConfiguration.h
885
886 ### Begin File: TestProtocolBackendDispatchers.mm
887 /*
888  * Copyright (C) 2013 Google Inc. All rights reserved.
889  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
890  * Copyright (C) 2014 University of Washington. All rights reserved.
891  *
892  * Redistribution and use in source and binary forms, with or without
893  * modification, are permitted provided that the following conditions
894  * are met:
895  * 1. Redistributions of source code must retain the above copyright
896  *    notice, this list of conditions and the following disclaimer.
897  * 2. Redistributions in binary form must reproduce the above copyright
898  *    notice, this list of conditions and the following disclaimer in the
899  *    documentation and/or other materials provided with the distribution.
900  *
901  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
902  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
903  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
904  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
905  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
906  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
907  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
908  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
909  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
910  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
911  * THE POSSIBILITY OF SUCH DAMAGE.
912  */
913
914 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
915 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
916
917 #import "config.h"
918 #import "TestProtocolBackendDispatchers.h"
919
920 #include "TestProtocolInternal.h"
921 #include "TestProtocolTypeConversions.h"
922 #include <JavaScriptCore/InspectorValues.h>
923
924 namespace Inspector {
925
926 void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long requestId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor)
927 {
928     id errorCallback = ^(NSString *error) {
929         backendDispatcher()->reportProtocolError(requestId, BackendDispatcher::ServerError, error);
930         backendDispatcher()->sendPendingErrors();
931     };
932
933     id successCallback = ^(NSArray/*<NSString>*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, TestProtocolDatabaseError **sqlError, TestProtocolDatabasePrimaryColors *screenColor, NSArray/*<NSString>*/ **alternateColors, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor) {
934         Ref<InspectorObject> resultObject = InspectorObject::create();
935         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(columnNames, @"columnNames");
936         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(notes, @"notes");
937         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(values, @"values");
938         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(payload, @"payload");
939         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(sqlError, @"sqlError");
940         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(alternateColors, @"alternateColors");
941         if (columnNames)
942             resultObject->setArray(ASCIILiteral("columnNames"), inspectorStringArray(*columnNames));
943         if (notes)
944             resultObject->setString(ASCIILiteral("notes"), *notes);
945         if (timestamp)
946             resultObject->setDouble(ASCIILiteral("timestamp"), *timestamp);
947         if (values)
948             resultObject->setObject(ASCIILiteral("values"), [*values toInspectorObject]);
949         if (payload)
950             resultObject->setValue(ASCIILiteral("payload"), [*payload toInspectorObject]);
951         if (databaseId)
952             resultObject->setInteger(ASCIILiteral("databaseId"), *databaseId);
953         if (sqlError)
954             resultObject->setObject(ASCIILiteral("sqlError"), [*sqlError toInspectorObject]);
955         if (screenColor)
956             resultObject->setString(ASCIILiteral("screenColor"), toProtocolString(*screenColor));
957         if (alternateColors)
958             resultObject->setArray(ASCIILiteral("alternateColors"), inspectorStringArray(*alternateColors));
959         if (printColor)
960             resultObject->setString(ASCIILiteral("printColor"), toProtocolString(*printColor));
961         backendDispatcher()->sendResponse(requestId, WTFMove(resultObject));
962     };
963
964     NSArray/*<NSString>*/ *o_in_columnNames;
965     if (in_columnNames)
966         o_in_columnNames = objcStringArray(in_columnNames);
967     NSString *o_in_notes;
968     if (in_notes)
969         o_in_notes = *in_notes;
970     double o_in_timestamp;
971     if (in_timestamp)
972         o_in_timestamp = *in_timestamp;
973     RWIProtocolJSONObject *o_in_values;
974     if (in_values)
975         o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_values] autorelease];
976     RWIProtocolJSONObject *o_in_payload;
977     if (in_payload)
978         o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_payload] autorelease];
979     int o_in_databaseId;
980     if (in_databaseId)
981         o_in_databaseId = *in_databaseId;
982     TestProtocolDatabaseError *o_in_sqlError;
983     if (in_sqlError)
984         o_in_sqlError = [[[TestProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError] autorelease];
985     TestProtocolDatabasePrimaryColors o_in_screenColor;
986     if (in_screenColor)
987         o_in_screenColor = fromProtocolString<TestProtocolDatabasePrimaryColors>(*in_screenColor);
988     NSArray/*<NSString>*/ *o_in_alternateColors;
989     if (in_alternateColors)
990         o_in_alternateColors = objcStringArray(in_alternateColors);
991     TestProtocolDatabaseExecuteAllOptionalParametersPrintColor o_in_printColor;
992     if (in_printColor)
993         o_in_printColor = fromProtocolString<TestProtocolDatabaseExecuteAllOptionalParametersPrintColor>(*in_printColor);
994
995     [m_delegate executeAllOptionalParametersWithErrorCallback:errorCallback successCallback:successCallback columnNames:(in_columnNames ? &o_in_columnNames : nil) notes:(in_notes ? &o_in_notes : nil) timestamp:(in_timestamp ? &o_in_timestamp : nil) values:(in_values ? &o_in_values : nil) payload:(in_payload ? &o_in_payload : nil) databaseId:(in_databaseId ? &o_in_databaseId : nil) sqlError:(in_sqlError ? &o_in_sqlError : nil) screenColor:(in_screenColor ? &o_in_screenColor : nil) alternateColors:(in_alternateColors ? &o_in_alternateColors : nil) printColor:(in_printColor ? &o_in_printColor : nil)];
996 }
997
998 void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long requestId, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor)
999 {
1000     id errorCallback = ^(NSString *error) {
1001         backendDispatcher()->reportProtocolError(requestId, BackendDispatcher::ServerError, error);
1002         backendDispatcher()->sendPendingErrors();
1003     };
1004
1005     id successCallback = ^(NSArray/*<NSString>*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, TestProtocolDatabaseError *sqlError, TestProtocolDatabasePrimaryColors screenColor, NSArray/*<NSString>*/ *alternateColors, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor) {
1006         Ref<InspectorObject> resultObject = InspectorObject::create();
1007         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(columnNames, @"columnNames");
1008         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(notes, @"notes");
1009         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(values, @"values");
1010         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(payload, @"payload");
1011         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(sqlError, @"sqlError");
1012         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(alternateColors, @"alternateColors");
1013         resultObject->setArray(ASCIILiteral("columnNames"), inspectorStringArray(columnNames));
1014         resultObject->setString(ASCIILiteral("notes"), notes);
1015         resultObject->setDouble(ASCIILiteral("timestamp"), timestamp);
1016         resultObject->setObject(ASCIILiteral("values"), [values toInspectorObject]);
1017         resultObject->setValue(ASCIILiteral("payload"), [payload toInspectorObject]);
1018         resultObject->setInteger(ASCIILiteral("databaseId"), databaseId);
1019         resultObject->setObject(ASCIILiteral("sqlError"), [sqlError toInspectorObject]);
1020         resultObject->setString(ASCIILiteral("screenColor"), toProtocolString(screenColor));
1021         resultObject->setArray(ASCIILiteral("alternateColors"), inspectorStringArray(alternateColors));
1022         resultObject->setString(ASCIILiteral("printColor"), toProtocolString(printColor));
1023         backendDispatcher()->sendResponse(requestId, WTFMove(resultObject));
1024     };
1025
1026     NSArray/*<NSString>*/ *o_in_columnNames = objcStringArray(&in_columnNames);
1027     NSString *o_in_notes = in_notes;
1028     double o_in_timestamp = in_timestamp;
1029     RWIProtocolJSONObject *o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:&in_values] autorelease];
1030     RWIProtocolJSONObject *o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:&in_payload] autorelease];
1031     int o_in_databaseId = in_databaseId;
1032     TestProtocolDatabaseError *o_in_sqlError = [[[TestProtocolDatabaseError alloc] initWithInspectorObject:&in_sqlError] autorelease];
1033     TestProtocolDatabasePrimaryColors o_in_screenColor = fromProtocolString<TestProtocolDatabasePrimaryColors>(in_screenColor);
1034     NSArray/*<NSString>*/ *o_in_alternateColors = objcStringArray(&in_alternateColors);
1035     TestProtocolDatabaseExecuteNoOptionalParametersPrintColor o_in_printColor = fromProtocolString<TestProtocolDatabaseExecuteNoOptionalParametersPrintColor>(in_printColor);
1036
1037     [m_delegate executeNoOptionalParametersWithErrorCallback:errorCallback successCallback:successCallback columnNames:o_in_columnNames notes:o_in_notes timestamp:o_in_timestamp values:o_in_values payload:o_in_payload databaseId:o_in_databaseId sqlError:o_in_sqlError screenColor:o_in_screenColor alternateColors:o_in_alternateColors printColor:o_in_printColor];
1038 }
1039
1040
1041 } // namespace Inspector
1042
1043 ### End File: TestProtocolBackendDispatchers.mm
1044
1045 ### Begin File: TestProtocolEventDispatchers.mm
1046 /*
1047  * Copyright (C) 2013 Google Inc. All rights reserved.
1048  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
1049  * Copyright (C) 2014 University of Washington. All rights reserved.
1050  *
1051  * Redistribution and use in source and binary forms, with or without
1052  * modification, are permitted provided that the following conditions
1053  * are met:
1054  * 1. Redistributions of source code must retain the above copyright
1055  *    notice, this list of conditions and the following disclaimer.
1056  * 2. Redistributions in binary form must reproduce the above copyright
1057  *    notice, this list of conditions and the following disclaimer in the
1058  *    documentation and/or other materials provided with the distribution.
1059  *
1060  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1061  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1062  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1063  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1064  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1065  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1066  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1067  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1068  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1069  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1070  * THE POSSIBILITY OF SUCH DAMAGE.
1071  */
1072
1073 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1074 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1075
1076 #import "config.h"
1077 #import "TestProtocolInternal.h"
1078
1079 #import "TestProtocolTypeConversions.h"
1080 #import <JavaScriptCore/InspectorValues.h>
1081
1082 using namespace Inspector;
1083
1084
1085
1086
1087 ### End File: TestProtocolEventDispatchers.mm
1088
1089 ### Begin File: TestProtocol.h
1090 /*
1091  * Copyright (C) 2013 Google Inc. All rights reserved.
1092  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
1093  * Copyright (C) 2014 University of Washington. All rights reserved.
1094  *
1095  * Redistribution and use in source and binary forms, with or without
1096  * modification, are permitted provided that the following conditions
1097  * are met:
1098  * 1. Redistributions of source code must retain the above copyright
1099  *    notice, this list of conditions and the following disclaimer.
1100  * 2. Redistributions in binary form must reproduce the above copyright
1101  *    notice, this list of conditions and the following disclaimer in the
1102  *    documentation and/or other materials provided with the distribution.
1103  *
1104  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1105  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1106  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1107  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1108  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1109  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1110  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1111  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1112  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1113  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1114  * THE POSSIBILITY OF SUCH DAMAGE.
1115  */
1116
1117 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1118 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1119
1120 #import <Foundation/Foundation.h>
1121
1122 #import <WebInspector/RWIProtocolJSONObject.h>
1123
1124
1125 @class TestProtocolDatabaseError;
1126
1127
1128 typedef NS_ENUM(NSInteger, TestProtocolDatabasePrimaryColors) {
1129     TestProtocolDatabasePrimaryColorsRed,
1130     TestProtocolDatabasePrimaryColorsGreen,
1131     TestProtocolDatabasePrimaryColorsBlue,
1132 };
1133
1134 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor) {
1135     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan,
1136     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta,
1137     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow,
1138     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack,
1139 };
1140
1141 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor) {
1142     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan,
1143     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta,
1144     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow,
1145     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack,
1146 };
1147
1148 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor) {
1149     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan,
1150     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta,
1151     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow,
1152     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack,
1153 };
1154
1155 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor) {
1156     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan,
1157     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta,
1158     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow,
1159     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack,
1160 };
1161
1162
1163 __attribute__((visibility ("default")))
1164 @interface TestProtocolDatabaseError : RWIProtocolJSONObject
1165 - (instancetype)initWithPayload:(NSDictionary<NSString *, id> *)payload;
1166 - (instancetype)initWithMessage:(NSString *)message code:(int)code;
1167 /* required */ @property (nonatomic, copy) NSString *message;
1168 /* required */ @property (nonatomic, assign) int code;
1169 @end
1170
1171 @protocol TestProtocolDatabaseDomainHandler <NSObject>
1172 @required
1173 - (void)executeAllOptionalParametersWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*<NSString>*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, TestProtocolDatabaseError **sqlError, TestProtocolDatabasePrimaryColors *screenColor, NSArray/*<NSString>*/ **alternateColors, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor))successCallback columnNames:(NSArray/*<NSString>*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload databaseId:(int *)databaseId sqlError:(TestProtocolDatabaseError **)sqlError screenColor:(TestProtocolDatabasePrimaryColors *)screenColor alternateColors:(NSArray/*<NSString>*/ **)alternateColors printColor:(TestProtocolDatabaseExecuteAllOptionalParametersPrintColor *)printColor;
1174 - (void)executeNoOptionalParametersWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*<NSString>*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, TestProtocolDatabaseError *sqlError, TestProtocolDatabasePrimaryColors screenColor, NSArray/*<NSString>*/ *alternateColors, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor))successCallback columnNames:(NSArray/*<NSString>*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload databaseId:(int)databaseId sqlError:(TestProtocolDatabaseError *)sqlError screenColor:(TestProtocolDatabasePrimaryColors)screenColor alternateColors:(NSArray/*<NSString>*/ *)alternateColors printColor:(TestProtocolDatabaseExecuteNoOptionalParametersPrintColor)printColor;
1175 @end
1176
1177
1178
1179
1180 ### End File: TestProtocol.h
1181
1182 ### Begin File: TestProtocolInternal.h
1183 /*
1184  * Copyright (C) 2013 Google Inc. All rights reserved.
1185  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
1186  * Copyright (C) 2014 University of Washington. All rights reserved.
1187  *
1188  * Redistribution and use in source and binary forms, with or without
1189  * modification, are permitted provided that the following conditions
1190  * are met:
1191  * 1. Redistributions of source code must retain the above copyright
1192  *    notice, this list of conditions and the following disclaimer.
1193  * 2. Redistributions in binary form must reproduce the above copyright
1194  *    notice, this list of conditions and the following disclaimer in the
1195  *    documentation and/or other materials provided with the distribution.
1196  *
1197  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1198  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1199  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1200  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1201  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1202  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1203  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1204  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1205  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1206  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1207  * THE POSSIBILITY OF SUCH DAMAGE.
1208  */
1209
1210 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1211 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1212
1213 #import "TestProtocol.h"
1214 #import "TestProtocolJSONObjectPrivate.h"
1215 #import <JavaScriptCore/AugmentableInspectorController.h>
1216 #import <JavaScriptCore/InspectorValues.h>
1217
1218
1219
1220
1221 ### End File: TestProtocolInternal.h
1222
1223 ### Begin File: TestProtocolTypeConversions.h
1224 /*
1225  * Copyright (C) 2013 Google Inc. All rights reserved.
1226  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
1227  * Copyright (C) 2014 University of Washington. All rights reserved.
1228  *
1229  * Redistribution and use in source and binary forms, with or without
1230  * modification, are permitted provided that the following conditions
1231  * are met:
1232  * 1. Redistributions of source code must retain the above copyright
1233  *    notice, this list of conditions and the following disclaimer.
1234  * 2. Redistributions in binary form must reproduce the above copyright
1235  *    notice, this list of conditions and the following disclaimer in the
1236  *    documentation and/or other materials provided with the distribution.
1237  *
1238  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1239  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1240  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1241  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1242  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1243  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1244  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1245  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1246  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1247  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1248  * THE POSSIBILITY OF SUCH DAMAGE.
1249  */
1250
1251 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1252 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1253
1254 #import "RWIProtocolArrayConversions.h"
1255 #import "TestProtocol.h"
1256
1257 namespace Inspector {
1258
1259 template<typename ObjCEnumType>
1260 ObjCEnumType fromProtocolString(const String& value);
1261
1262
1263 inline String toProtocolString(TestProtocolDatabasePrimaryColors value)
1264 {
1265     switch(value) {
1266     case TestProtocolDatabasePrimaryColorsRed:
1267         return ASCIILiteral("red");
1268     case TestProtocolDatabasePrimaryColorsGreen:
1269         return ASCIILiteral("green");
1270     case TestProtocolDatabasePrimaryColorsBlue:
1271         return ASCIILiteral("blue");
1272     }
1273 }
1274
1275 template<>
1276 inline TestProtocolDatabasePrimaryColors fromProtocolString(const String& value)
1277 {
1278     if (value == "red")
1279         return TestProtocolDatabasePrimaryColorsRed;
1280     if (value == "green")
1281         return TestProtocolDatabasePrimaryColorsGreen;
1282     if (value == "blue")
1283         return TestProtocolDatabasePrimaryColorsBlue;
1284     ASSERT_NOT_REACHED();
1285     return TestProtocolDatabasePrimaryColorsRed;
1286 }
1287
1288 inline String toProtocolString(TestProtocolDatabaseExecuteAllOptionalParametersPrintColor value)
1289 {
1290     switch(value) {
1291     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan:
1292         return ASCIILiteral("cyan");
1293     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta:
1294         return ASCIILiteral("magenta");
1295     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow:
1296         return ASCIILiteral("yellow");
1297     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack:
1298         return ASCIILiteral("black");
1299     }
1300 }
1301
1302 template<>
1303 inline TestProtocolDatabaseExecuteAllOptionalParametersPrintColor fromProtocolString(const String& value)
1304 {
1305     if (value == "cyan")
1306         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan;
1307     if (value == "magenta")
1308         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta;
1309     if (value == "yellow")
1310         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow;
1311     if (value == "black")
1312         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack;
1313     ASSERT_NOT_REACHED();
1314     return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan;
1315 }
1316
1317 inline String toProtocolString(TestProtocolDatabaseExecuteAllOptionalParametersPrintColor value)
1318 {
1319     switch(value) {
1320     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan:
1321         return ASCIILiteral("cyan");
1322     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta:
1323         return ASCIILiteral("magenta");
1324     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow:
1325         return ASCIILiteral("yellow");
1326     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack:
1327         return ASCIILiteral("black");
1328     }
1329 }
1330
1331 template<>
1332 inline TestProtocolDatabaseExecuteAllOptionalParametersPrintColor fromProtocolString(const String& value)
1333 {
1334     if (value == "cyan")
1335         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan;
1336     if (value == "magenta")
1337         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta;
1338     if (value == "yellow")
1339         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow;
1340     if (value == "black")
1341         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack;
1342     ASSERT_NOT_REACHED();
1343     return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan;
1344 }
1345
1346 inline String toProtocolString(TestProtocolDatabaseExecuteNoOptionalParametersPrintColor value)
1347 {
1348     switch(value) {
1349     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan:
1350         return ASCIILiteral("cyan");
1351     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta:
1352         return ASCIILiteral("magenta");
1353     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow:
1354         return ASCIILiteral("yellow");
1355     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack:
1356         return ASCIILiteral("black");
1357     }
1358 }
1359
1360 template<>
1361 inline TestProtocolDatabaseExecuteNoOptionalParametersPrintColor fromProtocolString(const String& value)
1362 {
1363     if (value == "cyan")
1364         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan;
1365     if (value == "magenta")
1366         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta;
1367     if (value == "yellow")
1368         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow;
1369     if (value == "black")
1370         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack;
1371     ASSERT_NOT_REACHED();
1372     return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan;
1373 }
1374
1375 inline String toProtocolString(TestProtocolDatabaseExecuteNoOptionalParametersPrintColor value)
1376 {
1377     switch(value) {
1378     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan:
1379         return ASCIILiteral("cyan");
1380     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta:
1381         return ASCIILiteral("magenta");
1382     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow:
1383         return ASCIILiteral("yellow");
1384     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack:
1385         return ASCIILiteral("black");
1386     }
1387 }
1388
1389 template<>
1390 inline TestProtocolDatabaseExecuteNoOptionalParametersPrintColor fromProtocolString(const String& value)
1391 {
1392     if (value == "cyan")
1393         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan;
1394     if (value == "magenta")
1395         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta;
1396     if (value == "yellow")
1397         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow;
1398     if (value == "black")
1399         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack;
1400     ASSERT_NOT_REACHED();
1401     return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan;
1402 }
1403
1404 } // namespace Inspector
1405
1406 ### End File: TestProtocolTypeConversions.h
1407
1408 ### Begin File: TestProtocolTypeConversions.mm
1409 /*
1410  * Copyright (C) 2013 Google Inc. All rights reserved.
1411  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
1412  * Copyright (C) 2014 University of Washington. All rights reserved.
1413  *
1414  * Redistribution and use in source and binary forms, with or without
1415  * modification, are permitted provided that the following conditions
1416  * are met:
1417  * 1. Redistributions of source code must retain the above copyright
1418  *    notice, this list of conditions and the following disclaimer.
1419  * 2. Redistributions in binary form must reproduce the above copyright
1420  *    notice, this list of conditions and the following disclaimer in the
1421  *    documentation and/or other materials provided with the distribution.
1422  *
1423  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1424  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1425  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1426  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1427  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1428  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1429  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1430  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1431  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1432  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1433  * THE POSSIBILITY OF SUCH DAMAGE.
1434  */
1435
1436 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1437 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1438
1439 #import "config.h"
1440 #import "TestProtocolTypeConversions.h"
1441
1442 #import "ProtocolTypeConversions.h"
1443 #import "TestProtocol.h"
1444 #import <WebInspector/RWIProtocolJSONObjectPrivate.h>
1445
1446 using namespace Inspector;
1447
1448 @interface ProtocolTypeConversions (TestProtocol)
1449
1450 + (void)_parseDatabaseId:(NSNumber **)outValue fromPayload:(id)payload;
1451 + (void)_parsePrimaryColors:(NSNumber **)outValue fromPayload:(id)payload;
1452 + (void)_parseColorList:(NSArray/*<NSString>*/ **)outValue fromPayload:(id)payload;
1453 + (void)_parseError:(TestProtocolDatabaseError **)outValue fromPayload:(id)payload;
1454
1455 @end
1456
1457 @implementation ProtocolTypeConversions (TestProtocol)
1458
1459 + (void)_parseDatabaseId:(NSNumber **)outValue fromPayload:(id)payload
1460 {
1461     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSNumber class]);
1462     *outValue = (NSNumber *)payload;
1463 }
1464
1465 + (void)_parsePrimaryColors:(NSNumber **)outValue fromPayload:(id)payload
1466 {
1467     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSString class]);
1468     *outValue = @(Inspector::fromProtocolString<TestProtocolDatabasePrimaryColors>(payload));
1469 }
1470
1471 + (void)_parseColorList:(NSArray/*<NSString>*/ **)outValue fromPayload:(id)payload
1472 {
1473     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSArray/*<NSString>*/ class]);
1474     *outValue = (NSArray/*<NSString>*/ *)payload;
1475 }
1476
1477 + (void)_parseError:(TestProtocolDatabaseError **)outValue fromPayload:(id)payload
1478 {
1479     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSDictionary class]);
1480     *outValue = [[TestProtocolDatabaseError alloc] initWithPayload:payload];
1481 }
1482
1483 @end
1484
1485
1486 ### End File: TestProtocolTypeConversions.mm
1487
1488 ### Begin File: TestProtocolTypes.mm
1489 /*
1490  * Copyright (C) 2013 Google Inc. All rights reserved.
1491  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
1492  * Copyright (C) 2014 University of Washington. All rights reserved.
1493  *
1494  * Redistribution and use in source and binary forms, with or without
1495  * modification, are permitted provided that the following conditions
1496  * are met:
1497  * 1. Redistributions of source code must retain the above copyright
1498  *    notice, this list of conditions and the following disclaimer.
1499  * 2. Redistributions in binary form must reproduce the above copyright
1500  *    notice, this list of conditions and the following disclaimer in the
1501  *    documentation and/or other materials provided with the distribution.
1502  *
1503  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1504  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1505  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1506  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1507  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1508  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1509  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1510  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1511  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1512  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1513  * THE POSSIBILITY OF SUCH DAMAGE.
1514  */
1515
1516 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1517 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1518
1519 #import "config.h"
1520 #import "TestProtocolInternal.h"
1521
1522 #import "TestProtocolTypeConversions.h"
1523 #import <WebInspector/RWIProtocolJSONObjectPrivate.h>
1524 #import <JavaScriptCore/InspectorValues.h>
1525 #import <wtf/Assertions.h>
1526
1527 using namespace Inspector;
1528
1529
1530 @implementation TestProtocolDatabaseError
1531
1532 - (instancetype)initWithPayload:(nonnull NSDictionary<NSString *, id> *)payload
1533 {
1534     if (!(self = [super init]))
1535         return nil;
1536
1537     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(payload[@"message"], @"message");
1538     self.message = payload[@"message"];
1539
1540     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(payload[@"code"], @"code");
1541     self.code = [payload[@"code"] integerValue];
1542
1543     return self;
1544 }
1545
1546 - (instancetype)initWithMessage:(NSString *)message code:(int)code;
1547 {
1548     self = [super init];
1549     if (!self)
1550         return nil;
1551
1552     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(message, @"message");
1553
1554     self.message = message;
1555     self.code = code;
1556
1557     return self;
1558 }
1559
1560 - (void)setMessage:(NSString *)message
1561 {
1562     [super setString:message forKey:@"message"];
1563 }
1564
1565 - (NSString *)message
1566 {
1567     return [super stringForKey:@"message"];
1568 }
1569
1570 - (void)setCode:(int)code
1571 {
1572     [super setInteger:code forKey:@"code"];
1573 }
1574
1575 - (int)code
1576 {
1577     return [super integerForKey:@"code"];
1578 }
1579
1580 @end
1581
1582
1583 ### End File: TestProtocolTypes.mm