static void namedPropertyDeleter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Boolean>& info) { TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder()); AtomicString propertyName = toCoreAtomicString(name); bool result = collection->anonymousNamedDeleter(propertyName); return v8SetReturnValueBool(info, result); }
static void namedPropertyDeleter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Boolean>& info) { TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); AtomicString propertyName = toCoreAtomicString(name); DeleteResult result = imp->anonymousNamedDeleter(propertyName); if (result != DeleteUnknownProperty) return v8SetReturnValueBool(info, result == DeleteSuccess); }
static v8::Handle<v8::Value> namedItemMethod(const v8::Arguments& args) { if (args.Length() < 1) return throwNotEnoughArgumentsError(args.GetIsolate()); TestEventTarget* imp = V8TestEventTarget::toNative(args.Holder()); V8TRYCATCH_FOR_V8STRINGRESOURCE(V8StringResource<>, name, args[0]); return toV8(imp->namedItem(name), args.Holder(), args.GetIsolate()); }
static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) { TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); RefPtr<Node> result = imp->item(index); if (!result) return; v8SetReturnValueFast(info, result.release(), imp); }
static void indexedPropertyDeleter(unsigned index, const v8::PropertyCallbackInfo<v8::Boolean>& info) { TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder()); ExceptionState exceptionState(info.Holder(), info.GetIsolate()); bool result = collection->anonymousIndexedDeleter(index, exceptionState); if (exceptionState.throwIfNeeded()) return; return v8SetReturnValueBool(info, result); }
static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) { TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder()); V8TRYCATCH_VOID(Node*, propertyValue, V8Node::hasInstance(jsValue, info.GetIsolate(), worldType(info.GetIsolate())) ? V8Node::toNative(v8::Handle<v8::Object>::Cast(jsValue)) : 0); bool result = collection->anonymousIndexedSetter(index, propertyValue); if (!result) return; v8SetReturnValue(info, jsValue); }
static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) { ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder())); TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder()); RefPtr<Node> element = collection->item(index); if (!element) return; v8SetReturnValueFast(info, element.release(), collection); }
static void itemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) { if (UNLIKELY(info.Length() < 1)) { throwTypeError(ExceptionMessages::failedToExecute("item", "TestEventTarget", ExceptionMessages::notEnoughArguments(1, info.Length())), info.GetIsolate()); return; } TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); V8TRYCATCH_VOID(unsigned, index, toUInt32(info[0])); v8SetReturnValue(info, imp->item(index)); }
static void namedItemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) { if (UNLIKELY(info.Length() < 1)) { throwTypeError(ExceptionMessages::failedToExecute("namedItem", "TestEventTarget", ExceptionMessages::notEnoughArguments(1, info.Length())), info.GetIsolate()); return; } TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, name, info[0]); v8SetReturnValue(info, imp->namedItem(name)); }
static void indexedPropertyDeleter(uint32_t index, const v8::PropertyCallbackInfo<v8::Boolean>& info) { TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); ExceptionState exceptionState(info.Holder(), info.GetIsolate()); DeleteResult result = imp->anonymousIndexedDeleter(index, exceptionState); if (exceptionState.throwIfNeeded()) return; if (result != DeleteUnknownProperty) return v8SetReturnValueBool(info, result == DeleteSuccess); }
static void itemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) { ExceptionState exceptionState(ExceptionState::ExecutionContext, "item", "TestEventTarget", info.Holder(), info.GetIsolate()); if (UNLIKELY(info.Length() < 1)) { exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, info.Length())); exceptionState.throwIfNeeded(); return; } TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); V8TRYCATCH_EXCEPTION_VOID(unsigned, index, toUInt32(info[0], exceptionState), exceptionState); v8SetReturnValue(info, imp->item(index)); }
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 namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& info) { ExceptionState exceptionState(info.Holder(), info.GetIsolate()); TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder()); Vector<String> names; collection->namedPropertyEnumerator(names, exceptionState); if (exceptionState.throwIfNeeded()) return; v8::Handle<v8::Array> v8names = v8::Array::New(info.GetIsolate(), names.size()); for (size_t i = 0; i < names.size(); ++i) v8names->Set(v8::Integer::New(info.GetIsolate(), i), v8String(info.GetIsolate(), names[i])); v8SetReturnValue(info, v8names); }
static void namedPropertyGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info) { if (info.Holder()->HasRealNamedProperty(name)) return; if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) return; TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); AtomicString propertyName = toCoreAtomicString(name); RefPtr<Node> result = imp->namedItem(propertyName); if (!result) return; v8SetReturnValueFast(info, result.release(), imp); }
EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionRemoveEventListener(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSTestEventTarget::s_info)) return throwVMTypeError(exec); JSTestEventTarget* castedThis = jsCast<JSTestEventTarget*>(asObject(thisValue)); ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestEventTarget::s_info); TestEventTarget* impl = static_cast<TestEventTarget*>(castedThis->impl()); JSValue listener = exec->argument(1); if (!listener.isObject()) return JSValue::encode(jsUndefined()); impl->removeEventListener(exec->argument(0).toString(exec)->value(exec), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)).get(), exec->argument(2).toBoolean(exec)); return JSValue::encode(jsUndefined()); }
static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) { TestEventTarget* imp = V8TestEventTarget::toNative(info.Holder()); V8TRYCATCH_VOID(Node*, propertyValue, V8Node::toNativeWithTypeCheck(info.GetIsolate(), jsValue)); 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); }
static void namedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) { if (info.Holder()->HasRealNamedProperty(name)) return; 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 = imp->anonymousNamedSetter(propertyName, propertyValue); if (!result) return; v8SetReturnValue(info, jsValue); }
static v8::Handle<v8::Value> dispatchEventMethod(const v8::Arguments& args) { if (args.Length() < 1) return throwNotEnoughArgumentsError(args.GetIsolate()); TestEventTarget* imp = V8TestEventTarget::toNative(args.Holder()); ExceptionCode ec = 0; { V8TRYCATCH(Event*, evt, V8Event::HasInstance(args[0], args.GetIsolate()) ? V8Event::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); bool result = imp->dispatchEvent(evt, ec); if (UNLIKELY(ec)) goto fail; return v8Boolean(result, args.GetIsolate()); } fail: return setDOMException(ec, args.GetIsolate()); }
static v8::Handle<v8::Value> dispatchEventCallback(const v8::Arguments& args) { INC_STATS("DOM.TestEventTarget.dispatchEvent"); if (args.Length() < 1) return throwNotEnoughArgumentsError(args.GetIsolate()); TestEventTarget* imp = V8TestEventTarget::toNative(args.Holder()); ExceptionCode ec = 0; { V8TRYCATCH(Event*, evt, V8Event::HasInstance(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined)) ? V8Event::toNative(v8::Handle<v8::Object>::Cast(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined))) : 0); bool result = imp->dispatchEvent(evt, ec); if (UNLIKELY(ec)) goto fail; return v8Boolean(result, args.GetIsolate()); } fail: return setDOMException(ec, args.GetIsolate()); }
static v8::Handle<v8::Value> itemMethod(const v8::Arguments& args) { if (args.Length() < 1) return throwNotEnoughArgumentsError(args.GetIsolate()); TestEventTarget* imp = V8TestEventTarget::toNative(args.Holder()); ExceptionCode ec = 0; { V8TRYCATCH(int, index, toUInt32(args[0])); if (UNLIKELY(index < 0)) { ec = INDEX_SIZE_ERR; goto fail; } return toV8(imp->item(index), args.Holder(), args.GetIsolate()); } fail: return setDOMException(ec, args.GetIsolate()); }
static v8::Handle<v8::Value> itemCallback(const v8::Arguments& args) { if (args.Length() < 1) return throwNotEnoughArgumentsError(args.GetIsolate()); TestEventTarget* imp = V8TestEventTarget::toNative(args.Holder()); ExceptionCode ec = 0; { V8TRYCATCH(int, index, toUInt32(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined))); if (UNLIKELY(index < 0)) { ec = INDEX_SIZE_ERR; goto fail; } return toV8(imp->item(index), args.Holder(), args.GetIsolate()); } fail: return setDOMException(ec, args.GetIsolate()); }
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; ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder())); TestEventTarget* collection = V8TestEventTarget::toNative(info.Holder()); AtomicString propertyName = toCoreAtomicString(name); RefPtr<Node> element = collection->namedItem(propertyName); if (!element) return; v8SetReturnValueFast(info, element.release(), collection); }
EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionDispatchEvent(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSTestEventTarget::s_info)) return throwVMTypeError(exec); JSTestEventTarget* castedThis = jsCast<JSTestEventTarget*>(asObject(thisValue)); ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestEventTarget::s_info); TestEventTarget* impl = static_cast<TestEventTarget*>(castedThis->impl()); if (exec->argumentCount() < 1) return throwVMError(exec, createNotEnoughArgumentsError(exec)); ExceptionCode ec = 0; Event* evt(toEvent(exec->argument(0))); if (exec->hadException()) return JSValue::encode(jsUndefined()); JSC::JSValue result = jsBoolean(impl->dispatchEvent(evt, ec)); setDOMException(exec, ec); return JSValue::encode(result); }
static v8::Handle<v8::Value> itemCallback(const v8::Arguments& args) { INC_STATS("DOM.TestEventTarget.item"); if (args.Length() < 1) return throwError("Not enough arguments", V8Proxy::TypeError); TestEventTarget* imp = V8TestEventTarget::toNative(args.Holder()); ExceptionCode ec = 0; { EXCEPTION_BLOCK(int, index, toUInt32(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined))); if (UNLIKELY(index < 0)) { ec = INDEX_SIZE_ERR; goto fail; } return toV8(imp->item(index)); } fail: V8Proxy::setDOMException(ec, args.GetIsolate()); return v8::Handle<v8::Value>(); }
EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionItem(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSTestEventTarget::s_info)) return throwVMTypeError(exec); JSTestEventTarget* castedThis = jsCast<JSTestEventTarget*>(asObject(thisValue)); ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestEventTarget::s_info); TestEventTarget* impl = static_cast<TestEventTarget*>(castedThis->impl()); if (exec->argumentCount() < 1) return throwVMError(exec, createNotEnoughArgumentsError(exec)); int index(toUInt32(exec, exec->argument(0), NormalConversion)); if (index < 0) { setDOMException(exec, INDEX_SIZE_ERR); return JSValue::encode(jsUndefined()); } if (exec->hadException()) return JSValue::encode(jsUndefined()); JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl->item(index))); return JSValue::encode(result); }