2
* Copyright (C) 2009 Ericsson AB
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer
13
* in the documentation and/or other materials provided with the
15
* 3. Neither the name of Ericsson nor the names of its contributors
16
* may be used to endorse or promote products derived from this
17
* software without specific prior written permission.
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
#if ENABLE(EVENTSOURCE)
36
#include "JSEventSourceConstructor.h"
38
#include "EventSource.h"
39
#include "ExceptionCode.h"
40
#include "JSEventSource.h"
41
#include "ScriptExecutionContext.h"
42
#include <runtime/Error.h>
48
ASSERT_CLASS_FITS_IN_CELL(JSEventSourceConstructor);
50
const ClassInfo JSEventSourceConstructor::s_info = { "EventSourceContructor", 0, 0, 0 };
52
JSEventSourceConstructor::JSEventSourceConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
53
: DOMConstructorObject(JSEventSourceConstructor::createStructure(globalObject->objectPrototype()), globalObject)
55
putDirect(exec->propertyNames().prototype, JSEventSourcePrototype::self(exec, globalObject), None);
56
putDirect(exec->propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);
59
static JSObject* constructEventSource(ExecState* exec, JSObject* constructor, const ArgList& args)
62
return throwError(exec, SyntaxError, "Not enough arguments");
64
UString url = args.at(0).toString(exec);
65
if (exec->hadException())
68
JSEventSourceConstructor* jsConstructor = static_cast<JSEventSourceConstructor*>(constructor);
69
ScriptExecutionContext* context = jsConstructor->scriptExecutionContext();
71
return throwError(exec, ReferenceError, "EventSource constructor associated document is unavailable");
74
RefPtr<EventSource> eventSource = EventSource::create(url, context, ec);
76
setDOMException(exec, ec);
80
return asObject(toJS(exec, jsConstructor->globalObject(), eventSource.release()));
83
ConstructType JSEventSourceConstructor::getConstructData(ConstructData& constructData)
85
constructData.native.function = constructEventSource;
86
return ConstructTypeHost;
89
} // namespace WebCore
91
#endif // ENABLE(EVENTSOURCE)