WebDevToolsAgentImpl.h [plain text]
#ifndef WebDevToolsAgentImpl_h
#define WebDevToolsAgentImpl_h
#include "APUAgentDelegate.h"
#include "DevToolsRPC.h"
#include "ToolsAgent.h"
#include "WebDevToolsAgentPrivate.h"
#include <v8.h>
#include <wtf/OwnPtr.h>
namespace WebCore {
class Document;
class InspectorController;
class Node;
class String;
}
namespace WebKit {
class DebuggerAgentDelegateStub;
class DebuggerAgentImpl;
class WebDevToolsAgentClient;
class WebFrame;
class WebFrameImpl;
class WebString;
class WebURLRequest;
class WebURLResponse;
class WebViewImpl;
struct WebURLError;
struct WebDevToolsMessageData;
class WebDevToolsAgentImpl : public WebDevToolsAgentPrivate,
public ToolsAgent,
public DevToolsRPC::Delegate {
public:
WebDevToolsAgentImpl(WebViewImpl* webViewImpl, WebDevToolsAgentClient* client);
virtual ~WebDevToolsAgentImpl();
virtual void dispatchOnInspectorController(int callId, const WebCore::String& functionName, const WebCore::String& jsonArgs);
virtual void dispatchOnInjectedScript(int callId, int injectedScriptId, const WebCore::String& functionName, const WebCore::String& jsonArgs, bool async);
virtual void didClearWindowObject(WebFrameImpl* frame);
virtual void didCommitProvisionalLoad(WebFrameImpl* frame, bool isNewNavigation);
virtual void attach();
virtual void detach();
virtual void didNavigate();
virtual void dispatchMessageFromFrontend(const WebDevToolsMessageData& data);
virtual void inspectElementAt(const WebPoint& point);
virtual void evaluateInWebInspector(long callId, const WebString& script);
virtual void setRuntimeFeatureEnabled(const WebString& feature, bool enabled);
virtual void setTimelineProfilingEnabled(bool enable);
virtual void identifierForInitialRequest(unsigned long, WebFrame*, const WebURLRequest&);
virtual void willSendRequest(unsigned long, const WebURLRequest&);
virtual void didReceiveData(unsigned long, int length);
virtual void didReceiveResponse(unsigned long, const WebURLResponse&);
virtual void didFinishLoading(unsigned long);
virtual void didFailLoading(unsigned long, const WebURLError&);
virtual void sendRpcMessage(const WebDevToolsMessageData& data);
void forceRepaint();
int hostId() { return m_hostId; }
private:
static v8::Handle<v8::Value> jsDispatchOnClient(const v8::Arguments& args);
static v8::Handle<v8::Value> jsDispatchToApu(const v8::Arguments& args);
static v8::Handle<v8::Value> jsEvaluateOnSelf(const v8::Arguments& args);
static v8::Handle<v8::Value> jsOnRuntimeFeatureStateChanged(const v8::Arguments& args);
void disposeUtilityContext();
void compileUtilityScripts();
void initDevToolsAgentHost();
void createInspectorFrontendProxy();
void setInspectorFrontendProxyToInspectorController();
void setApuAgentEnabled(bool enabled);
WebCore::InspectorController* inspectorController();
v8::Local<v8::Object> createInspectorBackendV8Wrapper();
int m_hostId;
WebDevToolsAgentClient* m_client;
WebViewImpl* m_webViewImpl;
OwnPtr<DebuggerAgentDelegateStub> m_debuggerAgentDelegateStub;
OwnPtr<ToolsAgentDelegateStub> m_toolsAgentDelegateStub;
OwnPtr<DebuggerAgentImpl> m_debuggerAgentImpl;
OwnPtr<ApuAgentDelegateStub> m_apuAgentDelegateStub;
bool m_apuAgentEnabled;
bool m_resourceTrackingWasEnabled;
bool m_attached;
v8::Persistent<v8::Context> m_utilityContext;
};
}
#endif