OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // This file has been auto-generated by code_generator_v8.py. DO NOT MODIFY! | |
6 | |
7 #include "config.h" | |
8 #include "V8TestInterfaceConstructor.h" | |
9 | |
10 #include "bindings/core/v8/Dictionary.h" | |
11 #include "bindings/core/v8/ExceptionState.h" | |
12 #include "bindings/core/v8/V8DOMConfiguration.h" | |
13 #include "bindings/core/v8/V8HiddenValue.h" | |
14 #include "bindings/core/v8/V8ObjectConstructor.h" | |
15 #include "bindings/tests/v8/V8TestInterfaceEmpty.h" | |
16 #include "core/dom/ContextFeatures.h" | |
17 #include "core/dom/Document.h" | |
18 #include "core/frame/LocalDOMWindow.h" | |
19 #include "core/frame/UseCounter.h" | |
20 #include "platform/RuntimeEnabledFeatures.h" | |
21 #include "platform/TraceEvent.h" | |
22 #include "wtf/GetPtr.h" | |
23 #include "wtf/RefPtr.h" | |
24 | |
25 namespace blink { | |
26 | |
27 const WrapperTypeInfo V8TestInterfaceConstructor::wrapperTypeInfo = { gin::kEmbe
dderBlink, V8TestInterfaceConstructor::domTemplate, V8TestInterfaceConstructor::
refObject, V8TestInterfaceConstructor::derefObject, V8TestInterfaceConstructor::
createPersistentHandle, 0, 0, 0, V8TestInterfaceConstructor::installConditionall
yEnabledMethods, V8TestInterfaceConstructor::installConditionallyEnabledProperti
es, 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClass
Id, WrapperTypeInfo::Independent, WrapperTypeInfo::RefCountedObject }; | |
28 | |
29 // This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestInterfac
eConstructor.h. | |
30 // For details, see the comment of DEFINE_WRAPPERTYPEINFO in | |
31 // bindings/core/v8/ScriptWrappable.h. | |
32 const WrapperTypeInfo& TestInterfaceConstructor::s_wrapperTypeInfo = V8TestInter
faceConstructor::wrapperTypeInfo; | |
33 | |
34 namespace TestInterfaceConstructorV8Internal { | |
35 | |
36 template <typename T> void V8_USE(T) { } | |
37 | |
38 static void constructor1(const v8::FunctionCallbackInfo<v8::Value>& info) | |
39 { | |
40 ExceptionState exceptionState(ExceptionState::ConstructionContext, "TestInte
rfaceConstructor", info.Holder(), info.GetIsolate()); | |
41 ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate
()); | |
42 Document& document = *toDocument(currentExecutionContext(info.GetIsolate()))
; | |
43 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::create(exe
cutionContext, document, exceptionState); | |
44 if (exceptionState.hadException()) { | |
45 exceptionState.throwIfNeeded(); | |
46 return; | |
47 } | |
48 v8::Handle<v8::Object> wrapper = info.Holder(); | |
49 impl->associateWithWrapper(&V8TestInterfaceConstructor::wrapperTypeInfo, wra
pper, info.GetIsolate()); | |
50 v8SetReturnValue(info, wrapper); | |
51 } | |
52 | |
53 static void constructor2(const v8::FunctionCallbackInfo<v8::Value>& info) | |
54 { | |
55 ExceptionState exceptionState(ExceptionState::ConstructionContext, "TestInte
rfaceConstructor", info.Holder(), info.GetIsolate()); | |
56 double doubleArg; | |
57 V8StringResource<> stringArg; | |
58 TestInterfaceEmpty* testInterfaceEmptyArg; | |
59 Dictionary dictionaryArg; | |
60 Vector<String> sequenceStringArg; | |
61 Vector<Dictionary> sequenceDictionaryArg; | |
62 Dictionary optionalDictionaryArg; | |
63 TestInterfaceEmpty* optionalTestInterfaceEmptyArg; | |
64 { | |
65 v8::TryCatch block; | |
66 V8RethrowTryCatchScope rethrow(block); | |
67 TONATIVE_VOID_INTERNAL(doubleArg, static_cast<double>(info[0]->NumberVal
ue())); | |
68 TOSTRING_VOID_INTERNAL(stringArg, info[1]); | |
69 TONATIVE_VOID_INTERNAL(testInterfaceEmptyArg, V8TestInterfaceEmpty::toIm
plWithTypeCheck(info.GetIsolate(), info[2])); | |
70 TONATIVE_VOID_INTERNAL(dictionaryArg, Dictionary(info[3], info.GetIsolat
e())); | |
71 if (!dictionaryArg.isUndefinedOrNull() && !dictionaryArg.isObject()) { | |
72 exceptionState.throwTypeError("parameter 4 ('dictionaryArg') is not
an object."); | |
73 exceptionState.throwIfNeeded(); | |
74 return; | |
75 } | |
76 TONATIVE_VOID_INTERNAL(sequenceStringArg, toImplArray<String>(info[4], 5
, info.GetIsolate())); | |
77 TONATIVE_VOID_INTERNAL(sequenceDictionaryArg, toImplArray<Dictionary>(in
fo[5], 6, info.GetIsolate())); | |
78 TONATIVE_VOID_INTERNAL(optionalDictionaryArg, Dictionary(info[6], info.G
etIsolate())); | |
79 if (!optionalDictionaryArg.isUndefinedOrNull() && !optionalDictionaryArg
.isObject()) { | |
80 exceptionState.throwTypeError("parameter 7 ('optionalDictionaryArg')
is not an object."); | |
81 exceptionState.throwIfNeeded(); | |
82 return; | |
83 } | |
84 TONATIVE_VOID_INTERNAL(optionalTestInterfaceEmptyArg, V8TestInterfaceEmp
ty::toImplWithTypeCheck(info.GetIsolate(), info[7])); | |
85 } | |
86 ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate
()); | |
87 Document& document = *toDocument(currentExecutionContext(info.GetIsolate()))
; | |
88 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::create(exe
cutionContext, document, doubleArg, stringArg, testInterfaceEmptyArg, dictionary
Arg, sequenceStringArg, sequenceDictionaryArg, optionalDictionaryArg, optionalTe
stInterfaceEmptyArg, exceptionState); | |
89 if (exceptionState.hadException()) { | |
90 exceptionState.throwIfNeeded(); | |
91 return; | |
92 } | |
93 v8::Handle<v8::Object> wrapper = info.Holder(); | |
94 impl->associateWithWrapper(&V8TestInterfaceConstructor::wrapperTypeInfo, wra
pper, info.GetIsolate()); | |
95 v8SetReturnValue(info, wrapper); | |
96 } | |
97 | |
98 static void constructor3(const v8::FunctionCallbackInfo<v8::Value>& info) | |
99 { | |
100 ExceptionState exceptionState(ExceptionState::ConstructionContext, "TestInte
rfaceConstructor", info.Holder(), info.GetIsolate()); | |
101 V8StringResource<> arg; | |
102 V8StringResource<> optArg; | |
103 { | |
104 TOSTRING_VOID_INTERNAL(arg, info[0]); | |
105 if (UNLIKELY(info.Length() <= 1)) { | |
106 ExecutionContext* executionContext = currentExecutionContext(info.Ge
tIsolate()); | |
107 Document& document = *toDocument(currentExecutionContext(info.GetIso
late())); | |
108 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::cr
eate(executionContext, document, arg, exceptionState); | |
109 if (exceptionState.hadException()) { | |
110 exceptionState.throwIfNeeded(); | |
111 return; | |
112 } | |
113 v8::Handle<v8::Object> wrapper = info.Holder(); | |
114 impl->associateWithWrapper(&V8TestInterfaceConstructor::wrapperTypeI
nfo, wrapper, info.GetIsolate()); | |
115 v8SetReturnValue(info, wrapper); | |
116 return; | |
117 } | |
118 TOSTRING_VOID_INTERNAL(optArg, info[1]); | |
119 } | |
120 ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate
()); | |
121 Document& document = *toDocument(currentExecutionContext(info.GetIsolate()))
; | |
122 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::create(exe
cutionContext, document, arg, optArg, exceptionState); | |
123 if (exceptionState.hadException()) { | |
124 exceptionState.throwIfNeeded(); | |
125 return; | |
126 } | |
127 v8::Handle<v8::Object> wrapper = info.Holder(); | |
128 impl->associateWithWrapper(&V8TestInterfaceConstructor::wrapperTypeInfo, wra
pper, info.GetIsolate()); | |
129 v8SetReturnValue(info, wrapper); | |
130 } | |
131 | |
132 static void constructor4(const v8::FunctionCallbackInfo<v8::Value>& info) | |
133 { | |
134 ExceptionState exceptionState(ExceptionState::ConstructionContext, "TestInte
rfaceConstructor", info.Holder(), info.GetIsolate()); | |
135 V8StringResource<> arg; | |
136 V8StringResource<> arg2; | |
137 V8StringResource<> arg3; | |
138 { | |
139 TOSTRING_VOID_INTERNAL(arg, info[0]); | |
140 TOSTRING_VOID_INTERNAL(arg2, info[1]); | |
141 TOSTRING_VOID_INTERNAL(arg3, info[2]); | |
142 } | |
143 ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate
()); | |
144 Document& document = *toDocument(currentExecutionContext(info.GetIsolate()))
; | |
145 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::create(exe
cutionContext, document, arg, arg2, arg3, exceptionState); | |
146 if (exceptionState.hadException()) { | |
147 exceptionState.throwIfNeeded(); | |
148 return; | |
149 } | |
150 v8::Handle<v8::Object> wrapper = info.Holder(); | |
151 impl->associateWithWrapper(&V8TestInterfaceConstructor::wrapperTypeInfo, wra
pper, info.GetIsolate()); | |
152 v8SetReturnValue(info, wrapper); | |
153 } | |
154 | |
155 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) | |
156 { | |
157 ExceptionState exceptionState(ExceptionState::ConstructionContext, "TestInte
rfaceConstructor", info.Holder(), info.GetIsolate()); | |
158 switch (std::min(8, info.Length())) { | |
159 case 0: | |
160 if (true) { | |
161 TestInterfaceConstructorV8Internal::constructor1(info); | |
162 return; | |
163 } | |
164 break; | |
165 case 1: | |
166 if (true) { | |
167 TestInterfaceConstructorV8Internal::constructor3(info); | |
168 return; | |
169 } | |
170 break; | |
171 case 2: | |
172 if (true) { | |
173 TestInterfaceConstructorV8Internal::constructor3(info); | |
174 return; | |
175 } | |
176 break; | |
177 case 3: | |
178 if (true) { | |
179 TestInterfaceConstructorV8Internal::constructor4(info); | |
180 return; | |
181 } | |
182 break; | |
183 case 6: | |
184 if (true) { | |
185 TestInterfaceConstructorV8Internal::constructor2(info); | |
186 return; | |
187 } | |
188 break; | |
189 case 7: | |
190 if (true) { | |
191 TestInterfaceConstructorV8Internal::constructor2(info); | |
192 return; | |
193 } | |
194 break; | |
195 case 8: | |
196 if (true) { | |
197 TestInterfaceConstructorV8Internal::constructor2(info); | |
198 return; | |
199 } | |
200 break; | |
201 default: | |
202 if (info.Length() >= 0) { | |
203 throwArityTypeError(exceptionState, "[0, 1, 2, 3, 6, 7, 8]", info.Le
ngth()); | |
204 return; | |
205 } | |
206 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(0, i
nfo.Length())); | |
207 exceptionState.throwIfNeeded(); | |
208 return; | |
209 } | |
210 exceptionState.throwTypeError("No matching constructor signature."); | |
211 exceptionState.throwIfNeeded(); | |
212 } | |
213 | |
214 } // namespace TestInterfaceConstructorV8Internal | |
215 | |
216 const WrapperTypeInfo V8TestInterfaceConstructorConstructor::wrapperTypeInfo = {
gin::kEmbedderBlink, V8TestInterfaceConstructorConstructor::domTemplate, V8Test
InterfaceConstructor::refObject, V8TestInterfaceConstructor::derefObject, V8Test
InterfaceConstructor::createPersistentHandle, 0, 0, 0, V8TestInterfaceConstructo
r::installConditionallyEnabledMethods, V8TestInterfaceConstructor::installCondit
ionallyEnabledProperties, 0, WrapperTypeInfo::WrapperTypeObjectPrototype, Wrappe
rTypeInfo::ObjectClassId, WrapperTypeInfo::Independent, WrapperTypeInfo::RefCoun
tedObject }; | |
217 | |
218 static void V8TestInterfaceConstructorConstructorCallback(const v8::FunctionCall
backInfo<v8::Value>& info) | |
219 { | |
220 if (!info.IsConstructCall()) { | |
221 V8ThrowException::throwTypeError(ExceptionMessages::constructorNotCallab
leAsFunction("Audio"), info.GetIsolate()); | |
222 return; | |
223 } | |
224 | |
225 if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExis
tingObject) { | |
226 v8SetReturnValue(info, info.Holder()); | |
227 return; | |
228 } | |
229 ExceptionState exceptionState(ExceptionState::ConstructionContext, "TestInte
rfaceConstructor", info.Holder(), info.GetIsolate()); | |
230 if (UNLIKELY(info.Length() < 1)) { | |
231 setMinimumArityTypeError(exceptionState, 1, info.Length()); | |
232 exceptionState.throwIfNeeded(); | |
233 return; | |
234 } | |
235 V8StringResource<> arg; | |
236 V8StringResource<> optArg; | |
237 { | |
238 TOSTRING_VOID_INTERNAL(arg, info[0]); | |
239 if (UNLIKELY(info.Length() <= 1)) { | |
240 ExecutionContext* executionContext = currentExecutionContext(info.Ge
tIsolate()); | |
241 Document& document = *toDocument(currentExecutionContext(info.GetIso
late())); | |
242 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::cr
eateForJSConstructor(executionContext, document, arg, exceptionState); | |
243 if (exceptionState.hadException()) { | |
244 exceptionState.throwIfNeeded(); | |
245 return; | |
246 } | |
247 v8::Handle<v8::Object> wrapper = info.Holder(); | |
248 impl->associateWithWrapper(&V8TestInterfaceConstructorConstructor::w
rapperTypeInfo, wrapper, info.GetIsolate()); | |
249 v8SetReturnValue(info, wrapper); | |
250 return; | |
251 } | |
252 TOSTRING_VOID_INTERNAL(optArg, info[1]); | |
253 } | |
254 ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate
()); | |
255 Document& document = *toDocument(currentExecutionContext(info.GetIsolate()))
; | |
256 RefPtr<TestInterfaceConstructor> impl = TestInterfaceConstructor::createForJ
SConstructor(executionContext, document, arg, optArg, exceptionState); | |
257 if (exceptionState.hadException()) { | |
258 exceptionState.throwIfNeeded(); | |
259 return; | |
260 } | |
261 v8::Handle<v8::Object> wrapper = info.Holder(); | |
262 impl->associateWithWrapper(&V8TestInterfaceConstructorConstructor::wrapperTy
peInfo, wrapper, info.GetIsolate()); | |
263 v8SetReturnValue(info, wrapper); | |
264 } | |
265 | |
266 v8::Handle<v8::FunctionTemplate> V8TestInterfaceConstructorConstructor::domTempl
ate(v8::Isolate* isolate) | |
267 { | |
268 static int domTemplateKey; // This address is used for a key to look up the
dom template. | |
269 V8PerIsolateData* data = V8PerIsolateData::from(isolate); | |
270 v8::Local<v8::FunctionTemplate> result = data->existingDOMTemplate(&domTempl
ateKey); | |
271 if (!result.IsEmpty()) | |
272 return result; | |
273 | |
274 TRACE_EVENT_SCOPED_SAMPLING_STATE("blink", "BuildDOMTemplate"); | |
275 result = v8::FunctionTemplate::New(isolate, V8TestInterfaceConstructorConstr
uctorCallback); | |
276 v8::Local<v8::ObjectTemplate> instanceTemplate = result->InstanceTemplate(); | |
277 instanceTemplate->SetInternalFieldCount(V8TestInterfaceConstructor::internal
FieldCount); | |
278 result->SetClassName(v8AtomicString(isolate, "TestInterfaceConstructor")); | |
279 result->Inherit(V8TestInterfaceConstructor::domTemplate(isolate)); | |
280 data->setDOMTemplate(&domTemplateKey, result); | |
281 return result; | |
282 } | |
283 | |
284 void V8TestInterfaceConstructor::constructorCallback(const v8::FunctionCallbackI
nfo<v8::Value>& info) | |
285 { | |
286 TRACE_EVENT_SCOPED_SAMPLING_STATE("blink", "DOMConstructor"); | |
287 UseCounter::count(callingExecutionContext(info.GetIsolate()), UseCounter::Te
stFeature); | |
288 if (!info.IsConstructCall()) { | |
289 V8ThrowException::throwTypeError(ExceptionMessages::constructorNotCallab
leAsFunction("TestInterfaceConstructor"), info.GetIsolate()); | |
290 return; | |
291 } | |
292 | |
293 if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExis
tingObject) { | |
294 v8SetReturnValue(info, info.Holder()); | |
295 return; | |
296 } | |
297 | |
298 TestInterfaceConstructorV8Internal::constructor(info); | |
299 } | |
300 | |
301 static void installV8TestInterfaceConstructorTemplate(v8::Handle<v8::FunctionTem
plate> functionTemplate, v8::Isolate* isolate) | |
302 { | |
303 functionTemplate->ReadOnlyPrototype(); | |
304 | |
305 v8::Local<v8::Signature> defaultSignature; | |
306 defaultSignature = V8DOMConfiguration::installDOMClassTemplate(functionTempl
ate, "TestInterfaceConstructor", v8::Local<v8::FunctionTemplate>(), V8TestInterf
aceConstructor::internalFieldCount, | |
307 0, 0, | |
308 0, 0, | |
309 0, 0, | |
310 isolate); | |
311 functionTemplate->SetCallHandler(V8TestInterfaceConstructor::constructorCall
back); | |
312 functionTemplate->SetLength(0); | |
313 v8::Local<v8::ObjectTemplate> instanceTemplate ALLOW_UNUSED = functionTempla
te->InstanceTemplate(); | |
314 v8::Local<v8::ObjectTemplate> prototypeTemplate ALLOW_UNUSED = functionTempl
ate->PrototypeTemplate(); | |
315 | |
316 // Custom toString template | |
317 functionTemplate->Set(v8AtomicString(isolate, "toString"), V8PerIsolateData:
:from(isolate)->toStringTemplate()); | |
318 } | |
319 | |
320 v8::Handle<v8::FunctionTemplate> V8TestInterfaceConstructor::domTemplate(v8::Iso
late* isolate) | |
321 { | |
322 return V8DOMConfiguration::domClassTemplate(isolate, const_cast<WrapperTypeI
nfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructorTemplate); | |
323 } | |
324 | |
325 bool V8TestInterfaceConstructor::hasInstance(v8::Handle<v8::Value> v8Value, v8::
Isolate* isolate) | |
326 { | |
327 return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Valu
e); | |
328 } | |
329 | |
330 v8::Handle<v8::Object> V8TestInterfaceConstructor::findInstanceInPrototypeChain(
v8::Handle<v8::Value> v8Value, v8::Isolate* isolate) | |
331 { | |
332 return V8PerIsolateData::from(isolate)->findInstanceInPrototypeChain(&wrappe
rTypeInfo, v8Value); | |
333 } | |
334 | |
335 TestInterfaceConstructor* V8TestInterfaceConstructor::toImplWithTypeCheck(v8::Is
olate* isolate, v8::Handle<v8::Value> value) | |
336 { | |
337 return hasInstance(value, isolate) ? blink::toScriptWrappableBase(v8::Handle
<v8::Object>::Cast(value))->toImpl<TestInterfaceConstructor>() : 0; | |
338 } | |
339 | |
340 | |
341 void V8TestInterfaceConstructor::refObject(ScriptWrappableBase* internalPointer) | |
342 { | |
343 internalPointer->toImpl<TestInterfaceConstructor>()->ref(); | |
344 } | |
345 | |
346 void V8TestInterfaceConstructor::derefObject(ScriptWrappableBase* internalPointe
r) | |
347 { | |
348 internalPointer->toImpl<TestInterfaceConstructor>()->deref(); | |
349 } | |
350 | |
351 WrapperPersistentNode* V8TestInterfaceConstructor::createPersistentHandle(Script
WrappableBase* internalPointer) | |
352 { | |
353 ASSERT_NOT_REACHED(); | |
354 return 0; | |
355 } | |
356 | |
357 template<> | |
358 v8::Handle<v8::Value> toV8NoInline(TestInterfaceConstructor* impl, v8::Handle<v8
::Object> creationContext, v8::Isolate* isolate) | |
359 { | |
360 return toV8(impl, creationContext, isolate); | |
361 } | |
362 | |
363 } // namespace blink | |
OLD | NEW |