[JSC] Weak should only accept cell pointees.
[WebKit-https.git] / Source / WebKit2 / WebProcess / Plugins / Netscape / NPRuntimeObjectMap.h
index deffd54..48aa4f1 100644 (file)
 #ifndef NPJSObjectWrapperMap_h
 #define NPJSObjectWrapperMap_h
 
-#include <WebCore/RunLoop.h>
+#if ENABLE(NETSCAPE_PLUGIN_API)
+
 #include <heap/Weak.h>
+#include <heap/WeakInlines.h>
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
+#include <wtf/RunLoop.h>
 
 struct NPObject;
 typedef struct _NPVariant NPVariant;
 
 namespace JSC {
     class ExecState;
-    class JSGlobalData;
+    class VM;
     class JSGlobalObject;
     class JSObject;
     class JSValue;
@@ -49,7 +52,7 @@ class NPJSObject;
 class PluginView;
 
 // A per plug-in map of NPObjects that wrap JavaScript objects.
-class NPRuntimeObjectMap : private JSC::WeakHandleOwner {
+class NPRuntimeObjectMap final : private JSC::WeakHandleOwner {
 public:
     explicit NPRuntimeObjectMap(PluginView*);
 
@@ -64,7 +67,7 @@ public:
 
     // Returns an NPObject that wraps the given JSObject object. If there is already an NPObject that wraps this JSObject, it will
     // retain it and return it.
-    NPObject* getOrCreateNPObject(JSC::JSGlobalData&, JSC::JSObject*);
+    NPObject* getOrCreateNPObject(JSC::VM&, JSC::JSObject*);
     void npJSObjectDestroyed(NPJSObject*);
 
     // Returns a JSObject object that wraps the given NPObject.
@@ -87,18 +90,20 @@ public:
 
 private:
     // WeakHandleOwner
-    virtual void finalize(JSC::Handle<JSC::Unknown>, void* context);
+    void finalize(JSC::JSCell*&, void* context) override;
+
     void addToInvalidationQueue(NPObject*);
     void invalidateQueuedObjects();
 
     PluginView* m_pluginView;
-
     HashMap<JSC::JSObject*, NPJSObject*> m_npJSObjects;
-    HashMap<NPObject*, JSC::Weak<JSNPObject> > m_jsNPObjects;
+    HashMap<NPObject*, JSC::Weak<JSNPObject>> m_jsNPObjects;
     Vector<NPObject*> m_npObjectsToFinalize;
-    WebCore::RunLoop::Timer<NPRuntimeObjectMap> m_finalizationTimer;
+    RunLoop::Timer<NPRuntimeObjectMap> m_finalizationTimer;
 };
 
 } // namespace WebKit
 
+#endif // ENABLE(NETSCAPE_PLUGIN_API)
+
 #endif // NPJSObjectWrapperMap_h