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}, |