RemoteInspectorClient.h [plain text]
#pragma once
#if ENABLE(REMOTE_INSPECTOR)
#include <wtf/HashMap.h>
#include <wtf/Vector.h>
#include <wtf/glib/GRefPtr.h>
#include <wtf/text/WTFString.h>
typedef struct _GCancellable GCancellable;
typedef struct _GDBusConnection GDBusConnection;
typedef struct _GDBusInterfaceVTable GDBusInterfaceVTable;
namespace WebKit {
class RemoteInspectorClient;
class RemoteInspectorProxy;
class RemoteWebInspectorProxy;
class RemoteInspectorObserver {
public:
virtual ~RemoteInspectorObserver() { }
virtual void targetListChanged(RemoteInspectorClient&) = 0;
virtual void connectionClosed(RemoteInspectorClient&) = 0;
};
class RemoteInspectorClient {
WTF_MAKE_FAST_ALLOCATED();
public:
RemoteInspectorClient(const char* address, unsigned port, RemoteInspectorObserver&);
~RemoteInspectorClient();
struct Target {
public:
uint64_t id;
CString type;
CString name;
CString url;
};
const HashMap<uint64_t, Vector<Target>>& targets() const { return m_targets; }
const String& hostAndPort() const { return m_hostAndPort; }
const String& backendCommandsURL() const { return m_backendCommandsURL; }
void inspect(uint64_t connectionID, uint64_t targetID);
void sendMessageToBackend(uint64_t connectionID, uint64_t targetID, const String&);
void closeFromFrontend(uint64_t connectionID, uint64_t targetID);
private:
static void connectionClosedCallback(GDBusConnection*, gboolean remotePeerVanished, GError*, RemoteInspectorClient*);
void setupConnection(GRefPtr<GDBusConnection>&&);
void connectionClosed();
static const GDBusInterfaceVTable s_interfaceVTable;
void setBackendCommands(const char*);
void setTargetList(uint64_t connectionID, Vector<Target>&&);
void sendMessageToFrontend(uint64_t connectionID, uint64_t targetID, const char*);
String m_hostAndPort;
String m_backendCommandsURL;
RemoteInspectorObserver& m_observer;
GRefPtr<GDBusConnection> m_dbusConnection;
GRefPtr<GCancellable> m_cancellable;
HashMap<uint64_t, Vector<Target>> m_targets;
HashMap<std::pair<uint64_t, uint64_t>, std::unique_ptr<RemoteInspectorProxy>> m_inspectorProxyMap;
};
}
#endif // ENABLE(REMOTE_INSPECTOR)