#ifndef WebInspectorUI_h
#define WebInspectorUI_h
#include "APIObject.h"
#include "Connection.h"
#include <WebCore/InspectorForwarding.h>
#include <WebCore/InspectorFrontendClient.h>
#include <WebCore/InspectorFrontendHost.h>
namespace WebKit {
class WebPage;
class WebInspectorUI : public API::ObjectImpl<API::Object::Type::BundleInspectorUI>, public IPC::Connection::Client, public WebCore::InspectorFrontendClient {
public:
static Ref<WebInspectorUI> create(WebPage*);
WebPage* page() const { return m_page; }
void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
void didClose(IPC::Connection&) override { closeWindow(); }
void didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference, IPC::StringReference) override { closeWindow(); }
virtual IPC::ProcessType localProcessType() override { return IPC::ProcessType::Web; }
virtual IPC::ProcessType remoteProcessType() override { return IPC::ProcessType::Web; }
void establishConnection(IPC::Attachment connectionIdentifier, uint64_t inspectedPageIdentifier, bool underTest);
void showConsole();
void showResources();
void showMainResourceForFrame(const String& frameIdentifier);
void startPageProfiling();
void stopPageProfiling();
void attachedBottom() { setDockSide(DockSide::Bottom); }
void attachedRight() { setDockSide(DockSide::Right); }
void detached() { setDockSide(DockSide::Undocked); }
void setDockSide(DockSide);
void setDockingUnavailable(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 setToolbarHeight(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;
bool isUnderTest() override { return m_underTest; }
private:
explicit WebInspectorUI(WebPage*);
void evaluateCommandOnLoad(const String& command, const String& argument = String());
void evaluateCommandOnLoad(const String& command, const ASCIILiteral& argument) { evaluateCommandOnLoad(command, String(argument)); }
void evaluateCommandOnLoad(const String& command, bool argument);
void evaluateExpressionOnLoad(const String& expression);
void evaluatePendingExpressions();
WebPage* m_page;
RefPtr<IPC::Connection> m_backendConnection;
uint64_t m_inspectedPageIdentifier;
bool m_underTest;
bool m_frontendLoaded;
Deque<String> m_queue;
RefPtr<WebCore::InspectorFrontendHost> m_frontendHost;
DockSide m_dockSide;
#if PLATFORM(COCOA)
mutable String m_localizedStringsURL;
mutable bool m_hasLocalizedStringsURL;
#endif
};
}
#endif // WebInspectorUI_h