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_