diff options
Diffstat (limited to 'WebCore/bindings/js/JSDOMGlobalObject.h')
| -rw-r--r-- | WebCore/bindings/js/JSDOMGlobalObject.h | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/WebCore/bindings/js/JSDOMGlobalObject.h b/WebCore/bindings/js/JSDOMGlobalObject.h index 855691c..647730c 100644 --- a/WebCore/bindings/js/JSDOMGlobalObject.h +++ b/WebCore/bindings/js/JSDOMGlobalObject.h @@ -33,6 +33,7 @@ namespace WebCore { class Document; class Event; + class DOMWrapperWorld; class JSLazyEventListener; class JSEventListener; class ScriptExecutionContext; @@ -45,8 +46,7 @@ namespace WebCore { protected: struct JSDOMGlobalObjectData; - JSDOMGlobalObject(PassRefPtr<JSC::Structure>, JSDOMGlobalObjectData*, JSC::JSObject* thisValue); - virtual ~JSDOMGlobalObject(); + JSDOMGlobalObject(NonNullPassRefPtr<JSC::Structure>, JSDOMGlobalObjectData*, JSC::JSObject* thisValue); public: JSDOMStructureMap& structures() { return d()->structures; } @@ -54,20 +54,10 @@ namespace WebCore { virtual ScriptExecutionContext* scriptExecutionContext() const = 0; - // Finds a wrapper of a GC-unprotected JS EventListener, returns 0 if no existing one. - JSEventListener* findJSEventListener(JSC::JSValue); - - // Finds or creates a wrapper of a JS EventListener. JS EventListener object is *NOT* GC-protected. - PassRefPtr<JSEventListener> findOrCreateJSEventListener(JSC::JSValue); - - // Creates a GC-protected JS EventListener for an "onXXX" event attribute. - // These listeners cannot be removed through the removeEventListener API. + // Creates a JS EventListener for an "onXXX" event attribute. These + // listeners cannot be removed through the removeEventListener API. PassRefPtr<JSEventListener> createJSAttributeEventListener(JSC::JSValue); - typedef HashMap<JSC::JSObject*, JSEventListener*> JSListenersMap; - - JSListenersMap& jsEventListeners(); - // Make binding code generation easier. JSDOMGlobalObject* globalObject() { return this; } @@ -76,19 +66,27 @@ namespace WebCore { virtual void markChildren(JSC::MarkStack&); + DOMWrapperWorld* world() { return d()->m_world.get(); } + protected: struct JSDOMGlobalObjectData : public JSC::JSGlobalObject::JSGlobalObjectData { - JSDOMGlobalObjectData(); + JSDOMGlobalObjectData(DOMWrapperWorld* world, Destructor destructor = destroyJSDOMGlobalObjectData) + : JSGlobalObjectData(destructor) + , evt(0) + , m_world(world) + { + } JSDOMStructureMap structures; JSDOMConstructorMap constructors; - JSDOMGlobalObject::JSListenersMap jsEventListeners; - Event* evt; + RefPtr<DOMWrapperWorld> m_world; }; private: + static void destroyJSDOMGlobalObjectData(void*); + JSDOMGlobalObjectData* d() const { return static_cast<JSDOMGlobalObjectData*>(JSC::JSVariableObject::d); } }; @@ -103,8 +101,11 @@ namespace WebCore { return constructor; } - JSDOMGlobalObject* toJSDOMGlobalObject(Document*); - JSDOMGlobalObject* toJSDOMGlobalObject(ScriptExecutionContext*); + JSDOMGlobalObject* toJSDOMGlobalObject(Document*, JSC::ExecState*); + JSDOMGlobalObject* toJSDOMGlobalObject(ScriptExecutionContext*, JSC::ExecState*); + + JSDOMGlobalObject* toJSDOMGlobalObject(Document*, DOMWrapperWorld*); + JSDOMGlobalObject* toJSDOMGlobalObject(ScriptExecutionContext*, DOMWrapperWorld*); } // namespace WebCore |
