void V8CustomEvent::initCustomEventMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) { CustomEvent* event = V8CustomEvent::toNative(info.Holder()); ASSERT(!event->serializedDetail()); V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, typeArg, info[0]); V8TRYCATCH_VOID(bool, canBubbleArg, info[1]->BooleanValue()); V8TRYCATCH_VOID(bool, cancelableArg, info[2]->BooleanValue()); v8::Handle<v8::Value> detailsArg = info[3]; event->initEvent(typeArg, canBubbleArg, cancelableArg); if (!detailsArg.IsEmpty()) { info.Holder()->SetHiddenValue(V8HiddenPropertyName::detail(info.GetIsolate()), detailsArg); if (isolatedWorldForIsolate(info.GetIsolate())) event->setSerializedDetail(SerializedScriptValue::createAndSwallowExceptions(detailsArg, info.GetIsolate())); } }
static void implementsEventHandlerAttributeAttributeSetter(v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) { TestInterface* imp = V8TestInterface::toNative(info.Holder()); transferHiddenDependency(info.Holder(), TestImplements::implementsEventHandlerAttribute(imp, isolatedWorldForIsolate(info.GetIsolate())), jsValue, V8TestInterface::eventListenerCacheIndex, info.GetIsolate()); TestImplements::setImplementsEventHandlerAttribute(imp, V8EventListenerList::getEventListener(jsValue, true, ListenerFindOrCreate), isolatedWorldForIsolate(info.GetIsolate())); }
static void implementsEventHandlerAttributeAttributeGetter(const v8::PropertyCallbackInfo<v8::Value>& info) { TestInterface* imp = V8TestInterface::toNative(info.Holder()); EventListener* jsValue = TestImplements::implementsEventHandlerAttribute(imp, isolatedWorldForIsolate(info.GetIsolate())); v8SetReturnValue(info, jsValue ? v8::Handle<v8::Value>(V8AbstractEventListener::cast(jsValue)->getListenerObject(imp->executionContext())) : v8::Handle<v8::Value>(v8::Null(info.GetIsolate()))); }