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