EncodedJSValue JSC_HOST_CALL JSEventSourceConstructor::constructJSEventSource(ExecState* exec) { if (exec->argumentCount() < 1) return throwVMError(exec, createTypeError(exec, "Not enough arguments")); UString url = exec->argument(0).toString(exec); if (exec->hadException()) return JSValue::encode(JSValue()); JSEventSourceConstructor* jsConstructor = static_cast<JSEventSourceConstructor*>(exec->callee()); ScriptExecutionContext* context = jsConstructor->scriptExecutionContext(); if (!context) return throwVMError(exec, createReferenceError(exec, "EventSource constructor associated document is unavailable")); ExceptionCode ec = 0; RefPtr<EventSource> eventSource = EventSource::create(ustringToString(url), context, ec); if (ec) { setDOMException(exec, ec); return JSValue::encode(JSValue()); } return JSValue::encode(asObject(toJS(exec, jsConstructor->globalObject(), eventSource.release()))); }
static JSObject* constructEventSource(ExecState* exec, JSObject* constructor, const ArgList& args) { if (args.size() < 1) return throwError(exec, SyntaxError, "Not enough arguments"); UString url = args.at(0).toString(exec); if (exec->hadException()) return 0; JSEventSourceConstructor* jsConstructor = static_cast<JSEventSourceConstructor*>(constructor); ScriptExecutionContext* context = jsConstructor->scriptExecutionContext(); if (!context) return throwError(exec, ReferenceError, "EventSource constructor associated document is unavailable"); ExceptionCode ec = 0; RefPtr<EventSource> eventSource = EventSource::create(url, context, ec); if (ec) { setDOMException(exec, ec); return 0; } return asObject(toJS(exec, jsConstructor->globalObject(), eventSource.release())); }