#ifndef WebInspectorUI_h
#define WebInspectorUI_h
#include "Connection.h"
#include "WebInspectorFrontendAPIDispatcher.h"
#include <WebCore/InspectorFrontendClient.h>
#include <WebCore/InspectorFrontendHost.h>
namespace WebCore {
class InspectorController;
}
namespace WebKit {
class WebPage;
class WebInspectorUI : public RefCounted<WebInspectorUI>, public IPC::Connection::Client, public WebCore::InspectorFrontendClient {
public:
static Ref<WebInspectorUI> create(WebPage&);
void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
void didClose(IPC::Connection&) override { closeWindow(); }
void didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference, IPC::StringReference) override { closeWindow(); }
IPC::ProcessType localProcessType() override { return IPC::ProcessType::Web; }
IPC::ProcessType remoteProcessType() override { return IPC::ProcessType::Web; }
void establishConnection(IPC::Attachment connectionIdentifier, uint64_t inspectedPageIdentifier, bool underTest, unsigned inspectionLevel);
void showConsole();
void showResources();
void showTimelines();
void showMainResourceForFrame(const String& frameIdentifier);
void startPageProfiling();
void stopPageProfiling();
void startElementSelection();
void stopElementSelection();
void attachedBottom() { setDockSide(DockSide::Bottom); }
void attachedRight() { setDockSide(DockSide::Right); }
void detached() { setDockSide(DockSide::Undocked); }
void setDockSide(DockSide);
void setDockingUnavailable(bool);
void setIsVisible(bool);
void didSave(const String& url);
void didAppend(const String& url);
void sendMessageToFrontend(const String&);
void windowObjectCleared() override;
void frontendLoaded() override;
void startWindowDrag() override;
void moveWindowBy(float x, float y) override;
String localizedStringsURL() override;
void bringToFront() override;
void closeWindow() override;
void requestSetDockSide(DockSide) override;
void changeAttachedWindowHeight(unsigned) override;
void changeAttachedWindowWidth(unsigned) override;
void openInNewTab(const String& url) override;
bool canSave() override;
void save(const WTF::String& url, const WTF::String& content, bool base64Encoded, bool forceSaveAs) override;
void append(const WTF::String& url, const WTF::String& content) override;
void inspectedURLChanged(const String&) override;
void sendMessageToBackend(const String&) override;
void pagePaused() override;
void pageUnpaused() override;
bool isUnderTest() override { return m_underTest; }
unsigned inspectionLevel() const override { return m_inspectionLevel; }
private:
explicit WebInspectorUI(WebPage&);
WebPage& m_page;
WebInspectorFrontendAPIDispatcher m_frontendAPIDispatcher;
RefPtr<WebCore::InspectorFrontendHost> m_frontendHost;
RefPtr<IPC::Connection> m_backendConnection;
WebCore::InspectorController* m_frontendController { nullptr };
uint64_t m_inspectedPageIdentifier { 0 };
bool m_underTest { false };
bool m_dockingUnavailable { false };
bool m_isVisible { false };
DockSide m_dockSide { DockSide::Undocked };
unsigned m_inspectionLevel { 1 };
#if PLATFORM(COCOA)
mutable String m_localizedStringsURL;
mutable bool m_hasLocalizedStringsURL { false };
#endif
};
}
#endif // WebInspectorUI_h