| Index: third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
|
| index c62602cb7d672b6c224776bc22151eeeff8ee324..83a29d059a2866a78698f721f240793e2841abe7 100644
|
| --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
|
| +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
|
| @@ -54,229 +54,224 @@ static_assert(
|
|
|
| namespace TestInterfaceConstructorV8Internal {
|
|
|
| -static void constructor1(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| - ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| -
|
| - ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| - Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, exceptionState);
|
| - if (exceptionState.hadException()) {
|
| - return;
|
| - }
|
| - v8::Local<v8::Object> wrapper = info.Holder();
|
| - wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| - v8SetReturnValue(info, wrapper);
|
| +static void constructor1(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| + ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| +
|
| + ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| + Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, exceptionState);
|
| + if (exceptionState.hadException()) {
|
| + return;
|
| + }
|
| + v8::Local<v8::Object> wrapper = info.Holder();
|
| + wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| + v8SetReturnValue(info, wrapper);
|
| }
|
|
|
| -static void constructor2(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| - ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| -
|
| - double doubleArg;
|
| - V8StringResource<> stringArg;
|
| - TestInterfaceEmpty* testInterfaceEmptyArg;
|
| - Dictionary dictionaryArg;
|
| - Vector<String> sequenceStringArg;
|
| - Vector<Dictionary> sequenceDictionaryArg;
|
| - HeapVector<LongOrTestDictionary> sequenceLongOrTestDictionaryArg;
|
| - Dictionary optionalDictionaryArg;
|
| - TestInterfaceEmpty* optionalTestInterfaceEmptyArg;
|
| - doubleArg = toRestrictedDouble(info.GetIsolate(), info[0], exceptionState);
|
| - if (exceptionState.hadException())
|
| - return;
|
| -
|
| - stringArg = info[1];
|
| - if (!stringArg.prepare())
|
| - return;
|
| -
|
| - testInterfaceEmptyArg = V8TestInterfaceEmpty::toImplWithTypeCheck(info.GetIsolate(), info[2]);
|
| - if (!testInterfaceEmptyArg) {
|
| - exceptionState.throwTypeError("parameter 3 is not of type 'TestInterfaceEmpty'.");
|
| -
|
| - return;
|
| - }
|
| -
|
| - if (!isUndefinedOrNull(info[3]) && !info[3]->IsObject()) {
|
| - exceptionState.throwTypeError("parameter 4 ('dictionaryArg') is not an object.");
|
| -
|
| - return;
|
| - }
|
| - dictionaryArg = Dictionary(info[3], info.GetIsolate(), exceptionState);
|
| - if (exceptionState.hadException())
|
| - return;
|
| -
|
| - sequenceStringArg = toImplArray<Vector<String>>(info[4], 5, info.GetIsolate(), exceptionState);
|
| - if (exceptionState.hadException())
|
| - return;
|
| -
|
| - sequenceDictionaryArg = toImplArray<Vector<Dictionary>>(info[5], 6, info.GetIsolate(), exceptionState);
|
| - if (exceptionState.hadException())
|
| - return;
|
| -
|
| - sequenceLongOrTestDictionaryArg = toImplArray<HeapVector<LongOrTestDictionary>>(info[6], 7, info.GetIsolate(), exceptionState);
|
| - if (exceptionState.hadException())
|
| - return;
|
| -
|
| - if (!isUndefinedOrNull(info[7]) && !info[7]->IsObject()) {
|
| - exceptionState.throwTypeError("parameter 8 ('optionalDictionaryArg') is not an object.");
|
| -
|
| - return;
|
| - }
|
| - optionalDictionaryArg = Dictionary(info[7], info.GetIsolate(), exceptionState);
|
| - if (exceptionState.hadException())
|
| - return;
|
| -
|
| - optionalTestInterfaceEmptyArg = V8TestInterfaceEmpty::toImplWithTypeCheck(info.GetIsolate(), info[8]);
|
| - if (!optionalTestInterfaceEmptyArg) {
|
| - exceptionState.throwTypeError("parameter 9 is not of type 'TestInterfaceEmpty'.");
|
| -
|
| - return;
|
| - }
|
| -
|
| - ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| - Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, doubleArg, stringArg, testInterfaceEmptyArg, dictionaryArg, sequenceStringArg, sequenceDictionaryArg, sequenceLongOrTestDictionaryArg, optionalDictionaryArg, optionalTestInterfaceEmptyArg, exceptionState);
|
| - if (exceptionState.hadException()) {
|
| - return;
|
| - }
|
| - v8::Local<v8::Object> wrapper = info.Holder();
|
| - wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| - v8SetReturnValue(info, wrapper);
|
| +static void constructor2(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| + ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| +
|
| + double doubleArg;
|
| + V8StringResource<> stringArg;
|
| + TestInterfaceEmpty* testInterfaceEmptyArg;
|
| + Dictionary dictionaryArg;
|
| + Vector<String> sequenceStringArg;
|
| + Vector<Dictionary> sequenceDictionaryArg;
|
| + HeapVector<LongOrTestDictionary> sequenceLongOrTestDictionaryArg;
|
| + Dictionary optionalDictionaryArg;
|
| + TestInterfaceEmpty* optionalTestInterfaceEmptyArg;
|
| + doubleArg = toRestrictedDouble(info.GetIsolate(), info[0], exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| +
|
| + stringArg = info[1];
|
| + if (!stringArg.prepare())
|
| + return;
|
| +
|
| + testInterfaceEmptyArg = V8TestInterfaceEmpty::toImplWithTypeCheck(info.GetIsolate(), info[2]);
|
| + if (!testInterfaceEmptyArg) {
|
| + exceptionState.throwTypeError("parameter 3 is not of type 'TestInterfaceEmpty'.");
|
| +
|
| + return;
|
| + }
|
| +
|
| + if (!isUndefinedOrNull(info[3]) && !info[3]->IsObject()) {
|
| + exceptionState.throwTypeError("parameter 4 ('dictionaryArg') is not an object.");
|
| +
|
| + return;
|
| + }
|
| + dictionaryArg = Dictionary(info[3], info.GetIsolate(), exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| +
|
| + sequenceStringArg = toImplArray<Vector<String>>(info[4], 5, info.GetIsolate(), exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| +
|
| + sequenceDictionaryArg = toImplArray<Vector<Dictionary>>(info[5], 6, info.GetIsolate(), exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| +
|
| + sequenceLongOrTestDictionaryArg = toImplArray<HeapVector<LongOrTestDictionary>>(info[6], 7, info.GetIsolate(), exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| +
|
| + if (!isUndefinedOrNull(info[7]) && !info[7]->IsObject()) {
|
| + exceptionState.throwTypeError("parameter 8 ('optionalDictionaryArg') is not an object.");
|
| +
|
| + return;
|
| + }
|
| + optionalDictionaryArg = Dictionary(info[7], info.GetIsolate(), exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| +
|
| + optionalTestInterfaceEmptyArg = V8TestInterfaceEmpty::toImplWithTypeCheck(info.GetIsolate(), info[8]);
|
| + if (!optionalTestInterfaceEmptyArg) {
|
| + exceptionState.throwTypeError("parameter 9 is not of type 'TestInterfaceEmpty'.");
|
| +
|
| + return;
|
| + }
|
| +
|
| + ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| + Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, doubleArg, stringArg, testInterfaceEmptyArg, dictionaryArg, sequenceStringArg, sequenceDictionaryArg, sequenceLongOrTestDictionaryArg, optionalDictionaryArg, optionalTestInterfaceEmptyArg, exceptionState);
|
| + if (exceptionState.hadException()) {
|
| + return;
|
| + }
|
| + v8::Local<v8::Object> wrapper = info.Holder();
|
| + wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| + v8SetReturnValue(info, wrapper);
|
| }
|
|
|
| -static void constructor3(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| - ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| -
|
| - V8StringResource<> arg;
|
| - V8StringResource<> optArg;
|
| - int numArgsPassed = info.Length();
|
| - while (numArgsPassed > 0) {
|
| - if (!info[numArgsPassed - 1]->IsUndefined())
|
| - break;
|
| - --numArgsPassed;
|
| - }
|
| - arg = info[0];
|
| - if (!arg.prepare())
|
| - return;
|
| -
|
| - if (UNLIKELY(numArgsPassed <= 1)) {
|
| - ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| - Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, arg, exceptionState);
|
| - if (exceptionState.hadException()) {
|
| - return;
|
| - }
|
| - v8::Local<v8::Object> wrapper = info.Holder();
|
| - wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| - v8SetReturnValue(info, wrapper);
|
| - return;
|
| - }
|
| - optArg = info[1];
|
| - if (!optArg.prepare())
|
| - return;
|
| -
|
| +static void constructor3(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| + ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| +
|
| + V8StringResource<> arg;
|
| + V8StringResource<> optArg;
|
| + int numArgsPassed = info.Length();
|
| + while (numArgsPassed > 0) {
|
| + if (!info[numArgsPassed - 1]->IsUndefined())
|
| + break;
|
| + --numArgsPassed;
|
| + }
|
| + arg = info[0];
|
| + if (!arg.prepare())
|
| + return;
|
| +
|
| + if (UNLIKELY(numArgsPassed <= 1)) {
|
| ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, arg, optArg, exceptionState);
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, arg, exceptionState);
|
| if (exceptionState.hadException()) {
|
| - return;
|
| + return;
|
| }
|
| v8::Local<v8::Object> wrapper = info.Holder();
|
| wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| v8SetReturnValue(info, wrapper);
|
| + return;
|
| + }
|
| + optArg = info[1];
|
| + if (!optArg.prepare())
|
| + return;
|
| +
|
| + ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| + Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, arg, optArg, exceptionState);
|
| + if (exceptionState.hadException()) {
|
| + return;
|
| + }
|
| + v8::Local<v8::Object> wrapper = info.Holder();
|
| + wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| + v8SetReturnValue(info, wrapper);
|
| }
|
|
|
| -static void constructor4(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| - ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| -
|
| - V8StringResource<> arg;
|
| - V8StringResource<> arg2;
|
| - V8StringResource<> arg3;
|
| - arg = info[0];
|
| - if (!arg.prepare())
|
| - return;
|
| -
|
| - arg2 = info[1];
|
| - if (!arg2.prepare())
|
| - return;
|
| -
|
| - arg3 = info[2];
|
| - if (!arg3.prepare())
|
| - return;
|
| -
|
| - ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| - Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, arg, arg2, arg3, exceptionState);
|
| - if (exceptionState.hadException()) {
|
| - return;
|
| - }
|
| - v8::Local<v8::Object> wrapper = info.Holder();
|
| - wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| - v8SetReturnValue(info, wrapper);
|
| +static void constructor4(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| + ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| +
|
| + V8StringResource<> arg;
|
| + V8StringResource<> arg2;
|
| + V8StringResource<> arg3;
|
| + arg = info[0];
|
| + if (!arg.prepare())
|
| + return;
|
| +
|
| + arg2 = info[1];
|
| + if (!arg2.prepare())
|
| + return;
|
| +
|
| + arg3 = info[2];
|
| + if (!arg3.prepare())
|
| + return;
|
| +
|
| + ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| + Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::create(scriptState, executionContext, document, arg, arg2, arg3, exceptionState);
|
| + if (exceptionState.hadException()) {
|
| + return;
|
| + }
|
| + v8::Local<v8::Object> wrapper = info.Holder();
|
| + wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructor::wrapperTypeInfo, wrapper);
|
| + v8SetReturnValue(info, wrapper);
|
| }
|
|
|
| -static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| - switch (std::min(9, info.Length())) {
|
| +static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| + switch (std::min(9, info.Length())) {
|
| case 0:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor1(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor1(info);
|
| + return;
|
| + }
|
| + break;
|
| case 1:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor3(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor3(info);
|
| + return;
|
| + }
|
| + break;
|
| case 2:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor3(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor3(info);
|
| + return;
|
| + }
|
| + break;
|
| case 3:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor4(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor4(info);
|
| + return;
|
| + }
|
| + break;
|
| case 7:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor2(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor2(info);
|
| + return;
|
| + }
|
| + break;
|
| case 8:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor2(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor2(info);
|
| + return;
|
| + }
|
| + break;
|
| case 9:
|
| - if (true) {
|
| - TestInterfaceConstructorV8Internal::constructor2(info);
|
| - return;
|
| - }
|
| - break;
|
| + if (true) {
|
| + TestInterfaceConstructorV8Internal::constructor2(info);
|
| + return;
|
| + }
|
| + break;
|
| default:
|
| - if (info.Length() >= 0) {
|
| - exceptionState.throwTypeError(ExceptionMessages::invalidArity("[0, 1, 2, 3, 7, 8, 9]", info.Length()));
|
| - return;
|
| - }
|
| - exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(0, info.Length()));
|
| + if (info.Length() >= 0) {
|
| + exceptionState.throwTypeError(ExceptionMessages::invalidArity("[0, 1, 2, 3, 7, 8, 9]", info.Length()));
|
| return;
|
| - }
|
| - exceptionState.throwTypeError("No matching constructor signature.");
|
| + }
|
| + exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(0, info.Length()));
|
| + return;
|
| + }
|
| + exceptionState.throwTypeError("No matching constructor signature.");
|
| }
|
|
|
| } // namespace TestInterfaceConstructorV8Internal
|
| @@ -292,131 +287,123 @@ const WrapperTypeInfo V8TestInterfaceConstructorConstructor::wrapperTypeInfo = {
|
| #pragma clang diagnostic pop
|
| #endif
|
|
|
| -static void V8TestInterfaceConstructorConstructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - if (!info.IsConstructCall()) {
|
| - V8ThrowException::throwTypeError(info.GetIsolate(), ExceptionMessages::constructorNotCallableAsFunction("Audio"));
|
| - return;
|
| - }
|
| -
|
| - if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExistingObject) {
|
| - v8SetReturnValue(info, info.Holder());
|
| - return;
|
| - }
|
| -
|
| - ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| - ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| -
|
| - if (UNLIKELY(info.Length() < 1)) {
|
| - exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, info.Length()));
|
| - return;
|
| - }
|
| -
|
| - V8StringResource<> arg;
|
| - V8StringResource<> optArg;
|
| - int numArgsPassed = info.Length();
|
| - while (numArgsPassed > 0) {
|
| - if (!info[numArgsPassed - 1]->IsUndefined())
|
| - break;
|
| - --numArgsPassed;
|
| - }
|
| - arg = info[0];
|
| - if (!arg.prepare())
|
| - return;
|
| -
|
| - if (UNLIKELY(numArgsPassed <= 1)) {
|
| - ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| - Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::createForJSConstructor(scriptState, executionContext, document, arg, exceptionState);
|
| - if (exceptionState.hadException()) {
|
| - return;
|
| - }
|
| - v8::Local<v8::Object> wrapper = info.Holder();
|
| - wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructorConstructor::wrapperTypeInfo, wrapper);
|
| - v8SetReturnValue(info, wrapper);
|
| - return;
|
| - }
|
| - optArg = info[1];
|
| - if (!optArg.prepare())
|
| - return;
|
| -
|
| +static void V8TestInterfaceConstructorConstructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + if (!info.IsConstructCall()) {
|
| + V8ThrowException::throwTypeError(info.GetIsolate(), ExceptionMessages::constructorNotCallableAsFunction("Audio"));
|
| + return;
|
| + }
|
| +
|
| + if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExistingObject) {
|
| + v8SetReturnValue(info, info.Holder());
|
| + return;
|
| + }
|
| +
|
| + ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ConstructionContext, "TestInterfaceConstructor");
|
| + ScriptState* scriptState = ScriptState::forReceiverObject(info);
|
| +
|
| + if (UNLIKELY(info.Length() < 1)) {
|
| + exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, info.Length()));
|
| + return;
|
| + }
|
| +
|
| + V8StringResource<> arg;
|
| + V8StringResource<> optArg;
|
| + int numArgsPassed = info.Length();
|
| + while (numArgsPassed > 0) {
|
| + if (!info[numArgsPassed - 1]->IsUndefined())
|
| + break;
|
| + --numArgsPassed;
|
| + }
|
| + arg = info[0];
|
| + if (!arg.prepare())
|
| + return;
|
| +
|
| + if (UNLIKELY(numArgsPassed <= 1)) {
|
| ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| - TestInterfaceConstructor* impl = TestInterfaceConstructor::createForJSConstructor(scriptState, executionContext, document, arg, optArg, exceptionState);
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::createForJSConstructor(scriptState, executionContext, document, arg, exceptionState);
|
| if (exceptionState.hadException()) {
|
| - return;
|
| + return;
|
| }
|
| v8::Local<v8::Object> wrapper = info.Holder();
|
| wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructorConstructor::wrapperTypeInfo, wrapper);
|
| v8SetReturnValue(info, wrapper);
|
| + return;
|
| + }
|
| + optArg = info[1];
|
| + if (!optArg.prepare())
|
| + return;
|
| +
|
| + ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate());
|
| + Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
|
| + TestInterfaceConstructor* impl = TestInterfaceConstructor::createForJSConstructor(scriptState, executionContext, document, arg, optArg, exceptionState);
|
| + if (exceptionState.hadException()) {
|
| + return;
|
| + }
|
| + v8::Local<v8::Object> wrapper = info.Holder();
|
| + wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceConstructorConstructor::wrapperTypeInfo, wrapper);
|
| + v8SetReturnValue(info, wrapper);
|
| }
|
|
|
| -v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructorConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world)
|
| -{
|
| - static int domTemplateKey; // This address is used for a key to look up the dom template.
|
| - V8PerIsolateData* data = V8PerIsolateData::from(isolate);
|
| - v8::Local<v8::FunctionTemplate> result = data->findInterfaceTemplate(world, &domTemplateKey);
|
| - if (!result.IsEmpty())
|
| - return result;
|
| -
|
| - result = v8::FunctionTemplate::New(isolate, V8TestInterfaceConstructorConstructorCallback);
|
| - v8::Local<v8::ObjectTemplate> instanceTemplate = result->InstanceTemplate();
|
| - instanceTemplate->SetInternalFieldCount(V8TestInterfaceConstructor::internalFieldCount);
|
| - result->SetClassName(v8AtomicString(isolate, "TestInterfaceConstructor"));
|
| - result->Inherit(V8TestInterfaceConstructor::domTemplate(isolate, world));
|
| - data->setInterfaceTemplate(world, &domTemplateKey, result);
|
| +v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructorConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) {
|
| + static int domTemplateKey; // This address is used for a key to look up the dom template.
|
| + V8PerIsolateData* data = V8PerIsolateData::from(isolate);
|
| + v8::Local<v8::FunctionTemplate> result = data->findInterfaceTemplate(world, &domTemplateKey);
|
| + if (!result.IsEmpty())
|
| return result;
|
| +
|
| + result = v8::FunctionTemplate::New(isolate, V8TestInterfaceConstructorConstructorCallback);
|
| + v8::Local<v8::ObjectTemplate> instanceTemplate = result->InstanceTemplate();
|
| + instanceTemplate->SetInternalFieldCount(V8TestInterfaceConstructor::internalFieldCount);
|
| + result->SetClassName(v8AtomicString(isolate, "TestInterfaceConstructor"));
|
| + result->Inherit(V8TestInterfaceConstructor::domTemplate(isolate, world));
|
| + data->setInterfaceTemplate(world, &domTemplateKey, result);
|
| + return result;
|
| }
|
|
|
| -void V8TestInterfaceConstructor::constructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| -{
|
| - UseCounter::countIfNotPrivateScript(info.GetIsolate(), currentExecutionContext(info.GetIsolate()), UseCounter::TestFeature);
|
| - if (!info.IsConstructCall()) {
|
| - V8ThrowException::throwTypeError(info.GetIsolate(), ExceptionMessages::constructorNotCallableAsFunction("TestInterfaceConstructor"));
|
| - return;
|
| - }
|
| +void V8TestInterfaceConstructor::constructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + UseCounter::countIfNotPrivateScript(info.GetIsolate(), currentExecutionContext(info.GetIsolate()), UseCounter::TestFeature);
|
| + if (!info.IsConstructCall()) {
|
| + V8ThrowException::throwTypeError(info.GetIsolate(), ExceptionMessages::constructorNotCallableAsFunction("TestInterfaceConstructor"));
|
| + return;
|
| + }
|
|
|
| - if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExistingObject) {
|
| - v8SetReturnValue(info, info.Holder());
|
| - return;
|
| - }
|
| + if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExistingObject) {
|
| + v8SetReturnValue(info, info.Holder());
|
| + return;
|
| + }
|
|
|
| - TestInterfaceConstructorV8Internal::constructor(info);
|
| + TestInterfaceConstructorV8Internal::constructor(info);
|
| }
|
|
|
| -static void installV8TestInterfaceConstructorTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate)
|
| -{
|
| - // Initialize the interface object's template.
|
| - V8DOMConfiguration::initializeDOMInterfaceTemplate(isolate, interfaceTemplate, V8TestInterfaceConstructor::wrapperTypeInfo.interfaceName, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor::internalFieldCount);
|
| - interfaceTemplate->SetCallHandler(V8TestInterfaceConstructor::constructorCallback);
|
| - interfaceTemplate->SetLength(0);
|
| - v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemplate);
|
| - ALLOW_UNUSED_LOCAL(signature);
|
| - v8::Local<v8::ObjectTemplate> instanceTemplate = interfaceTemplate->InstanceTemplate();
|
| - ALLOW_UNUSED_LOCAL(instanceTemplate);
|
| - v8::Local<v8::ObjectTemplate> prototypeTemplate = interfaceTemplate->PrototypeTemplate();
|
| - ALLOW_UNUSED_LOCAL(prototypeTemplate);
|
| - // Register DOM constants, attributes and operations.
|
| +static void installV8TestInterfaceConstructorTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate) {
|
| + // Initialize the interface object's template.
|
| + V8DOMConfiguration::initializeDOMInterfaceTemplate(isolate, interfaceTemplate, V8TestInterfaceConstructor::wrapperTypeInfo.interfaceName, v8::Local<v8::FunctionTemplate>(), V8TestInterfaceConstructor::internalFieldCount);
|
| + interfaceTemplate->SetCallHandler(V8TestInterfaceConstructor::constructorCallback);
|
| + interfaceTemplate->SetLength(0);
|
| + v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemplate);
|
| + ALLOW_UNUSED_LOCAL(signature);
|
| + v8::Local<v8::ObjectTemplate> instanceTemplate = interfaceTemplate->InstanceTemplate();
|
| + ALLOW_UNUSED_LOCAL(instanceTemplate);
|
| + v8::Local<v8::ObjectTemplate> prototypeTemplate = interfaceTemplate->PrototypeTemplate();
|
| + ALLOW_UNUSED_LOCAL(prototypeTemplate);
|
| + // Register DOM constants, attributes and operations.
|
| }
|
|
|
| -v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world)
|
| -{
|
| - return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructorTemplate);
|
| +v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) {
|
| + return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructorTemplate);
|
| }
|
|
|
| -bool V8TestInterfaceConstructor::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate)
|
| -{
|
| - return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
|
| +bool V8TestInterfaceConstructor::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) {
|
| + return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
|
| }
|
|
|
| -v8::Local<v8::Object> V8TestInterfaceConstructor::findInstanceInPrototypeChain(v8::Local<v8::Value> v8Value, v8::Isolate* isolate)
|
| -{
|
| - return V8PerIsolateData::from(isolate)->findInstanceInPrototypeChain(&wrapperTypeInfo, v8Value);
|
| +v8::Local<v8::Object> V8TestInterfaceConstructor::findInstanceInPrototypeChain(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) {
|
| + return V8PerIsolateData::from(isolate)->findInstanceInPrototypeChain(&wrapperTypeInfo, v8Value);
|
| }
|
|
|
| -TestInterfaceConstructor* V8TestInterfaceConstructor::toImplWithTypeCheck(v8::Isolate* isolate, v8::Local<v8::Value> value)
|
| -{
|
| - return hasInstance(value, isolate) ? toImpl(v8::Local<v8::Object>::Cast(value)) : nullptr;
|
| +TestInterfaceConstructor* V8TestInterfaceConstructor::toImplWithTypeCheck(v8::Isolate* isolate, v8::Local<v8::Value> value) {
|
| + return hasInstance(value, isolate) ? toImpl(v8::Local<v8::Object>::Cast(value)) : nullptr;
|
| }
|
|
|
| -} // namespace blink
|
| +} // namespace blink
|
|
|