void V8MessageEvent::initMessageEventMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) { MessageEvent* event = V8MessageEvent::toNative(info.Holder()); TOSTRING_VOID(V8StringResource<>, typeArg, info[0]); TONATIVE_VOID(bool, canBubbleArg, info[1]->BooleanValue()); TONATIVE_VOID(bool, cancelableArg, info[2]->BooleanValue()); v8::Handle<v8::Value> dataArg = info[3]; TOSTRING_VOID(V8StringResource<>, originArg, info[4]); TOSTRING_VOID(V8StringResource<>, lastEventIdArg, info[5]); LocalDOMWindow* sourceArg = toDOMWindow(info[6], info.GetIsolate()); OwnPtr<MessagePortArray> portArray; const int portArrayIndex = 7; if (!isUndefinedOrNull(info[portArrayIndex])) { portArray = adoptPtr(new MessagePortArray); bool success = false; *portArray = toRefPtrNativeArray<MessagePort, V8MessagePort>(info[portArrayIndex], portArrayIndex + 1, info.GetIsolate(), &success); if (!success) return; } event->initMessageEvent(typeArg, canBubbleArg, cancelableArg, originArg, lastEventIdArg, sourceArg, portArray.release()); if (!dataArg.IsEmpty()) { V8HiddenValue::setHiddenValue(info.GetIsolate(), info.Holder(), V8HiddenValue::data(info.GetIsolate()), dataArg); if (DOMWrapperWorld::current(info.GetIsolate()).isIsolatedWorld()) event->setSerializedData(SerializedScriptValue::createAndSwallowExceptions(dataArg, info.GetIsolate())); } }
JSC::JSValue JSMessageEvent::initMessageEvent(JSC::ExecState* exec) { const UString& typeArg = exec->argument(0).toString(exec); bool canBubbleArg = exec->argument(1).toBoolean(exec); bool cancelableArg = exec->argument(2).toBoolean(exec); RefPtr<SerializedScriptValue> dataArg = SerializedScriptValue::create(exec, exec->argument(3)); if (exec->hadException()) return jsUndefined(); const UString& originArg = exec->argument(4).toString(exec); const UString& lastEventIdArg = exec->argument(5).toString(exec); DOMWindow* sourceArg = toDOMWindow(exec->argument(6)); OwnPtr<MessagePortArray> messagePorts; if (!exec->argument(7).isUndefinedOrNull()) { messagePorts = adoptPtr(new MessagePortArray); fillMessagePortArray(exec, exec->argument(7), *messagePorts); if (exec->hadException()) return jsUndefined(); } MessageEvent* event = static_cast<MessageEvent*>(this->impl()); event->initMessageEvent(ustringToAtomicString(typeArg), canBubbleArg, cancelableArg, dataArg.release(), ustringToString(originArg), ustringToString(lastEventIdArg), sourceArg, messagePorts.release()); JSValue result; if (SerializedScriptValue* serializedValue = event->dataAsSerializedScriptValue()) result = serializedValue->deserialize(exec, globalObject(), NonThrowing); else result = jsNull(); m_data.set(exec->globalData(), this, result); return jsUndefined(); }
v8::Handle<v8::Value> V8MessageEvent::initMessageEventCallback(const v8::Arguments& args) { INC_STATS("DOM.MessageEvent.initMessageEvent"); MessageEvent* event = V8MessageEvent::toNative(args.Holder()); String typeArg = v8ValueToWebCoreString(args[0]); bool canBubbleArg = args[1]->BooleanValue(); bool cancelableArg = args[2]->BooleanValue(); RefPtr<SerializedScriptValue> dataArg = SerializedScriptValue::create(args[3]); String originArg = v8ValueToWebCoreString(args[4]); String lastEventIdArg = v8ValueToWebCoreString(args[5]); DOMWindow* sourceArg = 0; if (args[6]->IsObject()) { v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(args[6]); v8::Handle<v8::Object> window = V8DOMWrapper::lookupDOMWrapper(V8DOMWindow::GetTemplate(), wrapper); if (!window.IsEmpty()) sourceArg = V8DOMWindow::toNative(window); } OwnPtr<MessagePortArray> portArray; if (!isUndefinedOrNull(args[7])) { portArray = new MessagePortArray(); if (!getMessagePortArray(args[7], *portArray)) return v8::Undefined(); } event->initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg.release(), originArg, lastEventIdArg, sourceArg, portArray.release()); return v8::Undefined(); }
v8::Handle<v8::Value> V8MessageEvent::initMessageEventCallback(const v8::Arguments& args) { MessageEvent* event = V8MessageEvent::toNative(args.Holder()); String typeArg = toWebCoreString(args[0]); bool canBubbleArg = args[1]->BooleanValue(); bool cancelableArg = args[2]->BooleanValue(); ScriptValue dataArg = ScriptValue(args[3]); String originArg = toWebCoreString(args[4]); String lastEventIdArg = toWebCoreString(args[5]); DOMWindow* sourceArg = 0; if (args[6]->IsObject()) { v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(args[6]); v8::Handle<v8::Object> window = wrapper->FindInstanceInPrototypeChain(V8DOMWindow::GetTemplate(args.GetIsolate())); if (!window.IsEmpty()) sourceArg = V8DOMWindow::toNative(window); } OwnPtr<MessagePortArray> portArray; if (!isUndefinedOrNull(args[7])) { portArray = adoptPtr(new MessagePortArray); if (!getMessagePortArray(args[7], *portArray, args.GetIsolate())) return v8::Undefined(); } event->initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, portArray.release()); return v8::Undefined(); }
static JSC::JSValue handleInitMessageEvent(JSMessageEvent* jsEvent, JSC::ExecState* exec) { const String& typeArg = exec->argument(0).toString(exec)->value(exec); bool canBubbleArg = exec->argument(1).toBoolean(exec); bool cancelableArg = exec->argument(2).toBoolean(exec); const String originArg = exec->argument(4).toString(exec)->value(exec); const String lastEventIdArg = exec->argument(5).toString(exec)->value(exec); DOMWindow* sourceArg = toDOMWindow(exec->argument(6)); OwnPtr<MessagePortArray> messagePorts; OwnPtr<ArrayBufferArray> arrayBuffers; if (!exec->argument(7).isUndefinedOrNull()) { messagePorts = adoptPtr(new MessagePortArray); arrayBuffers = adoptPtr(new ArrayBufferArray); fillMessagePortArray(exec, exec->argument(7), *messagePorts, *arrayBuffers); if (exec->hadException()) return jsUndefined(); } ScriptValue dataArg = ScriptValue(exec->vm(), exec->argument(3)); if (exec->hadException()) return jsUndefined(); MessageEvent* event = static_cast<MessageEvent*>(jsEvent->impl()); event->initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts.release()); jsEvent->m_data.set(exec->vm(), jsEvent, dataArg.jsValue()); return jsUndefined(); }
void V8MessageEvent::initMessageEventMethodCustom( const v8::FunctionCallbackInfo<v8::Value>& info) { ExceptionState exceptionState(ExceptionState::ExecutionContext, "initMessageEvent", "MessageEvent", info.Holder(), info.GetIsolate()); MessageEvent* event = V8MessageEvent::toImpl(info.Holder()); TOSTRING_VOID(V8StringResource<>, typeArg, info[0]); bool canBubbleArg = false; bool cancelableArg = false; if (!v8Call(info[1]->BooleanValue(info.GetIsolate()->GetCurrentContext()), canBubbleArg) || !v8Call(info[2]->BooleanValue(info.GetIsolate()->GetCurrentContext()), cancelableArg)) return; v8::Local<v8::Value> dataArg = info[3]; TOSTRING_VOID(V8StringResource<>, originArg, info[4]); TOSTRING_VOID(V8StringResource<>, lastEventIdArg, info[5]); DOMWindow* sourceArg = toDOMWindow(info.GetIsolate(), info[6]); MessagePortArray* portArray = nullptr; const int portArrayIndex = 7; if (!isUndefinedOrNull(info[portArrayIndex])) { portArray = new MessagePortArray; *portArray = toMemberNativeArray<MessagePort>( info[portArrayIndex], portArrayIndex + 1, info.GetIsolate(), exceptionState); if (exceptionState.hadException()) return; } event->initMessageEvent( typeArg, canBubbleArg, cancelableArg, ScriptValue(ScriptState::current(info.GetIsolate()), dataArg), originArg, lastEventIdArg, sourceArg, portArray); }
void EventSource::onMessageEvent(const AtomicString& eventType, const String& data, const AtomicString& lastEventId) { MessageEvent* e = MessageEvent::create(); e->initMessageEvent(eventType, false, false, SerializedScriptValue::serialize(data), m_eventStreamOrigin, lastEventId, 0, nullptr); InspectorInstrumentation::willDispatchEventSourceEvent( getExecutionContext(), this, eventType, lastEventId, data); dispatchEvent(e); }
JSValue* jsMessageEventPrototypeFunctionInitMessageEvent(ExecState* exec, JSObject*, JSValue* thisValue, const ArgList& args) { if (!thisValue->isObject(&JSMessageEvent::s_info)) return throwError(exec, TypeError); JSMessageEvent* castedThisObj = static_cast<JSMessageEvent*>(thisValue); MessageEvent* imp = static_cast<MessageEvent*>(castedThisObj->impl()); const UString& typeArg = args[0]->toString(exec); bool canBubbleArg = args[1]->toBoolean(exec); bool cancelableArg = args[2]->toBoolean(exec); const UString& dataArg = args[3]->toString(exec); const UString& originArg = args[4]->toString(exec); const UString& lastEventIdArg = args[5]->toString(exec); DOMWindow* sourceArg = toDOMWindow(args[6]); imp->initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg); return jsUndefined(); }
JSC::JSValue JSMessageEvent::initMessageEvent(JSC::ExecState* exec, const JSC::ArgList& args) { const UString& typeArg = args.at(0).toString(exec); bool canBubbleArg = args.at(1).toBoolean(exec); bool cancelableArg = args.at(2).toBoolean(exec); PassRefPtr<SerializedScriptValue> dataArg = SerializedScriptValue::create(exec, args.at(3)); const UString& originArg = args.at(4).toString(exec); const UString& lastEventIdArg = args.at(5).toString(exec); DOMWindow* sourceArg = toDOMWindow(args.at(6)); OwnPtr<MessagePortArray> messagePorts; if (!args.at(7).isUndefinedOrNull()) { messagePorts = new MessagePortArray(); fillMessagePortArray(exec, args.at(7), *messagePorts); if (exec->hadException()) return jsUndefined(); } MessageEvent* event = static_cast<MessageEvent*>(this->impl()); event->initMessageEvent(ustringToAtomicString(typeArg), canBubbleArg, cancelableArg, dataArg, ustringToString(originArg), ustringToString(lastEventIdArg), sourceArg, messagePorts.release()); return jsUndefined(); }