[WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWi...
[WebKit-https.git] / Source / JavaScriptCore / inspector / scripts / tests / generic / 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 <JavaScriptCore/InspectorBackendDispatcher.h>
76 #include <JavaScriptCore/InspectorFrontendRouter.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 JSON::Array* in_columnNames, const String* in_notes, const double* in_timestamp, const JSON::Object* in_values, const JSON::Value* in_payload, const int* in_databaseId, const JSON::Object* in_sqlError, const String* in_screenColor, const JSON::Array* in_alternateColors, const String* in_printColor) = 0;
93     virtual void executeNoOptionalParameters(long callId, const JSON::Array& in_columnNames, const String& in_notes, double in_timestamp, const JSON::Object& in_values, JSON::Value in_payload, int in_databaseId, const JSON::Object& in_sqlError, const String& in_screenColor, const JSON::Array& 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 <JavaScriptCore/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 JSON::Array* opt_in_columnNames, const String* opt_in_notes, const double* opt_in_timestamp, const JSON::Object* opt_in_values, const JSON::Value* opt_in_payload, const int* opt_in_databaseId, const JSON::Object* opt_in_sqlError, const String* opt_in_screenColor, const JSON::Array* opt_in_alternateColors, const String* opt_in_printColor, RefPtr<JSON::ArrayOf<String>>& opt_out_columnNames, Optional<String>& opt_out_notes, Optional<double>& opt_out_timestamp, Optional<JSON::Object>& opt_out_values, Optional<JSON::Value>& opt_out_payload, Optional<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 JSON::Array& in_columnNames, const String& in_notes, double in_timestamp, const JSON::Object& in_values, JSON::Value in_payload, int in_databaseId, const JSON::Object& in_sqlError, const String& in_screenColor, const JSON::Array& in_alternateColors, const String& in_printColor, RefPtr<JSON::ArrayOf<String>>& out_columnNames, String* out_notes, double* out_timestamp, JSON::Object* out_values, JSON::Value* 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<JSON::Object>&& message) override;
165 private:
166     void executeAllOptionalParameters(long requestId, RefPtr<JSON::Object>&& parameters);
167     void executeNoOptionalParameters(long requestId, RefPtr<JSON::Object>&& 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 <JavaScriptCore/InspectorFrontendRouter.h>
217 #include <wtf/JSONValues.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("Database"_s, this);
239 }
240
241 void DatabaseBackendDispatcher::dispatch(long requestId, const String& method, Ref<JSON::Object>&& message)
242 {
243     Ref<DatabaseBackendDispatcher> protect(*this);
244
245     RefPtr<JSON::Object> parameters;
246     message->getObject("params"_s, 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, "'Database." + method + "' was not found");
254 }
255
256 void DatabaseBackendDispatcher::executeAllOptionalParameters(long requestId, RefPtr<JSON::Object>&& parameters)
257 {
258     bool opt_in_columnNames_valueFound = false;
259     RefPtr<JSON::Array> opt_in_columnNames = m_backendDispatcher->getArray(parameters.get(), "columnNames"_s, &opt_in_columnNames_valueFound);
260     bool opt_in_notes_valueFound = false;
261     String opt_in_notes = m_backendDispatcher->getString(parameters.get(), "notes"_s, &opt_in_notes_valueFound);
262     bool opt_in_timestamp_valueFound = false;
263     Optional<double> opt_in_timestamp = m_backendDispatcher->getDouble(parameters.get(), "timestamp"_s, &opt_in_timestamp_valueFound);
264     bool opt_in_values_valueFound = false;
265     RefPtr<JSON::Object> opt_in_values = m_backendDispatcher->getObject(parameters.get(), "values"_s, &opt_in_values_valueFound);
266     bool opt_in_payload_valueFound = false;
267     RefPtr<JSON::Value> opt_in_payload = m_backendDispatcher->getValue(parameters.get(), "payload"_s, &opt_in_payload_valueFound);
268     bool opt_in_databaseId_valueFound = false;
269     int opt_in_databaseId = m_backendDispatcher->getInteger(parameters.get(), "databaseId"_s, &opt_in_databaseId_valueFound);
270     bool opt_in_sqlError_valueFound = false;
271     RefPtr<JSON::Object> opt_in_sqlError = m_backendDispatcher->getObject(parameters.get(), "sqlError"_s, &opt_in_sqlError_valueFound);
272     bool opt_in_screenColor_valueFound = false;
273     String opt_in_screenColor = m_backendDispatcher->getString(parameters.get(), "screenColor"_s, &opt_in_screenColor_valueFound);
274     bool opt_in_alternateColors_valueFound = false;
275     RefPtr<JSON::Array> opt_in_alternateColors = m_backendDispatcher->getArray(parameters.get(), "alternateColors"_s, &opt_in_alternateColors_valueFound);
276     bool opt_in_printColor_valueFound = false;
277     String opt_in_printColor = m_backendDispatcher->getString(parameters.get(), "printColor"_s, &opt_in_printColor_valueFound);
278     if (m_backendDispatcher->hasProtocolErrors()) {
279         m_backendDispatcher->reportProtocolError(BackendDispatcher::InvalidParams, "Some arguments of method 'Database.executeAllOptionalParameters' can't be processed"_s);
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<JSON::Object> result = JSON::Object::create();
292     RefPtr<JSON::ArrayOf<String>> out_columnNames;
293     Optional<String> out_notes;
294     Optional<double> out_timestamp;
295     Optional<JSON::Object> out_values;
296     Optional<JSON::Value> out_payload;
297     Optional<int> 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("columnNames"_s, out_columnNames);
307         if (out_notes.hasValue())
308             result->setString("notes"_s, *out_notes);
309         if (out_timestamp.hasValue())
310             result->setDouble("timestamp"_s, *out_timestamp);
311         if (out_values.hasValue())
312             result->setObject("values"_s, *out_values);
313         if (out_payload.hasValue())
314             result->setValue("payload"_s, *out_payload);
315         if (out_databaseId.hasValue())
316             result->setInteger("databaseId"_s, *out_databaseId);
317         if (out_sqlError)
318             result->setObject("sqlError"_s, out_sqlError);
319         if (out_screenColor.hasValue())
320             result->setString("screenColor"_s, *out_screenColor);
321         if (out_alternateColors)
322             result->setArray("alternateColors"_s, out_alternateColors);
323         if (out_printColor.hasValue())
324             result->setString("printColor"_s, *out_printColor);
325     }
326     if (!error.length())
327         m_backendDispatcher->sendResponse(requestId, WTFMove(result), false);
328     else
329         m_backendDispatcher->reportProtocolError(BackendDispatcher::ServerError, WTFMove(error));
330 }
331
332 void DatabaseBackendDispatcher::executeNoOptionalParameters(long requestId, RefPtr<JSON::Object>&& parameters)
333 {
334     RefPtr<JSON::Array> in_columnNames = m_backendDispatcher->getArray(parameters.get(), "columnNames"_s, nullptr);
335     String in_notes = m_backendDispatcher->getString(parameters.get(), "notes"_s, nullptr);
336     double in_timestamp = m_backendDispatcher->getDouble(parameters.get(), "timestamp"_s, nullptr);
337     RefPtr<JSON::Object> in_values = m_backendDispatcher->getObject(parameters.get(), "values"_s, nullptr);
338     RefPtr<JSON::Value> in_payload = m_backendDispatcher->getValue(parameters.get(), "payload"_s, nullptr);
339     int in_databaseId = m_backendDispatcher->getInteger(parameters.get(), "databaseId"_s, nullptr);
340     RefPtr<JSON::Object> in_sqlError = m_backendDispatcher->getObject(parameters.get(), "sqlError"_s, nullptr);
341     String in_screenColor = m_backendDispatcher->getString(parameters.get(), "screenColor"_s, nullptr);
342     RefPtr<JSON::Array> in_alternateColors = m_backendDispatcher->getArray(parameters.get(), "alternateColors"_s, nullptr);
343     String in_printColor = m_backendDispatcher->getString(parameters.get(), "printColor"_s, nullptr);
344     if (m_backendDispatcher->hasProtocolErrors()) {
345         m_backendDispatcher->reportProtocolError(BackendDispatcher::InvalidParams, "Some arguments of method 'Database.executeNoOptionalParameters' can't be processed"_s);
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<JSON::Object> result = JSON::Object::create();
358     RefPtr<JSON::ArrayOf<String>> out_columnNames;
359     String out_notes;
360     double out_timestamp;
361     JSON::Object out_values;
362     JSON::Value out_payload;
363     int 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("columnNames"_s, out_columnNames);
372         result->setString("notes"_s, out_notes);
373         result->setDouble("timestamp"_s, out_timestamp);
374         result->setObject("values"_s, out_values);
375         result->setValue("payload"_s, out_payload);
376         result->setInteger("databaseId"_s, out_databaseId);
377         result->setObject("sqlError"_s, out_sqlError);
378         result->setString("screenColor"_s, Inspector::Protocol::TestHelpers::getEnumConstantValue(out_screenColor));
379         result->setArray("alternateColors"_s, out_alternateColors);
380         result->setString("printColor"_s, Inspector::Protocol::TestHelpers::getEnumConstantValue(out_printColor));
381     }
382     if (!error.length())
383         m_backendDispatcher->sendResponse(requestId, WTFMove(result), false);
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 <wtf/JSONValues.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 <JavaScriptCore/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 <JavaScriptCore/InspectorProtocolTypes.h>
513 #include <wtf/Assertions.h>
514
515 namespace Inspector {
516
517
518
519 namespace Protocol {
520
521
522
523 // Forward declarations.
524 namespace Database {
525 class Error;
526 enum class PrimaryColors;
527 } // Database
528 // End of forward declarations.
529
530
531 // Typedefs.
532 namespace Database {
533 /* Unique identifier of Database object. */
534 typedef int DatabaseId;
535 typedef JSON::ArrayOf<Inspector::Protocol::Database::PrimaryColors> ColorList;
536 } // Database
537 // End of typedefs.
538
539 namespace TestHelpers {
540
541 String getEnumConstantValue(int code);
542
543 template<typename T> String getEnumConstantValue(T enumValue)
544 {
545     return getEnumConstantValue(static_cast<int>(enumValue));
546 }
547
548 } // namespace TestHelpers
549
550 namespace Database {
551 /*  */
552 enum class PrimaryColors {
553     Red = 0,
554     Green = 1,
555     Blue = 2,
556 }; // enum class PrimaryColors
557 /* Database error. */
558 class Error : public JSON::ObjectBase {
559 public:
560     enum {
561         NoFieldsSet = 0,
562         MessageSet = 1 << 0,
563         CodeSet = 1 << 1,
564         AllFieldsSet = (MessageSet | CodeSet)
565     };
566
567     template<int STATE>
568     class Builder {
569     private:
570         RefPtr<JSON::Object> m_result;
571
572         template<int STEP> Builder<STATE | STEP>& castState()
573         {
574             return *reinterpret_cast<Builder<STATE | STEP>*>(this);
575         }
576
577         Builder(Ref</*Error*/JSON::Object>&& object)
578             : m_result(WTFMove(object))
579         {
580             COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
581         }
582         friend class Error;
583     public:
584
585         Builder<STATE | MessageSet>& setMessage(const String& value)
586         {
587             COMPILE_ASSERT(!(STATE & MessageSet), property_message_already_set);
588             m_result->setString("message"_s, value);
589             return castState<MessageSet>();
590         }
591
592         Builder<STATE | CodeSet>& setCode(int value)
593         {
594             COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
595             m_result->setInteger("code"_s, value);
596             return castState<CodeSet>();
597         }
598
599         Ref<Error> release()
600         {
601             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
602             COMPILE_ASSERT(sizeof(Error) == sizeof(JSON::Object), cannot_cast);
603
604             Ref<JSON::Object> jsonResult = m_result.releaseNonNull();
605             auto result = WTFMove(*reinterpret_cast<Ref<Error>*>(&jsonResult));
606             return result;
607         }
608     };
609
610     /*
611      * Synthetic constructor:
612      * Ref<Error> result = Error::create()
613      *     .setMessage(...)
614      *     .setCode(...)
615      *     .release();
616      */
617     static Builder<NoFieldsSet> create()
618     {
619         return Builder<NoFieldsSet>(JSON::Object::create());
620     }
621 };
622
623 } // Database
624
625
626
627 namespace TestHelpers {
628
629 template<typename ProtocolEnumType>
630 Optional<ProtocolEnumType> parseEnumValueFromString(const String&);
631
632 // Enums in the 'Database' Domain
633 template<>
634 Optional<Inspector::Protocol::Database::PrimaryColors> parseEnumValueFromString<Inspector::Protocol::Database::PrimaryColors>(const String&);
635
636 } // namespace TestHelpers
637
638 } // namespace Protocol
639
640 } // namespace Inspector
641
642 namespace WTF {
643
644 template<typename T> struct DefaultHash;
645
646 // Hash declarations in the 'Database' Domain
647 template<>
648 struct DefaultHash<Inspector::Protocol::Database::PrimaryColors> {
649     typedef IntHash<Inspector::Protocol::Database::PrimaryColors> Hash;
650 };
651
652 } // namespace WTF
653 ### End File: TestProtocolObjects.h
654
655 ### Begin File: TestProtocolObjects.cpp
656 /*
657  * Copyright (C) 2013 Google Inc. All rights reserved.
658  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
659  * Copyright (C) 2014 University of Washington. All rights reserved.
660  *
661  * Redistribution and use in source and binary forms, with or without
662  * modification, are permitted provided that the following conditions
663  * are met:
664  * 1. Redistributions of source code must retain the above copyright
665  *    notice, this list of conditions and the following disclaimer.
666  * 2. Redistributions in binary form must reproduce the above copyright
667  *    notice, this list of conditions and the following disclaimer in the
668  *    documentation and/or other materials provided with the distribution.
669  *
670  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
671  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
672  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
673  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
674  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
675  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
676  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
677  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
678  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
679  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
680  * THE POSSIBILITY OF SUCH DAMAGE.
681  */
682
683 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
684 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
685
686 #include "config.h"
687 #include "TestProtocolObjects.h"
688
689 #include <wtf/Optional.h>
690 #include <wtf/text/CString.h>
691
692 namespace Inspector {
693
694 namespace Protocol {
695
696 namespace TestHelpers {
697
698 static const char* const enum_constant_values[] = {
699     "red",
700     "green",
701     "blue",
702     "cyan",
703     "magenta",
704     "yellow",
705     "black",
706 };
707
708 String getEnumConstantValue(int code) {
709     return enum_constant_values[code];
710 }
711
712 // Enums in the 'Database' Domain
713 template<>
714 Optional<Inspector::Protocol::Database::PrimaryColors> parseEnumValueFromString<Inspector::Protocol::Database::PrimaryColors>(const String& protocolString)
715 {
716     static const size_t constantValues[] = {
717         (size_t)Inspector::Protocol::Database::PrimaryColors::Red,
718         (size_t)Inspector::Protocol::Database::PrimaryColors::Green,
719         (size_t)Inspector::Protocol::Database::PrimaryColors::Blue,
720     };
721     for (size_t i = 0; i < 3; ++i)
722         if (protocolString == enum_constant_values[constantValues[i]])
723             return (Inspector::Protocol::Database::PrimaryColors)constantValues[i];
724
725     return WTF::nullopt;
726 }
727
728
729 } // namespace TestHelpers
730
731
732
733 } // namespace Protocol
734
735 } // namespace Inspector
736
737 ### End File: TestProtocolObjects.cpp
738
739 ### Begin File: TestProtocolBackendDispatchers.h
740 /*
741  * Copyright (C) 2013 Google Inc. All rights reserved.
742  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
743  * Copyright (C) 2014 University of Washington. All rights reserved.
744  *
745  * Redistribution and use in source and binary forms, with or without
746  * modification, are permitted provided that the following conditions
747  * are met:
748  * 1. Redistributions of source code must retain the above copyright
749  *    notice, this list of conditions and the following disclaimer.
750  * 2. Redistributions in binary form must reproduce the above copyright
751  *    notice, this list of conditions and the following disclaimer in the
752  *    documentation and/or other materials provided with the distribution.
753  *
754  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
755  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
756  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
757  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
758  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
759  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
760  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
761  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
762  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
763  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
764  * THE POSSIBILITY OF SUCH DAMAGE.
765  */
766
767 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
768 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
769
770 #include <JavaScriptCore/InspectorAlternateBackendDispatchers.h>
771 #include <wtf/RetainPtr.h>
772
773 @protocol TestProtocolDatabaseDomainHandler;
774
775 namespace Inspector {
776
777
778 class ObjCInspectorDatabaseBackendDispatcher final : public AlternateDatabaseBackendDispatcher {
779     WTF_MAKE_FAST_ALLOCATED;
780 public:
781     ObjCInspectorDatabaseBackendDispatcher(id<TestProtocolDatabaseDomainHandler> handler) { m_delegate = handler; }
782     virtual void executeAllOptionalParameters(long requestId, const JSON::Array* in_columnNames, const String* in_notes, const double* in_timestamp, const JSON::Object* in_values, const JSON::Value* in_payload, const int* in_databaseId, const JSON::Object* in_sqlError, const String* in_screenColor, const JSON::Array* in_alternateColors, const String* in_printColor) override;
783     virtual void executeNoOptionalParameters(long requestId, const JSON::Array& in_columnNames, const String& in_notes, double in_timestamp, const JSON::Object& in_values, JSON::Value in_payload, int in_databaseId, const JSON::Object& in_sqlError, const String& in_screenColor, const JSON::Array& in_alternateColors, const String& in_printColor) override;
784 private:
785     RetainPtr<id<TestProtocolDatabaseDomainHandler>> m_delegate;
786 };
787
788 } // namespace Inspector
789
790 ### End File: TestProtocolBackendDispatchers.h
791
792 ### Begin File: TestProtocolBackendDispatchers.mm
793 /*
794  * Copyright (C) 2013 Google Inc. All rights reserved.
795  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
796  * Copyright (C) 2014 University of Washington. All rights reserved.
797  *
798  * Redistribution and use in source and binary forms, with or without
799  * modification, are permitted provided that the following conditions
800  * are met:
801  * 1. Redistributions of source code must retain the above copyright
802  *    notice, this list of conditions and the following disclaimer.
803  * 2. Redistributions in binary form must reproduce the above copyright
804  *    notice, this list of conditions and the following disclaimer in the
805  *    documentation and/or other materials provided with the distribution.
806  *
807  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
808  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
809  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
810  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
811  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
812  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
813  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
814  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
815  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
816  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
817  * THE POSSIBILITY OF SUCH DAMAGE.
818  */
819
820 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
821 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
822
823 #import "config.h"
824 #import "TestProtocolBackendDispatchers.h"
825
826 #include "TestProtocolInternal.h"
827 #include "TestProtocolTypeConversions.h"
828 #include <wtf/JSONValues.h>
829
830 namespace Inspector {
831
832 void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long requestId, const JSON::Array* in_columnNames, const String* in_notes, const double* in_timestamp, const JSON::Object* in_values, const JSON::Value* in_payload, const int* in_databaseId, const JSON::Object* in_sqlError, const String* in_screenColor, const JSON::Array* in_alternateColors, const String* in_printColor)
833 {
834     id errorCallback = ^(NSString *error) {
835         backendDispatcher()->reportProtocolError(requestId, BackendDispatcher::ServerError, error);
836         backendDispatcher()->sendPendingErrors();
837     };
838
839     id successCallback = ^(NSArray/*<NSString>*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, TestProtocolDatabaseError **sqlError, TestProtocolDatabasePrimaryColors *screenColor, NSArray/*<NSString>*/ **alternateColors, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor) {
840         Ref<JSON::Object> resultObject = JSON::Object::create();
841         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(columnNames, @"columnNames");
842         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(notes, @"notes");
843         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(values, @"values");
844         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(payload, @"payload");
845         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(sqlError, @"sqlError");
846         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(alternateColors, @"alternateColors");
847         if (columnNames)
848             resultObject->setArray("columnNames"_s, toJSONStringArray(*columnNames));
849         if (notes)
850             resultObject->setString("notes"_s, *notes);
851         if (timestamp)
852             resultObject->setDouble("timestamp"_s, *timestamp);
853         if (values)
854             resultObject->setObject("values"_s, [*values toJSONObject]);
855         if (payload)
856             resultObject->setValue("payload"_s, [*payload toJSONObject]);
857         if (databaseId)
858             resultObject->setInteger("databaseId"_s, *databaseId);
859         if (sqlError)
860             resultObject->setObject("sqlError"_s, [*sqlError toJSONObject]);
861         if (screenColor)
862             resultObject->setString("screenColor"_s, toProtocolString(*screenColor));
863         if (alternateColors)
864             resultObject->setArray("alternateColors"_s, toJSONStringArray(*alternateColors));
865         if (printColor)
866             resultObject->setString("printColor"_s, toProtocolString(*printColor));
867         backendDispatcher()->sendResponse(requestId, WTFMove(resultObject), false);
868     };
869
870     NSArray/*<NSString>*/ *o_in_columnNames;
871     if (in_columnNames)
872         o_in_columnNames = toObjCStringArray(in_columnNames);
873     NSString *o_in_notes;
874     if (in_notes)
875         o_in_notes = *in_notes;
876     double o_in_timestamp;
877     if (in_timestamp)
878         o_in_timestamp = *in_timestamp;
879     RWIProtocolJSONObject *o_in_values;
880     if (in_values)
881         o_in_values = [[[RWIProtocolJSONObject alloc] initWithJSONObject:in_values] autorelease];
882     RWIProtocolJSONObject *o_in_payload;
883     if (in_payload)
884         o_in_payload = [[[RWIProtocolJSONObject alloc] initWithJSONObject:in_payload] autorelease];
885     int o_in_databaseId;
886     if (in_databaseId)
887         o_in_databaseId = *in_databaseId;
888     TestProtocolDatabaseError *o_in_sqlError;
889     if (in_sqlError)
890         o_in_sqlError = [[[TestProtocolDatabaseError alloc] initWithJSONObject:in_sqlError] autorelease];
891     Optional<TestProtocolDatabasePrimaryColors> o_in_screenColor;
892     if (in_screenColor)
893         o_in_screenColor = fromProtocolString<TestProtocolDatabasePrimaryColors>(*in_screenColor);
894     NSArray/*<NSString>*/ *o_in_alternateColors;
895     if (in_alternateColors)
896         o_in_alternateColors = toObjCStringArray(in_alternateColors);
897     Optional<TestProtocolDatabaseExecuteAllOptionalParametersPrintColor> o_in_printColor;
898     if (in_printColor)
899         o_in_printColor = fromProtocolString<TestProtocolDatabaseExecuteAllOptionalParametersPrintColor>(*in_printColor);
900
901     [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)];
902 }
903
904 void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long requestId, const JSON::Array& in_columnNames, const String& in_notes, double in_timestamp, const JSON::Object& in_values, JSON::Value in_payload, int in_databaseId, const JSON::Object& in_sqlError, const String& in_screenColor, const JSON::Array& in_alternateColors, const String& in_printColor)
905 {
906     id errorCallback = ^(NSString *error) {
907         backendDispatcher()->reportProtocolError(requestId, BackendDispatcher::ServerError, error);
908         backendDispatcher()->sendPendingErrors();
909     };
910
911     id successCallback = ^(NSArray/*<NSString>*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, TestProtocolDatabaseError *sqlError, TestProtocolDatabasePrimaryColors screenColor, NSArray/*<NSString>*/ *alternateColors, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor) {
912         Ref<JSON::Object> resultObject = JSON::Object::create();
913         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(columnNames, @"columnNames");
914         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(notes, @"notes");
915         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(values, @"values");
916         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(payload, @"payload");
917         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(sqlError, @"sqlError");
918         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(alternateColors, @"alternateColors");
919         resultObject->setArray("columnNames"_s, toJSONStringArray(columnNames));
920         resultObject->setString("notes"_s, notes);
921         resultObject->setDouble("timestamp"_s, timestamp);
922         resultObject->setObject("values"_s, [values toJSONObject]);
923         resultObject->setValue("payload"_s, [payload toJSONObject]);
924         resultObject->setInteger("databaseId"_s, databaseId);
925         resultObject->setObject("sqlError"_s, [sqlError toJSONObject]);
926         resultObject->setString("screenColor"_s, toProtocolString(screenColor));
927         resultObject->setArray("alternateColors"_s, toJSONStringArray(alternateColors));
928         resultObject->setString("printColor"_s, toProtocolString(printColor));
929         backendDispatcher()->sendResponse(requestId, WTFMove(resultObject), false);
930     };
931
932     NSArray/*<NSString>*/ *o_in_columnNames = toObjCStringArray(&in_columnNames);
933     NSString *o_in_notes = in_notes;
934     double o_in_timestamp = in_timestamp;
935     RWIProtocolJSONObject *o_in_values = [[[RWIProtocolJSONObject alloc] initWithJSONObject:&in_values] autorelease];
936     RWIProtocolJSONObject *o_in_payload = [[[RWIProtocolJSONObject alloc] initWithJSONObject:&in_payload] autorelease];
937     int o_in_databaseId = in_databaseId;
938     TestProtocolDatabaseError *o_in_sqlError = [[[TestProtocolDatabaseError alloc] initWithJSONObject:&in_sqlError] autorelease];
939     Optional<TestProtocolDatabasePrimaryColors> o_in_screenColor = fromProtocolString<TestProtocolDatabasePrimaryColors>(in_screenColor);
940     if (!o_in_screenColor) {
941         backendDispatcher()->reportProtocolError(BackendDispatcher::InvalidParams, "Parameter 'screenColor' of method 'Database.executeNoOptionalParameters' cannot be processed"_s);
942         return;
943     }
944     NSArray/*<NSString>*/ *o_in_alternateColors = toObjCStringArray(&in_alternateColors);
945     Optional<TestProtocolDatabaseExecuteNoOptionalParametersPrintColor> o_in_printColor = fromProtocolString<TestProtocolDatabaseExecuteNoOptionalParametersPrintColor>(in_printColor);
946     if (!o_in_printColor) {
947         backendDispatcher()->reportProtocolError(BackendDispatcher::InvalidParams, "Parameter 'printColor' of method 'Database.executeNoOptionalParameters' cannot be processed"_s);
948         return;
949     }
950
951     [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.value() alternateColors:o_in_alternateColors printColor:o_in_printColor.value()];
952 }
953
954
955 } // namespace Inspector
956
957 ### End File: TestProtocolBackendDispatchers.mm
958
959 ### Begin File: TestProtocolConfiguration.h
960 /*
961  * Copyright (C) 2013 Google Inc. All rights reserved.
962  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
963  * Copyright (C) 2014 University of Washington. All rights reserved.
964  *
965  * Redistribution and use in source and binary forms, with or without
966  * modification, are permitted provided that the following conditions
967  * are met:
968  * 1. Redistributions of source code must retain the above copyright
969  *    notice, this list of conditions and the following disclaimer.
970  * 2. Redistributions in binary form must reproduce the above copyright
971  *    notice, this list of conditions and the following disclaimer in the
972  *    documentation and/or other materials provided with the distribution.
973  *
974  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
975  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
976  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
977  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
978  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
979  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
980  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
981  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
982  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
983  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
984  * THE POSSIBILITY OF SUCH DAMAGE.
985  */
986
987 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
988 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
989
990 #import <WebInspector/TestProtocol.h>
991
992 __attribute__((visibility ("default")))
993 @interface TestProtocolConfiguration : NSObject
994 @property (nonatomic, retain, setter=setDatabaseHandler:) id<TestProtocolDatabaseDomainHandler> databaseHandler;
995 @end
996
997
998 ### End File: TestProtocolConfiguration.h
999
1000 ### Begin File: TestProtocolConfiguration.mm
1001 /*
1002  * Copyright (C) 2013 Google Inc. All rights reserved.
1003  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
1004  * Copyright (C) 2014 University of Washington. All rights reserved.
1005  *
1006  * Redistribution and use in source and binary forms, with or without
1007  * modification, are permitted provided that the following conditions
1008  * are met:
1009  * 1. Redistributions of source code must retain the above copyright
1010  *    notice, this list of conditions and the following disclaimer.
1011  * 2. Redistributions in binary form must reproduce the above copyright
1012  *    notice, this list of conditions and the following disclaimer in the
1013  *    documentation and/or other materials provided with the distribution.
1014  *
1015  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1016  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1017  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1018  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1019  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1020  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1021  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1023  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1024  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1025  * THE POSSIBILITY OF SUCH DAMAGE.
1026  */
1027
1028 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1029 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1030
1031 #import "TestProtocolConfiguration.h"
1032
1033 #import "TestProtocolInternal.h"
1034 #import "TestProtocolBackendDispatchers.h"
1035 #import <JavaScriptCore/AlternateDispatchableAgent.h>
1036 #import <JavaScriptCore/AugmentableInspectorController.h>
1037 #import <JavaScriptCore/InspectorAlternateBackendDispatchers.h>
1038 #import <JavaScriptCore/InspectorBackendDispatchers.h>
1039
1040 using namespace Inspector;
1041
1042 @implementation TestProtocolConfiguration
1043 {
1044     AugmentableInspectorController* _controller;
1045     id<TestProtocolDatabaseDomainHandler> _databaseHandler;
1046 }
1047
1048 - (instancetype)initWithController:(AugmentableInspectorController*)controller
1049 {
1050     self = [super init];
1051     if (!self)
1052         return nil;
1053     ASSERT(controller);
1054     _controller = controller;
1055     return self;
1056 }
1057
1058 - (void)dealloc
1059 {
1060     [_databaseHandler release];
1061     [super dealloc];
1062 }
1063
1064 - (void)setDatabaseHandler:(id<TestProtocolDatabaseDomainHandler>)handler
1065 {
1066     if (handler == _databaseHandler)
1067         return;
1068
1069     [_databaseHandler release];
1070     _databaseHandler = [handler retain];
1071
1072     auto alternateDispatcher = makeUnique<ObjCInspectorDatabaseBackendDispatcher>(handler);
1073     auto alternateAgent = makeUnique<AlternateDispatchableAgent<DatabaseBackendDispatcher, AlternateDatabaseBackendDispatcher>>("Database"_s, *_controller, WTFMove(alternateDispatcher));
1074     _controller->appendExtraAgent(WTFMove(alternateAgent));
1075 }
1076
1077 - (id<TestProtocolDatabaseDomainHandler>)databaseHandler
1078 {
1079     return _databaseHandler;
1080 }
1081
1082 @end
1083
1084
1085 ### End File: TestProtocolConfiguration.mm
1086
1087 ### Begin File: TestProtocolEventDispatchers.mm
1088 /*
1089  * Copyright (C) 2013 Google Inc. All rights reserved.
1090  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
1091  * Copyright (C) 2014 University of Washington. All rights reserved.
1092  *
1093  * Redistribution and use in source and binary forms, with or without
1094  * modification, are permitted provided that the following conditions
1095  * are met:
1096  * 1. Redistributions of source code must retain the above copyright
1097  *    notice, this list of conditions and the following disclaimer.
1098  * 2. Redistributions in binary form must reproduce the above copyright
1099  *    notice, this list of conditions and the following disclaimer in the
1100  *    documentation and/or other materials provided with the distribution.
1101  *
1102  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1103  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1104  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1105  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1106  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1107  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1108  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1109  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1110  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1111  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1112  * THE POSSIBILITY OF SUCH DAMAGE.
1113  */
1114
1115 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1116 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1117
1118 #import "TestProtocolInternal.h"
1119
1120 #import "TestProtocolTypeConversions.h"
1121 #import <wtf/JSONValues.h>
1122
1123 using namespace Inspector;
1124
1125
1126 ### End File: TestProtocolEventDispatchers.mm
1127
1128 ### Begin File: TestProtocol.h
1129 /*
1130  * Copyright (C) 2013 Google Inc. All rights reserved.
1131  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
1132  * Copyright (C) 2014 University of Washington. All rights reserved.
1133  *
1134  * Redistribution and use in source and binary forms, with or without
1135  * modification, are permitted provided that the following conditions
1136  * are met:
1137  * 1. Redistributions of source code must retain the above copyright
1138  *    notice, this list of conditions and the following disclaimer.
1139  * 2. Redistributions in binary form must reproduce the above copyright
1140  *    notice, this list of conditions and the following disclaimer in the
1141  *    documentation and/or other materials provided with the distribution.
1142  *
1143  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1144  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1145  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1146  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1147  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1148  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1149  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1150  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1151  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1152  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1153  * THE POSSIBILITY OF SUCH DAMAGE.
1154  */
1155
1156 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1157 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1158
1159 #import <Foundation/Foundation.h>
1160
1161 #import <WebInspector/RWIProtocolJSONObject.h>
1162
1163
1164 @class TestProtocolDatabaseError;
1165
1166 typedef NS_ENUM(NSInteger, TestProtocolPlatform) {
1167     TestProtocolPlatformAll,
1168     TestProtocolPlatformGeneric,
1169     TestProtocolPlatformIOS,
1170     TestProtocolPlatformMacOS,
1171 };
1172
1173
1174 typedef NS_ENUM(NSInteger, TestProtocolDatabasePrimaryColors) {
1175     TestProtocolDatabasePrimaryColorsRed,
1176     TestProtocolDatabasePrimaryColorsGreen,
1177     TestProtocolDatabasePrimaryColorsBlue,
1178 };
1179
1180 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor) {
1181     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan,
1182     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta,
1183     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow,
1184     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack,
1185 };
1186
1187 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteAllOptionalParametersPrintColor) {
1188     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan,
1189     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta,
1190     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow,
1191     TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack,
1192 };
1193
1194 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor) {
1195     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan,
1196     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta,
1197     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow,
1198     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack,
1199 };
1200
1201 typedef NS_ENUM(NSInteger, TestProtocolDatabaseExecuteNoOptionalParametersPrintColor) {
1202     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan,
1203     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta,
1204     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow,
1205     TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack,
1206 };
1207
1208
1209 __attribute__((visibility ("default")))
1210 @interface TestProtocolDatabaseError : RWIProtocolJSONObject
1211 - (instancetype)initWithPayload:(NSDictionary<NSString *, id> *)payload;
1212 - (instancetype)initWithProtocolObject:(RWIProtocolJSONObject *)jsonObject;
1213 - (instancetype)initWithMessage:(NSString *)message code:(int)code;
1214 /* required */ @property (nonatomic, copy) NSString *message;
1215 /* required */ @property (nonatomic, assign) int code;
1216 @end
1217
1218 @protocol TestProtocolDatabaseDomainHandler <NSObject>
1219 @required
1220 - (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;
1221 - (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;
1222 @end
1223
1224
1225
1226
1227 #import <WebInspector/RWIProtocolBuildCompatibilityObjects.h>
1228
1229 ### End File: TestProtocol.h
1230
1231 ### Begin File: TestProtocolInternal.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 "TestProtocol.h"
1263 #import "TestProtocolJSONObjectPrivate.h"
1264 #import <JavaScriptCore/AugmentableInspectorController.h>
1265 #import <wtf/JSONValues.h>
1266
1267
1268
1269
1270 ### End File: TestProtocolInternal.h
1271
1272 ### Begin File: TestProtocolTypeConversions.h
1273 /*
1274  * Copyright (C) 2013 Google Inc. All rights reserved.
1275  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
1276  * Copyright (C) 2014 University of Washington. All rights reserved.
1277  *
1278  * Redistribution and use in source and binary forms, with or without
1279  * modification, are permitted provided that the following conditions
1280  * are met:
1281  * 1. Redistributions of source code must retain the above copyright
1282  *    notice, this list of conditions and the following disclaimer.
1283  * 2. Redistributions in binary form must reproduce the above copyright
1284  *    notice, this list of conditions and the following disclaimer in the
1285  *    documentation and/or other materials provided with the distribution.
1286  *
1287  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1288  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1289  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1290  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1291  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1292  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1293  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1294  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1295  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1296  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1297  * THE POSSIBILITY OF SUCH DAMAGE.
1298  */
1299
1300 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1301 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1302
1303 #import "TestProtocol.h"
1304 #import <WebInspector/RWIProtocolArrayConversions.h>
1305
1306 namespace Inspector {
1307
1308 template<typename ObjCEnumType>
1309 Optional<ObjCEnumType> fromProtocolString(const String& value);
1310
1311 inline String toProtocolString(TestProtocolPlatform value)
1312 {
1313     switch(value) {
1314     case TestProtocolPlatformAll:
1315         return "all"_s;
1316     case TestProtocolPlatformGeneric:
1317         return "generic"_s;
1318     case TestProtocolPlatformIOS:
1319         return "ios"_s;
1320     case TestProtocolPlatformMacOS:
1321         return "macos"_s;
1322     }
1323 }
1324
1325 template<>
1326 inline Optional<TestProtocolPlatform> fromProtocolString(const String& value)
1327 {
1328     if (value == "all")
1329         return TestProtocolPlatformAll;
1330     if (value == "generic")
1331         return TestProtocolPlatformGeneric;
1332     if (value == "ios")
1333         return TestProtocolPlatformIOS;
1334     if (value == "macos")
1335         return TestProtocolPlatformMacOS;
1336     return WTF::nullopt;
1337 }
1338
1339
1340 inline String toProtocolString(TestProtocolDatabasePrimaryColors value)
1341 {
1342     switch(value) {
1343     case TestProtocolDatabasePrimaryColorsRed:
1344         return "red"_s;
1345     case TestProtocolDatabasePrimaryColorsGreen:
1346         return "green"_s;
1347     case TestProtocolDatabasePrimaryColorsBlue:
1348         return "blue"_s;
1349     }
1350 }
1351
1352 template<>
1353 inline Optional<TestProtocolDatabasePrimaryColors> fromProtocolString(const String& value)
1354 {
1355     if (value == "red")
1356         return TestProtocolDatabasePrimaryColorsRed;
1357     if (value == "green")
1358         return TestProtocolDatabasePrimaryColorsGreen;
1359     if (value == "blue")
1360         return TestProtocolDatabasePrimaryColorsBlue;
1361     return WTF::nullopt;
1362 }
1363
1364 inline String toProtocolString(TestProtocolDatabaseExecuteAllOptionalParametersPrintColor value)
1365 {
1366     switch(value) {
1367     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan:
1368         return "cyan"_s;
1369     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta:
1370         return "magenta"_s;
1371     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow:
1372         return "yellow"_s;
1373     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack:
1374         return "black"_s;
1375     }
1376 }
1377
1378 template<>
1379 inline Optional<TestProtocolDatabaseExecuteAllOptionalParametersPrintColor> fromProtocolString(const String& value)
1380 {
1381     if (value == "cyan")
1382         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan;
1383     if (value == "magenta")
1384         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta;
1385     if (value == "yellow")
1386         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow;
1387     if (value == "black")
1388         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack;
1389     return WTF::nullopt;
1390 }
1391
1392 inline String toProtocolString(TestProtocolDatabaseExecuteAllOptionalParametersPrintColor value)
1393 {
1394     switch(value) {
1395     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan:
1396         return "cyan"_s;
1397     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta:
1398         return "magenta"_s;
1399     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow:
1400         return "yellow"_s;
1401     case TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack:
1402         return "black"_s;
1403     }
1404 }
1405
1406 template<>
1407 inline Optional<TestProtocolDatabaseExecuteAllOptionalParametersPrintColor> fromProtocolString(const String& value)
1408 {
1409     if (value == "cyan")
1410         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorCyan;
1411     if (value == "magenta")
1412         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorMagenta;
1413     if (value == "yellow")
1414         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorYellow;
1415     if (value == "black")
1416         return TestProtocolDatabaseExecuteAllOptionalParametersPrintColorBlack;
1417     return WTF::nullopt;
1418 }
1419
1420 inline String toProtocolString(TestProtocolDatabaseExecuteNoOptionalParametersPrintColor value)
1421 {
1422     switch(value) {
1423     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan:
1424         return "cyan"_s;
1425     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta:
1426         return "magenta"_s;
1427     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow:
1428         return "yellow"_s;
1429     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack:
1430         return "black"_s;
1431     }
1432 }
1433
1434 template<>
1435 inline Optional<TestProtocolDatabaseExecuteNoOptionalParametersPrintColor> fromProtocolString(const String& value)
1436 {
1437     if (value == "cyan")
1438         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan;
1439     if (value == "magenta")
1440         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta;
1441     if (value == "yellow")
1442         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow;
1443     if (value == "black")
1444         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack;
1445     return WTF::nullopt;
1446 }
1447
1448 inline String toProtocolString(TestProtocolDatabaseExecuteNoOptionalParametersPrintColor value)
1449 {
1450     switch(value) {
1451     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan:
1452         return "cyan"_s;
1453     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta:
1454         return "magenta"_s;
1455     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow:
1456         return "yellow"_s;
1457     case TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack:
1458         return "black"_s;
1459     }
1460 }
1461
1462 template<>
1463 inline Optional<TestProtocolDatabaseExecuteNoOptionalParametersPrintColor> fromProtocolString(const String& value)
1464 {
1465     if (value == "cyan")
1466         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorCyan;
1467     if (value == "magenta")
1468         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorMagenta;
1469     if (value == "yellow")
1470         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorYellow;
1471     if (value == "black")
1472         return TestProtocolDatabaseExecuteNoOptionalParametersPrintColorBlack;
1473     return WTF::nullopt;
1474 }
1475
1476 } // namespace Inspector
1477
1478 ### End File: TestProtocolTypeConversions.h
1479
1480 ### Begin File: TestProtocolTypeConversions.mm
1481 /*
1482  * Copyright (C) 2013 Google Inc. All rights reserved.
1483  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
1484  * Copyright (C) 2014 University of Washington. All rights reserved.
1485  *
1486  * Redistribution and use in source and binary forms, with or without
1487  * modification, are permitted provided that the following conditions
1488  * are met:
1489  * 1. Redistributions of source code must retain the above copyright
1490  *    notice, this list of conditions and the following disclaimer.
1491  * 2. Redistributions in binary form must reproduce the above copyright
1492  *    notice, this list of conditions and the following disclaimer in the
1493  *    documentation and/or other materials provided with the distribution.
1494  *
1495  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1496  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1497  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1498  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1499  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1500  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1501  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1502  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1503  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1504  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1505  * THE POSSIBILITY OF SUCH DAMAGE.
1506  */
1507
1508 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1509 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1510
1511 #import "TestProtocolTypeConversions.h"
1512
1513 #import "TestProtocol.h"
1514 #import "TestProtocolTypeParser.h"
1515 #import <WebInspector/RWIProtocolJSONObjectPrivate.h>
1516
1517 using namespace Inspector;
1518
1519 @interface TestProtocolTypeConversions (DatabaseDomain)
1520
1521 + (void)_parseDatabaseId:(NSNumber **)outValue fromPayload:(id)payload;
1522 + (void)_parsePrimaryColors:(NSNumber **)outValue fromPayload:(id)payload;
1523 + (void)_parseColorList:(NSArray/*<NSString>*/ **)outValue fromPayload:(id)payload;
1524 + (void)_parseError:(TestProtocolDatabaseError **)outValue fromPayload:(id)payload;
1525
1526 @end
1527
1528 @implementation TestProtocolTypeConversions (DatabaseDomain)
1529
1530 + (void)_parseDatabaseId:(NSNumber **)outValue fromPayload:(id)payload
1531 {
1532     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSNumber class]);
1533     *outValue = (NSNumber *)payload;
1534 }
1535
1536 + (void)_parsePrimaryColors:(NSNumber **)outValue fromPayload:(id)payload
1537 {
1538     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSString class]);
1539     Optional<TestProtocolDatabasePrimaryColors> result = Inspector::fromProtocolString<TestProtocolDatabasePrimaryColors>(payload);
1540     THROW_EXCEPTION_FOR_BAD_ENUM_VALUE(result, @"PrimaryColors");
1541     *outValue = @(result.value());
1542 }
1543
1544 + (void)_parseColorList:(NSArray/*<NSString>*/ **)outValue fromPayload:(id)payload
1545 {
1546     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSArray/*<NSString>*/ class]);
1547     *outValue = (NSArray/*<NSString>*/ *)payload;
1548 }
1549
1550 + (void)_parseError:(TestProtocolDatabaseError **)outValue fromPayload:(id)payload
1551 {
1552     THROW_EXCEPTION_FOR_BAD_TYPE(payload, [NSDictionary class]);
1553     *outValue = [[TestProtocolDatabaseError alloc] initWithPayload:payload];
1554 }
1555
1556 @end
1557
1558
1559 ### End File: TestProtocolTypeConversions.mm
1560
1561 ### Begin File: TestProtocolTypes.mm
1562 /*
1563  * Copyright (C) 2013 Google Inc. All rights reserved.
1564  * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
1565  * Copyright (C) 2014 University of Washington. All rights reserved.
1566  *
1567  * Redistribution and use in source and binary forms, with or without
1568  * modification, are permitted provided that the following conditions
1569  * are met:
1570  * 1. Redistributions of source code must retain the above copyright
1571  *    notice, this list of conditions and the following disclaimer.
1572  * 2. Redistributions in binary form must reproduce the above copyright
1573  *    notice, this list of conditions and the following disclaimer in the
1574  *    documentation and/or other materials provided with the distribution.
1575  *
1576  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1577  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1578  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1579  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1580  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1581  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1582  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1583  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1584  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1585  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1586  * THE POSSIBILITY OF SUCH DAMAGE.
1587  */
1588
1589 // DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
1590 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
1591
1592 #import "TestProtocolInternal.h"
1593
1594 #import "TestProtocolTypeConversions.h"
1595 #import <WebInspector/RWIProtocolJSONObjectPrivate.h>
1596 #import <wtf/Assertions.h>
1597 #import <wtf/JSONValues.h>
1598
1599 using namespace Inspector;
1600
1601
1602 @implementation TestProtocolDatabaseError
1603
1604 - (instancetype)initWithPayload:(nonnull NSDictionary<NSString *, id> *)payload
1605 {
1606     if (!(self = [super init]))
1607         return nil;
1608
1609     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(payload[@"message"], @"message");
1610     self.message = payload[@"message"];
1611
1612     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(payload[@"code"], @"code");
1613     self.code = [payload[@"code"] integerValue];
1614
1615     return self;
1616 }
1617 - (instancetype)initWithProtocolObject:(RWIProtocolJSONObject *)object
1618 {
1619     if (!(self = [super initWithJSONObject:[object toJSONObject].get()]))
1620         return nil;
1621
1622     return self;
1623 }
1624
1625 - (instancetype)initWithMessage:(NSString *)message code:(int)code
1626 {
1627     if (!(self = [super init]))
1628         return nil;
1629
1630     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(message, @"message");
1631
1632     self.message = message;
1633     self.code = code;
1634
1635     return self;
1636 }
1637
1638 - (void)setMessage:(NSString *)message
1639 {
1640     [super setString:message forKey:@"message"];
1641 }
1642
1643 - (NSString *)message
1644 {
1645     return [super stringForKey:@"message"];
1646 }
1647
1648 - (void)setCode:(int)code
1649 {
1650     [super setInteger:code forKey:@"code"];
1651 }
1652
1653 - (int)code
1654 {
1655     return [super integerForKey:@"code"];
1656 }
1657
1658 @end
1659
1660
1661 ### End File: TestProtocolTypes.mm