diff options
Diffstat (limited to 'WebCore/bindings/js/JSWorkerContextCustom.cpp')
-rw-r--r-- | WebCore/bindings/js/JSWorkerContextCustom.cpp | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/WebCore/bindings/js/JSWorkerContextCustom.cpp b/WebCore/bindings/js/JSWorkerContextCustom.cpp index 6824914..919c81f 100644 --- a/WebCore/bindings/js/JSWorkerContextCustom.cpp +++ b/WebCore/bindings/js/JSWorkerContextCustom.cpp @@ -30,7 +30,10 @@ #include "JSWorkerContext.h" #include "JSDOMBinding.h" +#include "JSDOMGlobalObject.h" #include "JSEventListener.h" +#include "JSMessageChannelConstructor.h" +#include "JSMessagePort.h" #include "JSWorkerLocation.h" #include "JSWorkerNavigator.h" #include "JSXMLHttpRequestConstructor.h" @@ -44,29 +47,29 @@ using namespace JSC; namespace WebCore { -void JSWorkerContext::mark() +void JSWorkerContext::markChildren(MarkStack& markStack) { - Base::mark(); + Base::markChildren(markStack); JSGlobalData& globalData = *this->globalData(); - markActiveObjectsForContext(globalData, scriptExecutionContext()); + markActiveObjectsForContext(markStack, globalData, scriptExecutionContext()); - markDOMObjectWrapper(globalData, impl()->optionalLocation()); - markDOMObjectWrapper(globalData, impl()->optionalNavigator()); + markDOMObjectWrapper(markStack, globalData, impl()->optionalLocation()); + markDOMObjectWrapper(markStack, globalData, impl()->optionalNavigator()); - markIfNotNull(impl()->onmessage()); + markIfNotNull(markStack, impl()->onerror()); typedef WorkerContext::EventListenersMap EventListenersMap; typedef WorkerContext::ListenerVector ListenerVector; EventListenersMap& eventListeners = impl()->eventListeners(); for (EventListenersMap::iterator mapIter = eventListeners.begin(); mapIter != eventListeners.end(); ++mapIter) { for (ListenerVector::iterator vecIter = mapIter->second.begin(); vecIter != mapIter->second.end(); ++vecIter) - (*vecIter)->markJSFunction(); + (*vecIter)->markJSFunction(markStack); } } -bool JSWorkerContext::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) +bool JSWorkerContext::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) { // Look for overrides before looking at any of our own properties. if (JSGlobalObject::getOwnPropertySlot(exec, propertyName, slot)) @@ -138,6 +141,14 @@ JSValue JSWorkerContext::setInterval(ExecState* exec, const ArgList& args) return jsNumber(exec, impl()->setInterval(action, delay)); } + +#if ENABLE(CHANNEL_MESSAGING) +JSValue JSWorkerContext::messageChannel(ExecState* exec) const +{ + return getDOMConstructor<JSMessageChannelConstructor>(exec, this); +} +#endif + } // namespace WebCore #endif // ENABLE(WORKERS) |