| Index: third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
|
| index f2c8f97a45d6406baca0bc503ba5b147c621fc7c..60c0ea2717a75036fa2be4eb213d658c973225a1 100644
|
| --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
|
| +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
|
| @@ -2197,8 +2197,8 @@ static void activityLoggingSetterForAllWorldsLongAttributeAttributeSetterCallbac
|
| static void cachedAttributeAnyAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| v8::Local<v8::Object> holder = info.Holder();
|
| - v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedAttributeAnyAttribute");
|
| TestObject* impl = V8TestObject::toImpl(holder);
|
| + v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedAttributeAnyAttribute");
|
| if (!impl->isValueDirty()) {
|
| v8::Local<v8::Value> v8Value = V8HiddenValue::getHiddenValue(ScriptState::current(info.GetIsolate()), holder, propertyName);
|
| if (!v8Value.IsEmpty() && !v8Value->IsUndefined()) {
|
| @@ -2235,8 +2235,8 @@ static void cachedAttributeAnyAttributeAttributeSetterCallback(const v8::Functio
|
| static void cachedArrayAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| v8::Local<v8::Object> holder = info.Holder();
|
| - v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedArrayAttribute");
|
| TestObject* impl = V8TestObject::toImpl(holder);
|
| + v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedArrayAttribute");
|
| if (!impl->isArrayDirty()) {
|
| v8::Local<v8::Value> v8Value = V8HiddenValue::getHiddenValue(ScriptState::current(info.GetIsolate()), holder, propertyName);
|
| if (!v8Value.IsEmpty() && !v8Value->IsUndefined()) {
|
| @@ -2276,8 +2276,8 @@ static void cachedArrayAttributeAttributeSetterCallback(const v8::FunctionCallba
|
| static void cachedStringOrNoneAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| v8::Local<v8::Object> holder = info.Holder();
|
| - v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedStringOrNoneAttribute");
|
| TestObject* impl = V8TestObject::toImpl(holder);
|
| + v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedStringOrNoneAttribute");
|
| if (!impl->isStringDirty()) {
|
| v8::Local<v8::Value> v8Value = V8HiddenValue::getHiddenValue(ScriptState::current(info.GetIsolate()), holder, propertyName);
|
| if (!v8Value.IsEmpty() && !v8Value->IsUndefined()) {
|
| @@ -3453,8 +3453,8 @@ static void raisesExceptionTestInterfaceEmptyAttributeAttributeSetterCallback(co
|
| static void cachedAttributeRaisesExceptionGetterAnyAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| v8::Local<v8::Object> holder = info.Holder();
|
| - v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedAttributeRaisesExceptionGetterAnyAttribute");
|
| TestObject* impl = V8TestObject::toImpl(holder);
|
| + v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "cachedAttributeRaisesExceptionGetterAnyAttribute");
|
| if (!impl->isValueDirty()) {
|
| v8::Local<v8::Value> v8Value = V8HiddenValue::getHiddenValue(ScriptState::current(info.GetIsolate()), holder, propertyName);
|
| if (!v8Value.IsEmpty() && !v8Value->IsUndefined()) {
|
| @@ -4521,7 +4521,14 @@ static void sameObjectAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8
|
| {
|
| v8::Local<v8::Object> holder = info.Holder();
|
| TestObject* impl = V8TestObject::toImpl(holder);
|
| - v8SetReturnValueFast(info, WTF::getPtr(impl->sameObjectAttribute()), impl);
|
| + TestInterfaceImplementation* cppValue(WTF::getPtr(impl->sameObjectAttribute()));
|
| + if (cppValue && DOMDataStore::setReturnValue(info.GetReturnValue(), cppValue))
|
| + return;
|
| + v8::Local<v8::Value> v8Value(toV8(cppValue, holder, info.GetIsolate()));
|
| + if (!v8Value.IsEmpty()) {
|
| + V8HiddenValue::setHiddenValue(ScriptState::current(info.GetIsolate()), holder, v8AtomicString(info.GetIsolate(), "sameObjectAttribute"), v8Value);
|
| + v8SetReturnValue(info, v8Value);
|
| + }
|
| }
|
|
|
| static void sameObjectAttributeAttributeGetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| @@ -4529,24 +4536,32 @@ static void sameObjectAttributeAttributeGetterCallback(const v8::FunctionCallbac
|
| TestObjectV8Internal::sameObjectAttributeAttributeGetter(info);
|
| }
|
|
|
| -static void sameObjectAttributeAttributeSetter(v8::Local<v8::Value> v8Value, const v8::FunctionCallbackInfo<v8::Value>& info)
|
| +static void saveSameObjectAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| v8::Local<v8::Object> holder = info.Holder();
|
| - ExceptionState exceptionState(ExceptionState::SetterContext, "sameObjectAttribute", "TestObject", holder, info.GetIsolate());
|
| + v8::Local<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "sameobject_saveSameObjectAttribute");
|
| + {
|
| + v8::Local<v8::Value> v8Value = V8HiddenValue::getHiddenValue(ScriptState::current(info.GetIsolate()), holder, propertyName);
|
| + if (!v8Value.IsEmpty()) {
|
| + v8SetReturnValue(info, v8Value);
|
| + return;
|
| + }
|
| + }
|
| TestObject* impl = V8TestObject::toImpl(holder);
|
| - TestInterfaceImplementation* cppValue = V8TestInterface::toImplWithTypeCheck(info.GetIsolate(), v8Value);
|
| - if (!cppValue) {
|
| - exceptionState.throwTypeError("The provided value is not of type 'TestInterface'.");
|
| - exceptionState.throwIfNeeded();
|
| + TestInterfaceImplementation* cppValue(WTF::getPtr(impl->saveSameObjectAttribute()));
|
| + if (cppValue && DOMDataStore::setReturnValue(info.GetReturnValue(), cppValue))
|
| return;
|
| + v8::Local<v8::Value> v8Value(toV8(cppValue, holder, info.GetIsolate()));
|
| + if (!v8Value.IsEmpty()) {
|
| + V8HiddenValue::setHiddenValue(ScriptState::current(info.GetIsolate()), holder, v8AtomicString(info.GetIsolate(), "saveSameObjectAttribute"), v8Value);
|
| + v8SetReturnValue(info, v8Value);
|
| }
|
| - impl->setSameObjectAttribute(cppValue);
|
| + V8HiddenValue::setHiddenValue(ScriptState::current(info.GetIsolate()), holder, propertyName, info.GetReturnValue().Get());
|
| }
|
|
|
| -static void sameObjectAttributeAttributeSetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| +static void saveSameObjectAttributeAttributeGetterCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| - v8::Local<v8::Value> v8Value = info[0];
|
| - TestObjectV8Internal::sameObjectAttributeAttributeSetter(v8Value, info);
|
| + TestObjectV8Internal::saveSameObjectAttributeAttributeGetter(info);
|
| }
|
|
|
| static void unscopeableLongAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| @@ -11634,7 +11649,8 @@ const V8DOMConfiguration::AccessorConfiguration V8TestObjectAccessors[] = {
|
| {"urlStringAttribute", TestObjectV8Internal::urlStringAttributeAttributeGetterCallback, TestObjectV8Internal::urlStringAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| {"unforgeableLongAttribute", TestObjectV8Internal::unforgeableLongAttributeAttributeGetterCallback, TestObjectV8Internal::unforgeableLongAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::DontDelete), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnInstance, V8DOMConfiguration::CheckHolder},
|
| {"measuredLongAttribute", TestObjectV8Internal::measuredLongAttributeAttributeGetterCallback, TestObjectV8Internal::measuredLongAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| - {"sameObjectAttribute", TestObjectV8Internal::sameObjectAttributeAttributeGetterCallback, TestObjectV8Internal::sameObjectAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| + {"sameObjectAttribute", TestObjectV8Internal::sameObjectAttributeAttributeGetterCallback, 0, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::ReadOnly), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| + {"saveSameObjectAttribute", TestObjectV8Internal::saveSameObjectAttributeAttributeGetterCallback, 0, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::ReadOnly), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| {"unscopeableLongAttribute", TestObjectV8Internal::unscopeableLongAttributeAttributeGetterCallback, TestObjectV8Internal::unscopeableLongAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| {"unscopeableOriginTrialEnabledLongAttribute", TestObjectV8Internal::unscopeableOriginTrialEnabledLongAttributeAttributeGetterCallback, TestObjectV8Internal::unscopeableOriginTrialEnabledLongAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
| {"testInterfaceAttribute", TestObjectV8Internal::testInterfaceAttributeAttributeGetterCallback, TestObjectV8Internal::testInterfaceAttributeAttributeSetterCallback, 0, 0, 0, v8::DEFAULT, static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnPrototype, V8DOMConfiguration::CheckHolder},
|
|
|