ITMLKit Inspector: Data Bindings / Associated Data for nodes
[WebKit-https.git] / Source / WebCore / inspector / CommandLineAPIHost.h
index b03f196..d890997 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef CommandLineAPIHost_h
-#define CommandLineAPIHost_h
+#pragma once
 
-#include "ScriptState.h"
-#include <runtime/ConsoleTypes.h>
+#include <JavaScriptCore/PerGlobalObjectWrapperWorld.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 #include <wtf/text/WTFString.h>
 
-namespace Deprecated {
-class ScriptValue;
+namespace JSC {
+class JSValue;
 }
 
 namespace Inspector {
 class InspectorAgent;
 class InspectorConsoleAgent;
-class InspectorObject;
-class InspectorValue;
 }
 
 namespace WebCore {
@@ -53,6 +49,7 @@ class Database;
 class InspectorDOMAgent;
 class InspectorDOMStorageAgent;
 class InspectorDatabaseAgent;
+class JSDOMGlobalObject;
 class Node;
 class Storage;
 
@@ -67,18 +64,14 @@ public:
         , Inspector::InspectorConsoleAgent* consoleAgent
         , InspectorDOMAgent* domAgent
         , InspectorDOMStorageAgent* domStorageAgent
-#if ENABLE(SQL_DATABASE)
         , InspectorDatabaseAgent* databaseAgent
-#endif
         )
     {
         m_inspectorAgent = inspectorAgent;
         m_consoleAgent = consoleAgent;
         m_domAgent = domAgent;
         m_domStorageAgent = domStorageAgent;
-#if ENABLE(SQL_DATABASE)
         m_databaseAgent = databaseAgent;
-#endif
     }
 
     void disconnect();
@@ -89,36 +82,40 @@ public:
     class InspectableObject {
         WTF_MAKE_FAST_ALLOCATED;
     public:
-        virtual Deprecated::ScriptValue get(JSC::ExecState*);
-        virtual ~InspectableObject() { }
+        virtual JSC::JSValue get(JSC::ExecState&);
+        virtual ~InspectableObject() = default;
     };
     void addInspectedObject(std::unique_ptr<InspectableObject>);
-    void clearInspectedObjects();
-    InspectableObject* inspectedObject(unsigned index);
-    void inspectImpl(PassRefPtr<Inspector::InspectorValue> objectToInspect, PassRefPtr<Inspector::InspectorValue> hints);
+    JSC::JSValue inspectedObject(JSC::ExecState&);
+    void inspect(JSC::ExecState&, JSC::JSValue objectToInspect, JSC::JSValue hints);
+
+    struct ListenerEntry {
+        JSC::Strong<JSC::JSObject> listener;
+        bool useCapture;
+        bool passive;
+        bool once;
+    };
+
+    using EventListenersRecord = Vector<WTF::KeyValuePair<String, Vector<ListenerEntry>>>;
+    EventListenersRecord getEventListeners(JSC::ExecState&, Node*);
 
-    void getEventListenersImpl(Node*, Vector<EventListenerInfo>& listenersArray);
+    String databaseId(Database&);
+    String storageId(Storage&);
 
-#if ENABLE(SQL_DATABASE)
-    String databaseIdImpl(Database*);
-#endif
-    String storageIdImpl(Storage*);
+    JSC::JSValue wrapper(JSC::ExecState*, JSDOMGlobalObject*);
+    void clearAllWrappers();
 
 private:
     CommandLineAPIHost();
 
-    Inspector::InspectorAgent* m_inspectorAgent;
-    Inspector::InspectorConsoleAgent* m_consoleAgent;
-    InspectorDOMAgent* m_domAgent;
-    InspectorDOMStorageAgent* m_domStorageAgent;
-#if ENABLE(SQL_DATABASE)
-    InspectorDatabaseAgent* m_databaseAgent;
-#endif
+    Inspector::InspectorAgent* m_inspectorAgent { nullptr };
+    Inspector::InspectorConsoleAgent* m_consoleAgent { nullptr };
+    InspectorDOMAgent* m_domAgent { nullptr };
+    InspectorDOMStorageAgent* m_domStorageAgent { nullptr };
+    InspectorDatabaseAgent* m_databaseAgent { nullptr };
 
-    Vector<std::unique_ptr<InspectableObject>> m_inspectedObjects;
-    std::unique_ptr<InspectableObject> m_defaultInspectableObject;
+    std::unique_ptr<InspectableObject> m_inspectedObject; // $0
+    Inspector::PerGlobalObjectWrapperWorld m_wrappers;
 };
 
 } // namespace WebCore
-
-#endif // !defined(CommandLineAPIHost_h)