}
namespace WebCore {
-const WrapperTypeInfo V8TestEventTarget::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestEventTarget::domTemplate, V8TestEventTarget::derefObject, 0, V8TestEventTarget::toEventTarget, 0, V8TestEventTarget::installPerContextEnabledMethods, &V8EventTarget::wrapperTypeInfo, WrapperTypeObjectPrototype };
+const WrapperTypeInfo V8TestEventTarget::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestEventTarget::domTemplate, V8TestEventTarget::derefObject, 0, V8TestEventTarget::toEventTarget, 0, V8TestEventTarget::installPerContextEnabledMethods, &V8EventTarget::wrapperTypeInfo, WrapperTypeObjectPrototype, false };
namespace TestEventTargetV8Internal {
static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info)
{
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
- RefPtr<Node> element = collection->item(index);
- if (!element)
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
+ RefPtr<Node> result = imp->item(index);
+ if (!result)
return;
- v8SetReturnValueFast(info, element.release(), collection);
+ v8SetReturnValueFast(info, result.release(), imp);
}
static void indexedPropertyGetterCallback(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info)
static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)
{
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
V8TRYCATCH_VOID(Node*, propertyValue, V8Node::hasInstance(jsValue, info.GetIsolate()) ? V8Node::toNative(v8::Handle<v8::Object>::Cast(jsValue)) : 0);
- bool result = collection->anonymousIndexedSetter(index, propertyValue);
+ if (!isUndefinedOrNull(jsValue) && !V8Node::hasInstance(jsValue, info.GetIsolate())) {
+ exceptionState.throwTypeError("The provided value is not of type 'Node'.");
+ exceptionState.throwIfNeeded();
+ return;
+ }
+ bool result = imp->anonymousIndexedSetter(index, propertyValue);
if (!result)
return;
v8SetReturnValue(info, jsValue);
TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
}
-static void indexedPropertyDeleter(unsigned index, const v8::PropertyCallbackInfo<v8::Boolean>& info)
+static void indexedPropertyDeleter(uint32_t index, const v8::PropertyCallbackInfo<v8::Boolean>& info)
{
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
ExceptionState exceptionState(info.Holder(), info.GetIsolate());
- DeleteResult result = collection->anonymousIndexedDeleter(index, exceptionState);
+ DeleteResult result = imp->anonymousIndexedDeleter(index, exceptionState);
if (exceptionState.throwIfNeeded())
return;
if (result != DeleteUnknownProperty)
static void namedPropertyGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
{
- if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
- return;
- if (info.Holder()->HasRealNamedCallbackProperty(name))
- return;
if (info.Holder()->HasRealNamedProperty(name))
return;
+ if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
+ return;
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
AtomicString propertyName = toCoreAtomicString(name);
- RefPtr<Node> element = collection->namedItem(propertyName);
- if (!element)
+ RefPtr<Node> result = imp->namedItem(propertyName);
+ if (!result)
return;
- v8SetReturnValueFast(info, element.release(), collection);
+ v8SetReturnValueFast(info, result.release(), imp);
}
static void namedPropertyGetterCallback(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
static void namedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)
{
- if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
- return;
- if (info.Holder()->HasRealNamedCallbackProperty(name))
- return;
if (info.Holder()->HasRealNamedProperty(name))
return;
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
+ if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
+ return;
+
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, propertyName, name);
V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, propertyValue, jsValue);
- bool result;
- if (jsValue->IsUndefined())
- result = collection->anonymousNamedSetterUndefined(propertyName);
- else
- result = collection->anonymousNamedSetter(propertyName, propertyValue);
+ bool result = imp->anonymousNamedSetter(propertyName, propertyValue);
if (!result)
return;
v8SetReturnValue(info, jsValue);
TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
}
+static void namedPropertyQuery(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Integer>& info)
+{
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
+ AtomicString propertyName = toCoreAtomicString(name);
+ ExceptionState exceptionState(info.Holder(), info.GetIsolate());
+ bool result = imp->namedPropertyQuery(propertyName, exceptionState);
+ if (exceptionState.throwIfNeeded())
+ return;
+ if (!result)
+ return;
+ v8SetReturnValueInt(info, v8::None);
+}
+
+static void namedPropertyQueryCallback(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Integer>& info)
+{
+ TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMNamedProperty");
+ TestEventTargetV8Internal::namedPropertyQuery(name, info);
+ TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
+}
+
static void namedPropertyDeleter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Boolean>& info)
{
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
AtomicString propertyName = toCoreAtomicString(name);
- DeleteResult result = collection->anonymousNamedDeleter(propertyName);
+ DeleteResult result = imp->anonymousNamedDeleter(propertyName);
if (result != DeleteUnknownProperty)
return v8SetReturnValueBool(info, result == DeleteSuccess);
}
static void namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& info)
{
- ExceptionState exceptionState(info.Holder(), info.GetIsolate());
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
+ TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder());
Vector<String> names;
- collection->namedPropertyEnumerator(names, exceptionState);
+ ExceptionState exceptionState(info.Holder(), info.GetIsolate());
+ imp->namedPropertyEnumerator(names, exceptionState);
if (exceptionState.throwIfNeeded())
return;
v8::Handle<v8::Array> v8names = v8::Array::New(info.GetIsolate(), names.size());
v8SetReturnValue(info, v8names);
}
-static void namedPropertyQuery(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Integer>& info)
-{
- TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder());
- AtomicString propertyName = toCoreAtomicString(name);
- ExceptionState exceptionState(info.Holder(), info.GetIsolate());
- bool result = collection->namedPropertyQuery(propertyName, exceptionState);
- if (exceptionState.throwIfNeeded())
- return;
- if (!result)
- return;
- v8SetReturnValueInt(info, v8::None);
-}
-
static void namedPropertyEnumeratorCallback(const v8::PropertyCallbackInfo<v8::Array>& info)
{
TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMNamedProperty");
TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
}
-static void namedPropertyQueryCallback(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Integer>& info)
-{
- TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMNamedProperty");
- TestEventTargetV8Internal::namedPropertyQuery(name, info);
- TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
-}
-
} // namespace TestEventTargetV8Internal
static const V8DOMConfiguration::MethodConfiguration V8TestEventTargetMethods[] = {