#ifndef WebDevToolsAgent_h
#define WebDevToolsAgent_h
#include "../platform/WebCommon.h"
#include "../platform/WebVector.h"
namespace blink {
class WebDevToolsAgentClient;
class WebDevToolsMessageTransport;
class WebString;
class WebURLRequest;
class WebURLResponse;
class WebView;
struct WebDevToolsMessageData;
struct WebPoint;
struct WebMemoryUsageInfo;
struct WebURLError;
class WebDevToolsAgent {
public:
virtual ~WebDevToolsAgent() {}
BLINK_EXPORT static WebString inspectorProtocolVersion();
BLINK_EXPORT static bool supportsInspectorProtocolVersion(const WebString& version);
virtual void attach() = 0;
virtual void reattach(const WebString& savedState) = 0;
virtual void detach() = 0;
virtual void didNavigate() = 0;
virtual void dispatchOnInspectorBackend(const WebString& message) = 0;
virtual void inspectElementAt(const WebPoint&) = 0;
virtual void setProcessId(long) = 0;
virtual void setLayerTreeId(int) = 0;
virtual void didBeginFrame(int frameId = 0) = 0;
virtual void didCancelFrame() = 0;
virtual void willComposite() = 0;
virtual void didComposite() = 0;
class GPUEvent {
public:
GPUEvent(double timestamp, int phase, bool foreign, uint64_t usedGPUMemoryBytes) :
timestamp(timestamp),
phase(phase),
foreign(foreign),
usedGPUMemoryBytes(usedGPUMemoryBytes),
limitGPUMemoryBytes(0) { }
double timestamp;
int phase;
bool foreign;
uint64_t usedGPUMemoryBytes;
uint64_t limitGPUMemoryBytes;
};
virtual void processGPUEvent(const GPUEvent&) = 0;
virtual void evaluateInWebInspector(long callId, const WebString& script) = 0;
class MessageDescriptor {
public:
virtual ~MessageDescriptor() { }
virtual WebDevToolsAgent* agent() = 0;
virtual WebString message() = 0;
};
BLINK_EXPORT static void interruptAndDispatch(MessageDescriptor*);
BLINK_EXPORT static bool shouldInterruptForMessage(const WebString&);
BLINK_EXPORT static void processPendingMessages();
};
}
#endif