RemoteWebInspectorProxy.h [plain text]
#pragma once
#include "APIObject.h"
#include "MessageReceiver.h"
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
#include <wtf/RetainPtr.h>
#include <wtf/text/WTFString.h>
#if PLATFORM(MAC)
OBJC_CLASS NSURL;
OBJC_CLASS NSWindow;
OBJC_CLASS WKRemoteWebInspectorProxyObjCAdapter;
OBJC_CLASS WKWebInspectorWKWebView;
#endif
namespace WebKit {
class WebPageProxy;
class RemoteWebInspectorProxyClient {
public:
virtual ~RemoteWebInspectorProxyClient() { }
virtual void sendMessageToBackend(const String& message) = 0;
virtual void closeFromFrontend() = 0;
};
class RemoteWebInspectorProxy : public RefCounted<RemoteWebInspectorProxy>, public IPC::MessageReceiver {
public:
static Ref<RemoteWebInspectorProxy> create()
{
return adoptRef(*new RemoteWebInspectorProxy());
}
~RemoteWebInspectorProxy();
void setClient(RemoteWebInspectorProxyClient* client) { m_client = client; }
void invalidate();
void load(const String& debuggableType, const String& backendCommandsURL);
void closeFromBackend();
void show();
void sendMessageToFrontend(const String& message);
#if PLATFORM(MAC)
NSWindow *window() const { return m_window.get(); }
WKWebInspectorWKWebView *webView() const { return m_webView.get(); }
#endif
#if PLATFORM(GTK)
void updateWindowTitle(const CString&);
#endif
void closeFromCrash();
private:
RemoteWebInspectorProxy();
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
void frontendDidClose();
void bringToFront();
void save(const String& filename, const String& content, bool base64Encoded, bool forceSaveAs);
void append(const String& filename, const String& content);
void startWindowDrag();
void openInNewTab(const String& url);
void sendMessageToBackend(const String& message);
void createFrontendPageAndWindow();
void closeFrontendPageAndWindow();
WebPageProxy* platformCreateFrontendPageAndWindow();
void platformCloseFrontendPageAndWindow();
void platformBringToFront();
void platformSave(const String& filename, const String& content, bool base64Encoded, bool forceSaveAs);
void platformAppend(const String& filename, const String& content);
void platformStartWindowDrag();
void platformOpenInNewTab(const String& url);
RemoteWebInspectorProxyClient* m_client { nullptr };
WebPageProxy* m_inspectorPage { nullptr };
#if PLATFORM(MAC)
RetainPtr<WKWebInspectorWKWebView> m_webView;
RetainPtr<NSWindow> m_window;
RetainPtr<WKRemoteWebInspectorProxyObjCAdapter> m_objCAdapter;
HashMap<String, RetainPtr<NSURL>> m_suggestedToActualURLMap;
#endif
#if PLATFORM(GTK)
GtkWidget* m_webView { nullptr };
GtkWidget* m_window { nullptr };
#endif
};
}