| Index: third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp b/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9401c451b83c610289b08643ef26dea5a72e59d5
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp
|
| @@ -0,0 +1,1562 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// This file has been auto-generated by code_generator_v8.py. DO NOT MODIFY!
|
| +
|
| +#include "bindings/core/v8/UnionTypesCore.h"
|
| +
|
| +#include "bindings/core/v8/Dictionary.h"
|
| +#include "bindings/core/v8/UnionTypesCore.h"
|
| +#include "bindings/core/v8/V8ArrayBuffer.h"
|
| +#include "bindings/core/v8/V8ArrayBufferView.h"
|
| +#include "bindings/core/v8/V8Node.h"
|
| +#include "bindings/core/v8/V8NodeList.h"
|
| +#include "bindings/core/v8/V8TestInterface.h"
|
| +#include "bindings/core/v8/V8TestInterface2.h"
|
| +#include "bindings/core/v8/V8TestInterfaceEmpty.h"
|
| +#include "bindings/core/v8/V8TestInterfaceGarbageCollected.h"
|
| +#include "bindings/core/v8/V8Uint8Array.h"
|
| +#include "bindings/tests/idls/core/TestImplements2.h"
|
| +#include "bindings/tests/idls/core/TestImplements3Implementation.h"
|
| +#include "bindings/tests/idls/core/TestPartialInterface.h"
|
| +#include "bindings/tests/idls/core/TestPartialInterfaceImplementation.h"
|
| +#include "core/dom/FlexibleArrayBufferView.h"
|
| +#include "core/dom/NameNodeList.h"
|
| +#include "core/dom/NodeList.h"
|
| +#include "core/dom/StaticNodeList.h"
|
| +#include "core/html/LabelsNodeList.h"
|
| +
|
| +namespace blink {
|
| +
|
| +ArrayBufferOrArrayBufferViewOrDictionary::ArrayBufferOrArrayBufferViewOrDictionary()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +TestArrayBuffer* ArrayBufferOrArrayBufferViewOrDictionary::getAsArrayBuffer() const
|
| +{
|
| + ASSERT(isArrayBuffer());
|
| + return m_arrayBuffer;
|
| +}
|
| +
|
| +void ArrayBufferOrArrayBufferViewOrDictionary::setArrayBuffer(TestArrayBuffer* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_arrayBuffer = value;
|
| + m_type = SpecificTypeArrayBuffer;
|
| +}
|
| +
|
| +ArrayBufferOrArrayBufferViewOrDictionary ArrayBufferOrArrayBufferViewOrDictionary::fromArrayBuffer(TestArrayBuffer* value)
|
| +{
|
| + ArrayBufferOrArrayBufferViewOrDictionary container;
|
| + container.setArrayBuffer(value);
|
| + return container;
|
| +}
|
| +
|
| +TestArrayBufferView* ArrayBufferOrArrayBufferViewOrDictionary::getAsArrayBufferView() const
|
| +{
|
| + ASSERT(isArrayBufferView());
|
| + return m_arrayBufferView;
|
| +}
|
| +
|
| +void ArrayBufferOrArrayBufferViewOrDictionary::setArrayBufferView(TestArrayBufferView* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_arrayBufferView = value;
|
| + m_type = SpecificTypeArrayBufferView;
|
| +}
|
| +
|
| +ArrayBufferOrArrayBufferViewOrDictionary ArrayBufferOrArrayBufferViewOrDictionary::fromArrayBufferView(TestArrayBufferView* value)
|
| +{
|
| + ArrayBufferOrArrayBufferViewOrDictionary container;
|
| + container.setArrayBufferView(value);
|
| + return container;
|
| +}
|
| +
|
| +Dictionary ArrayBufferOrArrayBufferViewOrDictionary::getAsDictionary() const
|
| +{
|
| + ASSERT(isDictionary());
|
| + return m_dictionary;
|
| +}
|
| +
|
| +void ArrayBufferOrArrayBufferViewOrDictionary::setDictionary(Dictionary value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_dictionary = value;
|
| + m_type = SpecificTypeDictionary;
|
| +}
|
| +
|
| +ArrayBufferOrArrayBufferViewOrDictionary ArrayBufferOrArrayBufferViewOrDictionary::fromDictionary(Dictionary value)
|
| +{
|
| + ArrayBufferOrArrayBufferViewOrDictionary container;
|
| + container.setDictionary(value);
|
| + return container;
|
| +}
|
| +
|
| +ArrayBufferOrArrayBufferViewOrDictionary::ArrayBufferOrArrayBufferViewOrDictionary(const ArrayBufferOrArrayBufferViewOrDictionary&) = default;
|
| +ArrayBufferOrArrayBufferViewOrDictionary::~ArrayBufferOrArrayBufferViewOrDictionary() = default;
|
| +ArrayBufferOrArrayBufferViewOrDictionary& ArrayBufferOrArrayBufferViewOrDictionary::operator=(const ArrayBufferOrArrayBufferViewOrDictionary&) = default;
|
| +
|
| +DEFINE_TRACE(ArrayBufferOrArrayBufferViewOrDictionary)
|
| +{
|
| + visitor->trace(m_arrayBuffer);
|
| + visitor->trace(m_arrayBufferView);
|
| +}
|
| +
|
| +void V8ArrayBufferOrArrayBufferViewOrDictionary::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, ArrayBufferOrArrayBufferViewOrDictionary& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8ArrayBuffer::hasInstance(v8Value, isolate)) {
|
| + TestArrayBuffer* cppValue = V8ArrayBuffer::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setArrayBuffer(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (V8ArrayBufferView::hasInstance(v8Value, isolate)) {
|
| + TestArrayBufferView* cppValue = V8ArrayBufferView::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setArrayBufferView(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (isUndefinedOrNull(v8Value) || v8Value->IsObject()) {
|
| + Dictionary cppValue = Dictionary(v8Value, isolate, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setDictionary(cppValue);
|
| + return;
|
| + }
|
| +
|
| + exceptionState.throwTypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView or Dictionary)'");
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const ArrayBufferOrArrayBufferViewOrDictionary& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case ArrayBufferOrArrayBufferViewOrDictionary::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case ArrayBufferOrArrayBufferViewOrDictionary::SpecificTypeArrayBuffer:
|
| + return toV8(impl.getAsArrayBuffer(), creationContext, isolate);
|
| + case ArrayBufferOrArrayBufferViewOrDictionary::SpecificTypeArrayBufferView:
|
| + return toV8(impl.getAsArrayBufferView(), creationContext, isolate);
|
| + case ArrayBufferOrArrayBufferViewOrDictionary::SpecificTypeDictionary:
|
| + return impl.getAsDictionary().v8Value();
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +ArrayBufferOrArrayBufferViewOrDictionary NativeValueTraits<ArrayBufferOrArrayBufferViewOrDictionary>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + ArrayBufferOrArrayBufferViewOrDictionary impl;
|
| + V8ArrayBufferOrArrayBufferViewOrDictionary::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +BooleanOrStringOrUnrestrictedDouble::BooleanOrStringOrUnrestrictedDouble()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +bool BooleanOrStringOrUnrestrictedDouble::getAsBoolean() const
|
| +{
|
| + ASSERT(isBoolean());
|
| + return m_boolean;
|
| +}
|
| +
|
| +void BooleanOrStringOrUnrestrictedDouble::setBoolean(bool value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_boolean = value;
|
| + m_type = SpecificTypeBoolean;
|
| +}
|
| +
|
| +BooleanOrStringOrUnrestrictedDouble BooleanOrStringOrUnrestrictedDouble::fromBoolean(bool value)
|
| +{
|
| + BooleanOrStringOrUnrestrictedDouble container;
|
| + container.setBoolean(value);
|
| + return container;
|
| +}
|
| +
|
| +String BooleanOrStringOrUnrestrictedDouble::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void BooleanOrStringOrUnrestrictedDouble::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +BooleanOrStringOrUnrestrictedDouble BooleanOrStringOrUnrestrictedDouble::fromString(String value)
|
| +{
|
| + BooleanOrStringOrUnrestrictedDouble container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +double BooleanOrStringOrUnrestrictedDouble::getAsUnrestrictedDouble() const
|
| +{
|
| + ASSERT(isUnrestrictedDouble());
|
| + return m_unrestrictedDouble;
|
| +}
|
| +
|
| +void BooleanOrStringOrUnrestrictedDouble::setUnrestrictedDouble(double value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_unrestrictedDouble = value;
|
| + m_type = SpecificTypeUnrestrictedDouble;
|
| +}
|
| +
|
| +BooleanOrStringOrUnrestrictedDouble BooleanOrStringOrUnrestrictedDouble::fromUnrestrictedDouble(double value)
|
| +{
|
| + BooleanOrStringOrUnrestrictedDouble container;
|
| + container.setUnrestrictedDouble(value);
|
| + return container;
|
| +}
|
| +
|
| +BooleanOrStringOrUnrestrictedDouble::BooleanOrStringOrUnrestrictedDouble(const BooleanOrStringOrUnrestrictedDouble&) = default;
|
| +BooleanOrStringOrUnrestrictedDouble::~BooleanOrStringOrUnrestrictedDouble() = default;
|
| +BooleanOrStringOrUnrestrictedDouble& BooleanOrStringOrUnrestrictedDouble::operator=(const BooleanOrStringOrUnrestrictedDouble&) = default;
|
| +
|
| +DEFINE_TRACE(BooleanOrStringOrUnrestrictedDouble)
|
| +{
|
| +}
|
| +
|
| +void V8BooleanOrStringOrUnrestrictedDouble::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, BooleanOrStringOrUnrestrictedDouble& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (v8Value->IsBoolean()) {
|
| + impl.setBoolean(v8Value.As<v8::Boolean>()->Value());
|
| + return;
|
| + }
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + double cppValue = toDouble(isolate, v8Value, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setUnrestrictedDouble(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const BooleanOrStringOrUnrestrictedDouble& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case BooleanOrStringOrUnrestrictedDouble::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case BooleanOrStringOrUnrestrictedDouble::SpecificTypeBoolean:
|
| + return v8Boolean(impl.getAsBoolean(), isolate);
|
| + case BooleanOrStringOrUnrestrictedDouble::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + case BooleanOrStringOrUnrestrictedDouble::SpecificTypeUnrestrictedDouble:
|
| + return v8::Number::New(isolate, impl.getAsUnrestrictedDouble());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +BooleanOrStringOrUnrestrictedDouble NativeValueTraits<BooleanOrStringOrUnrestrictedDouble>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + BooleanOrStringOrUnrestrictedDouble impl;
|
| + V8BooleanOrStringOrUnrestrictedDouble::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +DoubleOrString::DoubleOrString()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +double DoubleOrString::getAsDouble() const
|
| +{
|
| + ASSERT(isDouble());
|
| + return m_double;
|
| +}
|
| +
|
| +void DoubleOrString::setDouble(double value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_double = value;
|
| + m_type = SpecificTypeDouble;
|
| +}
|
| +
|
| +DoubleOrString DoubleOrString::fromDouble(double value)
|
| +{
|
| + DoubleOrString container;
|
| + container.setDouble(value);
|
| + return container;
|
| +}
|
| +
|
| +String DoubleOrString::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void DoubleOrString::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +DoubleOrString DoubleOrString::fromString(String value)
|
| +{
|
| + DoubleOrString container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +DoubleOrString::DoubleOrString(const DoubleOrString&) = default;
|
| +DoubleOrString::~DoubleOrString() = default;
|
| +DoubleOrString& DoubleOrString::operator=(const DoubleOrString&) = default;
|
| +
|
| +DEFINE_TRACE(DoubleOrString)
|
| +{
|
| +}
|
| +
|
| +void V8DoubleOrString::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, DoubleOrString& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + double cppValue = toRestrictedDouble(isolate, v8Value, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setDouble(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const DoubleOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case DoubleOrString::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case DoubleOrString::SpecificTypeDouble:
|
| + return v8::Number::New(isolate, impl.getAsDouble());
|
| + case DoubleOrString::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +DoubleOrString NativeValueTraits<DoubleOrString>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + DoubleOrString impl;
|
| + V8DoubleOrString::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +LongOrTestDictionary::LongOrTestDictionary()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +int LongOrTestDictionary::getAsLong() const
|
| +{
|
| + ASSERT(isLong());
|
| + return m_long;
|
| +}
|
| +
|
| +void LongOrTestDictionary::setLong(int value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_long = value;
|
| + m_type = SpecificTypeLong;
|
| +}
|
| +
|
| +LongOrTestDictionary LongOrTestDictionary::fromLong(int value)
|
| +{
|
| + LongOrTestDictionary container;
|
| + container.setLong(value);
|
| + return container;
|
| +}
|
| +
|
| +TestDictionary LongOrTestDictionary::getAsTestDictionary() const
|
| +{
|
| + ASSERT(isTestDictionary());
|
| + return m_testDictionary;
|
| +}
|
| +
|
| +void LongOrTestDictionary::setTestDictionary(TestDictionary value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_testDictionary = value;
|
| + m_type = SpecificTypeTestDictionary;
|
| +}
|
| +
|
| +LongOrTestDictionary LongOrTestDictionary::fromTestDictionary(TestDictionary value)
|
| +{
|
| + LongOrTestDictionary container;
|
| + container.setTestDictionary(value);
|
| + return container;
|
| +}
|
| +
|
| +LongOrTestDictionary::LongOrTestDictionary(const LongOrTestDictionary&) = default;
|
| +LongOrTestDictionary::~LongOrTestDictionary() = default;
|
| +LongOrTestDictionary& LongOrTestDictionary::operator=(const LongOrTestDictionary&) = default;
|
| +
|
| +DEFINE_TRACE(LongOrTestDictionary)
|
| +{
|
| + visitor->trace(m_testDictionary);
|
| +}
|
| +
|
| +void V8LongOrTestDictionary::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, LongOrTestDictionary& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (isUndefinedOrNull(v8Value) || v8Value->IsObject()) {
|
| + TestDictionary cppValue;
|
| + V8TestDictionary::toImpl(isolate, v8Value, cppValue, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setTestDictionary(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + int cppValue = toInt32(isolate, v8Value, NormalConversion, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setLong(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + int cppValue = toInt32(isolate, v8Value, NormalConversion, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setLong(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const LongOrTestDictionary& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case LongOrTestDictionary::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case LongOrTestDictionary::SpecificTypeLong:
|
| + return v8::Integer::New(isolate, impl.getAsLong());
|
| + case LongOrTestDictionary::SpecificTypeTestDictionary:
|
| + return toV8(impl.getAsTestDictionary(), creationContext, isolate);
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +LongOrTestDictionary NativeValueTraits<LongOrTestDictionary>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + LongOrTestDictionary impl;
|
| + V8LongOrTestDictionary::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +NodeOrNodeList::NodeOrNodeList()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +Node* NodeOrNodeList::getAsNode() const
|
| +{
|
| + ASSERT(isNode());
|
| + return m_node;
|
| +}
|
| +
|
| +void NodeOrNodeList::setNode(Node* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_node = value;
|
| + m_type = SpecificTypeNode;
|
| +}
|
| +
|
| +NodeOrNodeList NodeOrNodeList::fromNode(Node* value)
|
| +{
|
| + NodeOrNodeList container;
|
| + container.setNode(value);
|
| + return container;
|
| +}
|
| +
|
| +NodeList* NodeOrNodeList::getAsNodeList() const
|
| +{
|
| + ASSERT(isNodeList());
|
| + return m_nodeList;
|
| +}
|
| +
|
| +void NodeOrNodeList::setNodeList(NodeList* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_nodeList = value;
|
| + m_type = SpecificTypeNodeList;
|
| +}
|
| +
|
| +NodeOrNodeList NodeOrNodeList::fromNodeList(NodeList* value)
|
| +{
|
| + NodeOrNodeList container;
|
| + container.setNodeList(value);
|
| + return container;
|
| +}
|
| +
|
| +NodeOrNodeList::NodeOrNodeList(const NodeOrNodeList&) = default;
|
| +NodeOrNodeList::~NodeOrNodeList() = default;
|
| +NodeOrNodeList& NodeOrNodeList::operator=(const NodeOrNodeList&) = default;
|
| +
|
| +DEFINE_TRACE(NodeOrNodeList)
|
| +{
|
| + visitor->trace(m_node);
|
| + visitor->trace(m_nodeList);
|
| +}
|
| +
|
| +void V8NodeOrNodeList::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, NodeOrNodeList& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8Node::hasInstance(v8Value, isolate)) {
|
| + Node* cppValue = V8Node::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setNode(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (V8NodeList::hasInstance(v8Value, isolate)) {
|
| + NodeList* cppValue = V8NodeList::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setNodeList(cppValue);
|
| + return;
|
| + }
|
| +
|
| + exceptionState.throwTypeError("The provided value is not of type '(Node or NodeList)'");
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const NodeOrNodeList& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case NodeOrNodeList::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case NodeOrNodeList::SpecificTypeNode:
|
| + return toV8(impl.getAsNode(), creationContext, isolate);
|
| + case NodeOrNodeList::SpecificTypeNodeList:
|
| + return toV8(impl.getAsNodeList(), creationContext, isolate);
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +NodeOrNodeList NativeValueTraits<NodeOrNodeList>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + NodeOrNodeList impl;
|
| + V8NodeOrNodeList::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +StringOrArrayBufferOrArrayBufferView::StringOrArrayBufferOrArrayBufferView()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +String StringOrArrayBufferOrArrayBufferView::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void StringOrArrayBufferOrArrayBufferView::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +StringOrArrayBufferOrArrayBufferView StringOrArrayBufferOrArrayBufferView::fromString(String value)
|
| +{
|
| + StringOrArrayBufferOrArrayBufferView container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +TestArrayBuffer* StringOrArrayBufferOrArrayBufferView::getAsArrayBuffer() const
|
| +{
|
| + ASSERT(isArrayBuffer());
|
| + return m_arrayBuffer;
|
| +}
|
| +
|
| +void StringOrArrayBufferOrArrayBufferView::setArrayBuffer(TestArrayBuffer* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_arrayBuffer = value;
|
| + m_type = SpecificTypeArrayBuffer;
|
| +}
|
| +
|
| +StringOrArrayBufferOrArrayBufferView StringOrArrayBufferOrArrayBufferView::fromArrayBuffer(TestArrayBuffer* value)
|
| +{
|
| + StringOrArrayBufferOrArrayBufferView container;
|
| + container.setArrayBuffer(value);
|
| + return container;
|
| +}
|
| +
|
| +TestArrayBufferView* StringOrArrayBufferOrArrayBufferView::getAsArrayBufferView() const
|
| +{
|
| + ASSERT(isArrayBufferView());
|
| + return m_arrayBufferView;
|
| +}
|
| +
|
| +void StringOrArrayBufferOrArrayBufferView::setArrayBufferView(TestArrayBufferView* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_arrayBufferView = value;
|
| + m_type = SpecificTypeArrayBufferView;
|
| +}
|
| +
|
| +StringOrArrayBufferOrArrayBufferView StringOrArrayBufferOrArrayBufferView::fromArrayBufferView(TestArrayBufferView* value)
|
| +{
|
| + StringOrArrayBufferOrArrayBufferView container;
|
| + container.setArrayBufferView(value);
|
| + return container;
|
| +}
|
| +
|
| +StringOrArrayBufferOrArrayBufferView::StringOrArrayBufferOrArrayBufferView(const StringOrArrayBufferOrArrayBufferView&) = default;
|
| +StringOrArrayBufferOrArrayBufferView::~StringOrArrayBufferOrArrayBufferView() = default;
|
| +StringOrArrayBufferOrArrayBufferView& StringOrArrayBufferOrArrayBufferView::operator=(const StringOrArrayBufferOrArrayBufferView&) = default;
|
| +
|
| +DEFINE_TRACE(StringOrArrayBufferOrArrayBufferView)
|
| +{
|
| + visitor->trace(m_arrayBuffer);
|
| + visitor->trace(m_arrayBufferView);
|
| +}
|
| +
|
| +void V8StringOrArrayBufferOrArrayBufferView::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, StringOrArrayBufferOrArrayBufferView& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8ArrayBuffer::hasInstance(v8Value, isolate)) {
|
| + TestArrayBuffer* cppValue = V8ArrayBuffer::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setArrayBuffer(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (V8ArrayBufferView::hasInstance(v8Value, isolate)) {
|
| + TestArrayBufferView* cppValue = V8ArrayBufferView::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setArrayBufferView(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const StringOrArrayBufferOrArrayBufferView& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case StringOrArrayBufferOrArrayBufferView::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case StringOrArrayBufferOrArrayBufferView::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + case StringOrArrayBufferOrArrayBufferView::SpecificTypeArrayBuffer:
|
| + return toV8(impl.getAsArrayBuffer(), creationContext, isolate);
|
| + case StringOrArrayBufferOrArrayBufferView::SpecificTypeArrayBufferView:
|
| + return toV8(impl.getAsArrayBufferView(), creationContext, isolate);
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +StringOrArrayBufferOrArrayBufferView NativeValueTraits<StringOrArrayBufferOrArrayBufferView>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + StringOrArrayBufferOrArrayBufferView impl;
|
| + V8StringOrArrayBufferOrArrayBufferView::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +StringOrDouble::StringOrDouble()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +String StringOrDouble::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void StringOrDouble::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +StringOrDouble StringOrDouble::fromString(String value)
|
| +{
|
| + StringOrDouble container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +double StringOrDouble::getAsDouble() const
|
| +{
|
| + ASSERT(isDouble());
|
| + return m_double;
|
| +}
|
| +
|
| +void StringOrDouble::setDouble(double value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_double = value;
|
| + m_type = SpecificTypeDouble;
|
| +}
|
| +
|
| +StringOrDouble StringOrDouble::fromDouble(double value)
|
| +{
|
| + StringOrDouble container;
|
| + container.setDouble(value);
|
| + return container;
|
| +}
|
| +
|
| +StringOrDouble::StringOrDouble(const StringOrDouble&) = default;
|
| +StringOrDouble::~StringOrDouble() = default;
|
| +StringOrDouble& StringOrDouble::operator=(const StringOrDouble&) = default;
|
| +
|
| +DEFINE_TRACE(StringOrDouble)
|
| +{
|
| +}
|
| +
|
| +void V8StringOrDouble::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, StringOrDouble& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + double cppValue = toRestrictedDouble(isolate, v8Value, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setDouble(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const StringOrDouble& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case StringOrDouble::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case StringOrDouble::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + case StringOrDouble::SpecificTypeDouble:
|
| + return v8::Number::New(isolate, impl.getAsDouble());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +StringOrDouble NativeValueTraits<StringOrDouble>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + StringOrDouble impl;
|
| + V8StringOrDouble::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +StringOrStringSequence::StringOrStringSequence()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +String StringOrStringSequence::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void StringOrStringSequence::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +StringOrStringSequence StringOrStringSequence::fromString(String value)
|
| +{
|
| + StringOrStringSequence container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +const Vector<String>& StringOrStringSequence::getAsStringSequence() const
|
| +{
|
| + ASSERT(isStringSequence());
|
| + return m_stringSequence;
|
| +}
|
| +
|
| +void StringOrStringSequence::setStringSequence(const Vector<String>& value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_stringSequence = value;
|
| + m_type = SpecificTypeStringSequence;
|
| +}
|
| +
|
| +StringOrStringSequence StringOrStringSequence::fromStringSequence(const Vector<String>& value)
|
| +{
|
| + StringOrStringSequence container;
|
| + container.setStringSequence(value);
|
| + return container;
|
| +}
|
| +
|
| +StringOrStringSequence::StringOrStringSequence(const StringOrStringSequence&) = default;
|
| +StringOrStringSequence::~StringOrStringSequence() = default;
|
| +StringOrStringSequence& StringOrStringSequence::operator=(const StringOrStringSequence&) = default;
|
| +
|
| +DEFINE_TRACE(StringOrStringSequence)
|
| +{
|
| +}
|
| +
|
| +void V8StringOrStringSequence::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, StringOrStringSequence& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (v8Value->IsArray()) {
|
| + Vector<String> cppValue = toImplArray<Vector<String>>(v8Value, 0, isolate, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setStringSequence(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const StringOrStringSequence& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case StringOrStringSequence::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case StringOrStringSequence::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + case StringOrStringSequence::SpecificTypeStringSequence:
|
| + return toV8(impl.getAsStringSequence(), creationContext, isolate);
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +StringOrStringSequence NativeValueTraits<StringOrStringSequence>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + StringOrStringSequence impl;
|
| + V8StringOrStringSequence::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +TestEnumOrDouble::TestEnumOrDouble()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +String TestEnumOrDouble::getAsTestEnum() const
|
| +{
|
| + ASSERT(isTestEnum());
|
| + return m_testEnum;
|
| +}
|
| +
|
| +void TestEnumOrDouble::setTestEnum(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + NonThrowableExceptionState exceptionState;
|
| + const char* validValues[] = {
|
| + "",
|
| + "EnumValue1",
|
| + "EnumValue2",
|
| + "EnumValue3",
|
| + };
|
| + if (!isValidEnum(value, validValues, WTF_ARRAY_LENGTH(validValues), "TestEnum", exceptionState)) {
|
| + ASSERT_NOT_REACHED();
|
| + return;
|
| + }
|
| + m_testEnum = value;
|
| + m_type = SpecificTypeTestEnum;
|
| +}
|
| +
|
| +TestEnumOrDouble TestEnumOrDouble::fromTestEnum(String value)
|
| +{
|
| + TestEnumOrDouble container;
|
| + container.setTestEnum(value);
|
| + return container;
|
| +}
|
| +
|
| +double TestEnumOrDouble::getAsDouble() const
|
| +{
|
| + ASSERT(isDouble());
|
| + return m_double;
|
| +}
|
| +
|
| +void TestEnumOrDouble::setDouble(double value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_double = value;
|
| + m_type = SpecificTypeDouble;
|
| +}
|
| +
|
| +TestEnumOrDouble TestEnumOrDouble::fromDouble(double value)
|
| +{
|
| + TestEnumOrDouble container;
|
| + container.setDouble(value);
|
| + return container;
|
| +}
|
| +
|
| +TestEnumOrDouble::TestEnumOrDouble(const TestEnumOrDouble&) = default;
|
| +TestEnumOrDouble::~TestEnumOrDouble() = default;
|
| +TestEnumOrDouble& TestEnumOrDouble::operator=(const TestEnumOrDouble&) = default;
|
| +
|
| +DEFINE_TRACE(TestEnumOrDouble)
|
| +{
|
| +}
|
| +
|
| +void V8TestEnumOrDouble::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, TestEnumOrDouble& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + double cppValue = toRestrictedDouble(isolate, v8Value, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setDouble(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + const char* validValues[] = {
|
| + "",
|
| + "EnumValue1",
|
| + "EnumValue2",
|
| + "EnumValue3",
|
| + };
|
| + if (!isValidEnum(cppValue, validValues, WTF_ARRAY_LENGTH(validValues), "TestEnum", exceptionState))
|
| + return;
|
| + impl.setTestEnum(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const TestEnumOrDouble& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case TestEnumOrDouble::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case TestEnumOrDouble::SpecificTypeTestEnum:
|
| + return v8String(isolate, impl.getAsTestEnum());
|
| + case TestEnumOrDouble::SpecificTypeDouble:
|
| + return v8::Number::New(isolate, impl.getAsDouble());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +TestEnumOrDouble NativeValueTraits<TestEnumOrDouble>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + TestEnumOrDouble impl;
|
| + V8TestEnumOrDouble::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +TestInterface2OrUint8Array::TestInterface2OrUint8Array()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +TestInterface2* TestInterface2OrUint8Array::getAsTestInterface2() const
|
| +{
|
| + ASSERT(isTestInterface2());
|
| + return m_testInterface2;
|
| +}
|
| +
|
| +void TestInterface2OrUint8Array::setTestInterface2(TestInterface2* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_testInterface2 = value;
|
| + m_type = SpecificTypeTestInterface2;
|
| +}
|
| +
|
| +TestInterface2OrUint8Array TestInterface2OrUint8Array::fromTestInterface2(TestInterface2* value)
|
| +{
|
| + TestInterface2OrUint8Array container;
|
| + container.setTestInterface2(value);
|
| + return container;
|
| +}
|
| +
|
| +DOMUint8Array* TestInterface2OrUint8Array::getAsUint8Array() const
|
| +{
|
| + ASSERT(isUint8Array());
|
| + return m_uint8Array;
|
| +}
|
| +
|
| +void TestInterface2OrUint8Array::setUint8Array(DOMUint8Array* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_uint8Array = value;
|
| + m_type = SpecificTypeUint8Array;
|
| +}
|
| +
|
| +TestInterface2OrUint8Array TestInterface2OrUint8Array::fromUint8Array(DOMUint8Array* value)
|
| +{
|
| + TestInterface2OrUint8Array container;
|
| + container.setUint8Array(value);
|
| + return container;
|
| +}
|
| +
|
| +TestInterface2OrUint8Array::TestInterface2OrUint8Array(const TestInterface2OrUint8Array&) = default;
|
| +TestInterface2OrUint8Array::~TestInterface2OrUint8Array() = default;
|
| +TestInterface2OrUint8Array& TestInterface2OrUint8Array::operator=(const TestInterface2OrUint8Array&) = default;
|
| +
|
| +DEFINE_TRACE(TestInterface2OrUint8Array)
|
| +{
|
| + visitor->trace(m_testInterface2);
|
| + visitor->trace(m_uint8Array);
|
| +}
|
| +
|
| +void V8TestInterface2OrUint8Array::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, TestInterface2OrUint8Array& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8TestInterface2::hasInstance(v8Value, isolate)) {
|
| + TestInterface2* cppValue = V8TestInterface2::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setTestInterface2(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (V8Uint8Array::hasInstance(v8Value, isolate)) {
|
| + DOMUint8Array* cppValue = V8Uint8Array::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setUint8Array(cppValue);
|
| + return;
|
| + }
|
| +
|
| + exceptionState.throwTypeError("The provided value is not of type '(TestInterface2 or Uint8Array)'");
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const TestInterface2OrUint8Array& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case TestInterface2OrUint8Array::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case TestInterface2OrUint8Array::SpecificTypeTestInterface2:
|
| + return toV8(impl.getAsTestInterface2(), creationContext, isolate);
|
| + case TestInterface2OrUint8Array::SpecificTypeUint8Array:
|
| + return toV8(impl.getAsUint8Array(), creationContext, isolate);
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +TestInterface2OrUint8Array NativeValueTraits<TestInterface2OrUint8Array>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + TestInterface2OrUint8Array impl;
|
| + V8TestInterface2OrUint8Array::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +TestInterfaceGarbageCollectedOrString::TestInterfaceGarbageCollectedOrString()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +TestInterfaceGarbageCollected* TestInterfaceGarbageCollectedOrString::getAsTestInterfaceGarbageCollected() const
|
| +{
|
| + ASSERT(isTestInterfaceGarbageCollected());
|
| + return m_testInterfaceGarbageCollected;
|
| +}
|
| +
|
| +void TestInterfaceGarbageCollectedOrString::setTestInterfaceGarbageCollected(TestInterfaceGarbageCollected* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_testInterfaceGarbageCollected = value;
|
| + m_type = SpecificTypeTestInterfaceGarbageCollected;
|
| +}
|
| +
|
| +TestInterfaceGarbageCollectedOrString TestInterfaceGarbageCollectedOrString::fromTestInterfaceGarbageCollected(TestInterfaceGarbageCollected* value)
|
| +{
|
| + TestInterfaceGarbageCollectedOrString container;
|
| + container.setTestInterfaceGarbageCollected(value);
|
| + return container;
|
| +}
|
| +
|
| +String TestInterfaceGarbageCollectedOrString::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void TestInterfaceGarbageCollectedOrString::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +TestInterfaceGarbageCollectedOrString TestInterfaceGarbageCollectedOrString::fromString(String value)
|
| +{
|
| + TestInterfaceGarbageCollectedOrString container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +TestInterfaceGarbageCollectedOrString::TestInterfaceGarbageCollectedOrString(const TestInterfaceGarbageCollectedOrString&) = default;
|
| +TestInterfaceGarbageCollectedOrString::~TestInterfaceGarbageCollectedOrString() = default;
|
| +TestInterfaceGarbageCollectedOrString& TestInterfaceGarbageCollectedOrString::operator=(const TestInterfaceGarbageCollectedOrString&) = default;
|
| +
|
| +DEFINE_TRACE(TestInterfaceGarbageCollectedOrString)
|
| +{
|
| + visitor->trace(m_testInterfaceGarbageCollected);
|
| +}
|
| +
|
| +void V8TestInterfaceGarbageCollectedOrString::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, TestInterfaceGarbageCollectedOrString& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8TestInterfaceGarbageCollected::hasInstance(v8Value, isolate)) {
|
| + TestInterfaceGarbageCollected* cppValue = V8TestInterfaceGarbageCollected::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setTestInterfaceGarbageCollected(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const TestInterfaceGarbageCollectedOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case TestInterfaceGarbageCollectedOrString::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case TestInterfaceGarbageCollectedOrString::SpecificTypeTestInterfaceGarbageCollected:
|
| + return toV8(impl.getAsTestInterfaceGarbageCollected(), creationContext, isolate);
|
| + case TestInterfaceGarbageCollectedOrString::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +TestInterfaceGarbageCollectedOrString NativeValueTraits<TestInterfaceGarbageCollectedOrString>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + TestInterfaceGarbageCollectedOrString impl;
|
| + V8TestInterfaceGarbageCollectedOrString::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +TestInterfaceOrLong::TestInterfaceOrLong()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +TestInterfaceImplementation* TestInterfaceOrLong::getAsTestInterface() const
|
| +{
|
| + ASSERT(isTestInterface());
|
| + return m_testInterface;
|
| +}
|
| +
|
| +void TestInterfaceOrLong::setTestInterface(TestInterfaceImplementation* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_testInterface = value;
|
| + m_type = SpecificTypeTestInterface;
|
| +}
|
| +
|
| +TestInterfaceOrLong TestInterfaceOrLong::fromTestInterface(TestInterfaceImplementation* value)
|
| +{
|
| + TestInterfaceOrLong container;
|
| + container.setTestInterface(value);
|
| + return container;
|
| +}
|
| +
|
| +int TestInterfaceOrLong::getAsLong() const
|
| +{
|
| + ASSERT(isLong());
|
| + return m_long;
|
| +}
|
| +
|
| +void TestInterfaceOrLong::setLong(int value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_long = value;
|
| + m_type = SpecificTypeLong;
|
| +}
|
| +
|
| +TestInterfaceOrLong TestInterfaceOrLong::fromLong(int value)
|
| +{
|
| + TestInterfaceOrLong container;
|
| + container.setLong(value);
|
| + return container;
|
| +}
|
| +
|
| +TestInterfaceOrLong::TestInterfaceOrLong(const TestInterfaceOrLong&) = default;
|
| +TestInterfaceOrLong::~TestInterfaceOrLong() = default;
|
| +TestInterfaceOrLong& TestInterfaceOrLong::operator=(const TestInterfaceOrLong&) = default;
|
| +
|
| +DEFINE_TRACE(TestInterfaceOrLong)
|
| +{
|
| + visitor->trace(m_testInterface);
|
| +}
|
| +
|
| +void V8TestInterfaceOrLong::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, TestInterfaceOrLong& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8TestInterface::hasInstance(v8Value, isolate)) {
|
| + TestInterfaceImplementation* cppValue = V8TestInterface::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setTestInterface(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + int cppValue = toInt32(isolate, v8Value, NormalConversion, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setLong(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + int cppValue = toInt32(isolate, v8Value, NormalConversion, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setLong(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const TestInterfaceOrLong& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case TestInterfaceOrLong::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case TestInterfaceOrLong::SpecificTypeTestInterface:
|
| + return toV8(impl.getAsTestInterface(), creationContext, isolate);
|
| + case TestInterfaceOrLong::SpecificTypeLong:
|
| + return v8::Integer::New(isolate, impl.getAsLong());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +TestInterfaceOrLong NativeValueTraits<TestInterfaceOrLong>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + TestInterfaceOrLong impl;
|
| + V8TestInterfaceOrLong::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +TestInterfaceOrTestInterfaceEmpty::TestInterfaceOrTestInterfaceEmpty()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +TestInterfaceImplementation* TestInterfaceOrTestInterfaceEmpty::getAsTestInterface() const
|
| +{
|
| + ASSERT(isTestInterface());
|
| + return m_testInterface;
|
| +}
|
| +
|
| +void TestInterfaceOrTestInterfaceEmpty::setTestInterface(TestInterfaceImplementation* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_testInterface = value;
|
| + m_type = SpecificTypeTestInterface;
|
| +}
|
| +
|
| +TestInterfaceOrTestInterfaceEmpty TestInterfaceOrTestInterfaceEmpty::fromTestInterface(TestInterfaceImplementation* value)
|
| +{
|
| + TestInterfaceOrTestInterfaceEmpty container;
|
| + container.setTestInterface(value);
|
| + return container;
|
| +}
|
| +
|
| +TestInterfaceEmpty* TestInterfaceOrTestInterfaceEmpty::getAsTestInterfaceEmpty() const
|
| +{
|
| + ASSERT(isTestInterfaceEmpty());
|
| + return m_testInterfaceEmpty;
|
| +}
|
| +
|
| +void TestInterfaceOrTestInterfaceEmpty::setTestInterfaceEmpty(TestInterfaceEmpty* value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_testInterfaceEmpty = value;
|
| + m_type = SpecificTypeTestInterfaceEmpty;
|
| +}
|
| +
|
| +TestInterfaceOrTestInterfaceEmpty TestInterfaceOrTestInterfaceEmpty::fromTestInterfaceEmpty(TestInterfaceEmpty* value)
|
| +{
|
| + TestInterfaceOrTestInterfaceEmpty container;
|
| + container.setTestInterfaceEmpty(value);
|
| + return container;
|
| +}
|
| +
|
| +TestInterfaceOrTestInterfaceEmpty::TestInterfaceOrTestInterfaceEmpty(const TestInterfaceOrTestInterfaceEmpty&) = default;
|
| +TestInterfaceOrTestInterfaceEmpty::~TestInterfaceOrTestInterfaceEmpty() = default;
|
| +TestInterfaceOrTestInterfaceEmpty& TestInterfaceOrTestInterfaceEmpty::operator=(const TestInterfaceOrTestInterfaceEmpty&) = default;
|
| +
|
| +DEFINE_TRACE(TestInterfaceOrTestInterfaceEmpty)
|
| +{
|
| + visitor->trace(m_testInterface);
|
| + visitor->trace(m_testInterfaceEmpty);
|
| +}
|
| +
|
| +void V8TestInterfaceOrTestInterfaceEmpty::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, TestInterfaceOrTestInterfaceEmpty& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (V8TestInterface::hasInstance(v8Value, isolate)) {
|
| + TestInterfaceImplementation* cppValue = V8TestInterface::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setTestInterface(cppValue);
|
| + return;
|
| + }
|
| +
|
| + if (V8TestInterfaceEmpty::hasInstance(v8Value, isolate)) {
|
| + TestInterfaceEmpty* cppValue = V8TestInterfaceEmpty::toImpl(v8::Local<v8::Object>::Cast(v8Value));
|
| + impl.setTestInterfaceEmpty(cppValue);
|
| + return;
|
| + }
|
| +
|
| + exceptionState.throwTypeError("The provided value is not of type '(TestInterface or TestInterfaceEmpty)'");
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const TestInterfaceOrTestInterfaceEmpty& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case TestInterfaceOrTestInterfaceEmpty::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case TestInterfaceOrTestInterfaceEmpty::SpecificTypeTestInterface:
|
| + return toV8(impl.getAsTestInterface(), creationContext, isolate);
|
| + case TestInterfaceOrTestInterfaceEmpty::SpecificTypeTestInterfaceEmpty:
|
| + return toV8(impl.getAsTestInterfaceEmpty(), creationContext, isolate);
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +TestInterfaceOrTestInterfaceEmpty NativeValueTraits<TestInterfaceOrTestInterfaceEmpty>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + TestInterfaceOrTestInterfaceEmpty impl;
|
| + V8TestInterfaceOrTestInterfaceEmpty::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +UnrestrictedDoubleOrString::UnrestrictedDoubleOrString()
|
| + : m_type(SpecificTypeNone)
|
| +{
|
| +}
|
| +
|
| +double UnrestrictedDoubleOrString::getAsUnrestrictedDouble() const
|
| +{
|
| + ASSERT(isUnrestrictedDouble());
|
| + return m_unrestrictedDouble;
|
| +}
|
| +
|
| +void UnrestrictedDoubleOrString::setUnrestrictedDouble(double value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_unrestrictedDouble = value;
|
| + m_type = SpecificTypeUnrestrictedDouble;
|
| +}
|
| +
|
| +UnrestrictedDoubleOrString UnrestrictedDoubleOrString::fromUnrestrictedDouble(double value)
|
| +{
|
| + UnrestrictedDoubleOrString container;
|
| + container.setUnrestrictedDouble(value);
|
| + return container;
|
| +}
|
| +
|
| +String UnrestrictedDoubleOrString::getAsString() const
|
| +{
|
| + ASSERT(isString());
|
| + return m_string;
|
| +}
|
| +
|
| +void UnrestrictedDoubleOrString::setString(String value)
|
| +{
|
| + ASSERT(isNull());
|
| + m_string = value;
|
| + m_type = SpecificTypeString;
|
| +}
|
| +
|
| +UnrestrictedDoubleOrString UnrestrictedDoubleOrString::fromString(String value)
|
| +{
|
| + UnrestrictedDoubleOrString container;
|
| + container.setString(value);
|
| + return container;
|
| +}
|
| +
|
| +UnrestrictedDoubleOrString::UnrestrictedDoubleOrString(const UnrestrictedDoubleOrString&) = default;
|
| +UnrestrictedDoubleOrString::~UnrestrictedDoubleOrString() = default;
|
| +UnrestrictedDoubleOrString& UnrestrictedDoubleOrString::operator=(const UnrestrictedDoubleOrString&) = default;
|
| +
|
| +DEFINE_TRACE(UnrestrictedDoubleOrString)
|
| +{
|
| +}
|
| +
|
| +void V8UnrestrictedDoubleOrString::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, UnrestrictedDoubleOrString& impl, UnionTypeConversionMode conversionMode, ExceptionState& exceptionState)
|
| +{
|
| + if (v8Value.IsEmpty())
|
| + return;
|
| +
|
| + if (conversionMode == UnionTypeConversionMode::Nullable && isUndefinedOrNull(v8Value))
|
| + return;
|
| +
|
| + if (v8Value->IsNumber()) {
|
| + double cppValue = toDouble(isolate, v8Value, exceptionState);
|
| + if (exceptionState.hadException())
|
| + return;
|
| + impl.setUnrestrictedDouble(cppValue);
|
| + return;
|
| + }
|
| +
|
| + {
|
| + V8StringResource<> cppValue = v8Value;
|
| + if (!cppValue.prepare(exceptionState))
|
| + return;
|
| + impl.setString(cppValue);
|
| + return;
|
| + }
|
| +
|
| +}
|
| +
|
| +v8::Local<v8::Value> toV8(const UnrestrictedDoubleOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
|
| +{
|
| + switch (impl.m_type) {
|
| + case UnrestrictedDoubleOrString::SpecificTypeNone:
|
| + return v8::Null(isolate);
|
| + case UnrestrictedDoubleOrString::SpecificTypeUnrestrictedDouble:
|
| + return v8::Number::New(isolate, impl.getAsUnrestrictedDouble());
|
| + case UnrestrictedDoubleOrString::SpecificTypeString:
|
| + return v8String(isolate, impl.getAsString());
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + return v8::Local<v8::Value>();
|
| +}
|
| +
|
| +UnrestrictedDoubleOrString NativeValueTraits<UnrestrictedDoubleOrString>::nativeValue(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exceptionState)
|
| +{
|
| + UnrestrictedDoubleOrString impl;
|
| + V8UnrestrictedDoubleOrString::toImpl(isolate, value, impl, UnionTypeConversionMode::NotNullable, exceptionState);
|
| + return impl;
|
| +}
|
| +
|
| +} // namespace blink
|
|
|