5 #ifndef V8_V8_INSPECTOR_H_
6 #define V8_V8_INSPECTOR_H_
12 #include <unordered_map>
40 StringView() : m_is8Bit(true), m_length(0), m_characters8(nullptr) {}
43 : m_is8Bit(true), m_length(length), m_characters8(characters) {}
46 : m_is8Bit(false), m_length(length), m_characters16(characters) {}
48 bool is8Bit()
const {
return m_is8Bit; }
49 size_t length()
const {
return m_length; }
70 static std::unique_ptr<StringBuffer> create(
StringView);
78 contextGroupId(contextGroupId),
79 humanReadableName(humanReadableName),
80 hasMemoryOnConsole(false) {}
94 void*
operator new(size_t) =
delete;
95 void*
operator new(size_t, NotNullTagEnum,
void*) =
delete;
96 void*
operator new(size_t,
void*) =
delete;
103 virtual StringView firstNonEmptySourceURL()
const = 0;
104 virtual bool isEmpty()
const = 0;
106 virtual int topLineNumber()
const = 0;
107 virtual int topColumnNumber()
const = 0;
109 virtual StringView topFunctionName()
const = 0;
112 virtual std::unique_ptr<protocol::Runtime::API::StackTrace>
113 buildInspectorObject()
const = 0;
114 virtual std::unique_ptr<protocol::Runtime::API::StackTrace>
115 buildInspectorObject(
int maxAsyncDepth)
const = 0;
116 virtual std::unique_ptr<StringBuffer> toString()
const = 0;
119 virtual std::unique_ptr<V8StackTrace> clone() = 0;
132 virtual void addInspectedObject(std::unique_ptr<Inspectable>) = 0;
135 static bool canDispatchMethod(
StringView method);
136 virtual void dispatchProtocolMessage(
StringView message) = 0;
137 virtual std::vector<uint8_t> state() = 0;
138 virtual std::vector<std::unique_ptr<protocol::Schema::API::Domain>>
139 supportedDomains() = 0;
142 virtual void schedulePauseOnNextStatement(
StringView breakReason,
144 virtual void cancelPauseOnNextStatement() = 0;
145 virtual void breakProgram(
StringView breakReason,
147 virtual void setSkipAllPauses(
bool) = 0;
148 virtual void resume(
bool setTerminateOnResume =
false) = 0;
149 virtual void stepOver() = 0;
150 virtual std::vector<std::unique_ptr<protocol::Debugger::API::SearchMatch>>
155 virtual std::unique_ptr<protocol::Runtime::API::RemoteObject> wrapObject(
157 bool generatePreview) = 0;
159 virtual bool unwrapObject(std::unique_ptr<StringBuffer>* error,
162 std::unique_ptr<StringBuffer>* objectGroup) = 0;
163 virtual void releaseObjectGroup(
StringView) = 0;
164 virtual void triggerPreciseCoverageDeltaUpdate(
StringView occassion) = 0;
190 int contextGroupId) {
213 typedef void (*TimerCallback)(
void*);
235 bool should_pause =
false;
239 V8StackTraceId(uintptr_t
id,
const std::pair<int64_t, int64_t> debugger_id);
240 V8StackTraceId(uintptr_t
id,
const std::pair<int64_t, int64_t> debugger_id,
247 bool IsInvalid() const;
259 virtual void resetContextGroup(
int contextGroupId) = 0;
263 virtual void idleStarted() = 0;
264 virtual void idleFinished() = 0;
267 virtual void asyncTaskScheduled(
StringView taskName,
void* task,
269 virtual void asyncTaskCanceled(
void* task) = 0;
270 virtual void asyncTaskStarted(
void* task) = 0;
271 virtual void asyncTaskFinished(
void* task) = 0;
272 virtual void allAsyncTasksCanceled() = 0;
275 virtual void externalAsyncTaskStarted(
const V8StackTraceId& parent) = 0;
276 virtual void externalAsyncTaskFinished(
const V8StackTraceId& parent) = 0;
282 unsigned lineNumber,
unsigned columnNumber,
283 std::unique_ptr<V8StackTrace>,
292 virtual void sendResponse(
int callId,
293 std::unique_ptr<StringBuffer> message) = 0;
294 virtual void sendNotification(std::unique_ptr<StringBuffer> message) = 0;
295 virtual void flushProtocolNotifications() = 0;
297 virtual std::unique_ptr<V8InspectorSession> connect(
int contextGroupId,
302 virtual std::unique_ptr<V8StackTrace> createStackTrace(
304 virtual std::unique_ptr<V8StackTrace> captureStackTrace(
bool fullStack) = 0;
312 return m_countersMap;
316 static int* getCounterPtr(
const char* name);
319 std::unordered_map<std::string, int> m_countersMap;
322 virtual std::shared_ptr<Counters> enableCounters() = 0;
327 #endif // V8_V8_INSPECTOR_H_