31#ifndef V8_INSPECTOR_INJECTED_SCRIPT_H_
32#define V8_INSPECTOR_INJECTED_SCRIPT_H_
35#include <unordered_map>
36#include <unordered_set>
43#include "src/inspector/protocol/Forward.h"
44#include "src/inspector/protocol/Runtime.h"
52class V8InspectorSessionImpl;
55using protocol::Response;
61 std::unique_ptr<protocol::Runtime::RemoteObject>
result,
62 std::unique_ptr<protocol::Runtime::ExceptionDetails> exceptionDetails);
65 const protocol::DispatchResponse& response);
71 std::unique_ptr<protocol::Runtime::RemoteObject>
result,
72 std::unique_ptr<protocol::Runtime::ExceptionDetails>
73 exceptionDetails) = 0;
74 virtual void sendFailure(
const protocol::DispatchResponse& response) = 0;
88 bool accessorPropertiesOnly,
bool nonIndexedPropertiesOnly,
90 std::unique_ptr<protocol::Array<protocol::Runtime::PropertyDescriptor>>*
92 std::unique_ptr<protocol::Runtime::ExceptionDetails>*);
96 bool accessorPropertiesOnly,
98 protocol::Array<protocol::Runtime::InternalPropertyDescriptor>>*
101 protocol::Array<protocol::Runtime::PrivatePropertyDescriptor>>*
108 std::unique_ptr<protocol::Runtime::RemoteObject>*
result);
112 int maxCustomPreviewDepth,
113 std::unique_ptr<protocol::Runtime::RemoteObject>*
result);
118 std::unique_ptr<protocol::Runtime::RemoteObject>*
result);
119 std::unique_ptr<protocol::Runtime::RemoteObject>
wrapTable(
125 std::unique_ptr<WrapOptions> wrapOptions,
126 bool replMode,
bool throwOnSideEffect,
127 std::shared_ptr<EvaluateCallback>
callback);
138 std::unique_ptr<protocol::Runtime::ExceptionDetails>*
result);
142 std::unique_ptr<protocol::Runtime::ExceptionDetails>*
result);
147 bool throwOnSideEffect,
148 std::unique_ptr<protocol::Runtime::RemoteObject>*
result,
149 std::unique_ptr<protocol::Runtime::ExceptionDetails>*);
243 const String16& groupName, protocol::Runtime::RemoteObject* remoteObject);
250 protocol::Runtime::ExceptionDetails* exceptionDetails,
297 template <
typename... Args>
304 const protocol::DispatchResponse& response)
const;
307 std::map<Id, std::unique_ptr<InjectedScript::ProtocolPromiseHandler>>
virtual void sendFailure(const protocol::DispatchResponse &response)=0
virtual ~EvaluateCallback()=default
static void sendFailure(std::weak_ptr< EvaluateCallback > callback, InjectedScript *injectedScript, const protocol::DispatchResponse &response)
virtual void sendSuccess(std::unique_ptr< protocol::Runtime::RemoteObject > result, std::unique_ptr< protocol::Runtime::ExceptionDetails > exceptionDetails)=0
static void sendSuccess(std::weak_ptr< EvaluateCallback > callback, InjectedScript *injectedScript, std::unique_ptr< protocol::Runtime::RemoteObject > result, std::unique_ptr< protocol::Runtime::ExceptionDetails > exceptionDetails)
CallFrameScope(const CallFrameScope &)=delete
CallFrameScope & operator=(const CallFrameScope &)=delete
size_t frameOrdinal() const
Response findInjectedScript(V8InspectorSessionImpl *) override
String16 m_remoteCallFrameId
CallFrameScope(V8InspectorSessionImpl *, const String16 &remoteCallFrameId)
~CallFrameScope() override
ContextScope(const ContextScope &)=delete
Response findInjectedScript(V8InspectorSessionImpl *) override
ContextScope(V8InspectorSessionImpl *, int executionContextId)
ContextScope & operator=(const ContextScope &)=delete
v8::Local< v8::Value > object() const
ObjectScope(V8InspectorSessionImpl *, const String16 &remoteObjectId)
ObjectScope & operator=(const ObjectScope &)=delete
ObjectScope(const ObjectScope &)=delete
String16 m_remoteObjectId
String16 m_objectGroupName
const String16 & objectGroupName() const
Response findInjectedScript(V8InspectorSessionImpl *) override
v8::Local< v8::Value > m_object
v8::Local< v8::Context > m_context
v8::HandleScope m_handleScope
v8::Local< v8::Context > context() const
InjectedScript * injectedScript() const
const v8::TryCatch & tryCatch() const
std::unique_ptr< V8Console::CommandLineAPIScope > m_commandLineAPIScope
V8InspectorImpl * inspector() const
void pretendUserGesture()
v8::debug::ExceptionBreakState setPauseOnExceptionsState(v8::debug::ExceptionBreakState)
void ignoreExceptionsAndMuteConsole()
Scope(V8InspectorSessionImpl *)
v8::debug::ExceptionBreakState m_previousPauseOnExceptionsState
void installCommandLineAPI()
bool m_ignoreExceptionsAndMuteConsole
virtual Response findInjectedScript(V8InspectorSessionImpl *)=0
void allowCodeGenerationFromStrings()
V8InspectorImpl * m_inspector
void setTryCatchVerbose()
InjectedScript * m_injectedScript
InspectedContext * m_context
v8::Local< v8::Value > lastEvaluationResult() const
std::unordered_map< String16, std::vector< int > > m_nameToObjectGroup
Response wrapObject(v8::Local< v8::Value >, const String16 &groupName, const WrapOptions &wrapOptions, std::unique_ptr< protocol::Runtime::RemoteObject > *result)
Response getProperties(v8::Local< v8::Object >, const String16 &groupName, bool ownProperties, bool accessorPropertiesOnly, bool nonIndexedPropertiesOnly, const WrapOptions &wrapOptions, std::unique_ptr< protocol::Array< protocol::Runtime::PropertyDescriptor > > *result, std::unique_ptr< protocol::Runtime::ExceptionDetails > *)
static Response bindRemoteObjectIfNeeded(int sessionId, v8::Local< v8::Context > context, v8::Local< v8::Value >, const String16 &groupName, protocol::Runtime::RemoteObject *remoteObject)
void setLastEvaluationResult(v8::Local< v8::Value > result)
v8::Global< v8::Object > m_commandLineAPI
void setCustomObjectFormatterEnabled(bool)
void releaseObjectGroup(const String16 &)
Response resolveCallArgument(protocol::Runtime::CallArgument *, v8::Local< v8::Value > *result)
std::unordered_map< int, v8::Global< v8::Value > > m_idToWrappedObject
InjectedScript(InspectedContext *, int sessionId)
String16 bindObject(v8::Local< v8::Value >, const String16 &groupName)
InjectedScript(const InjectedScript &)=delete
InspectedContext * context() const
v8::Local< v8::Object > commandLineAPI()
void addPromiseCallback(V8InspectorSessionImpl *session, v8::MaybeLocal< v8::Value > value, const String16 &objectGroup, std::unique_ptr< WrapOptions > wrapOptions, bool replMode, bool throwOnSideEffect, std::shared_ptr< EvaluateCallback > callback)
Response wrapEvaluateResult(v8::MaybeLocal< v8::Value > maybeResultValue, const v8::TryCatch &, const String16 &objectGroup, const WrapOptions &wrapOptions, bool throwOnSideEffect, std::unique_ptr< protocol::Runtime::RemoteObject > *result, std::unique_ptr< protocol::Runtime::ExceptionDetails > *)
Response addExceptionToDetails(v8::Local< v8::Value > exception, protocol::Runtime::ExceptionDetails *exceptionDetails, const String16 &objectGroup)
Response getInternalAndPrivateProperties(v8::Local< v8::Value >, const String16 &groupName, bool accessorPropertiesOnly, std::unique_ptr< protocol::Array< protocol::Runtime::InternalPropertyDescriptor > > *internalProperties, std::unique_ptr< protocol::Array< protocol::Runtime::PrivatePropertyDescriptor > > *privateProperties)
void unbindObject(int id)
void releaseObject(const String16 &objectId)
Response wrapObjectMirror(const ValueMirror &mirror, const String16 &groupName, const WrapOptions &wrapOptions, v8::MaybeLocal< v8::Value > customPreviewConfig, int maxCustomPreviewDepth, std::unique_ptr< protocol::Runtime::RemoteObject > *result)
Response findObject(const RemoteObjectId &, v8::Local< v8::Value > *) const
v8::Global< v8::Value > m_lastEvaluationResult
Response createExceptionDetails(const v8::TryCatch &, const String16 &groupName, std::unique_ptr< protocol::Runtime::ExceptionDetails > *result)
InjectedScript & operator=(const InjectedScript &)=delete
std::unique_ptr< protocol::Runtime::RemoteObject > wrapTable(v8::Local< v8::Object > table, v8::MaybeLocal< v8::Array > columns)
String16 objectGroupName(const RemoteObjectId &) const
void discardEvaluateCallbacks()
bool m_customPreviewEnabled
std::unordered_set< std::shared_ptr< EvaluateCallback > > m_evaluateCallbacks
std::unordered_map< int, String16 > m_idToObjectGroupName
void deleteEvaluateCallback(std::shared_ptr< EvaluateCallback > callback)
InjectedScript::ProtocolPromiseHandler * get(Id id) const
void discard(Id id, DiscardReason reason)
PromiseHandlerTracker(const PromiseHandlerTracker &)=delete
Id create(Args &&... args)
std::map< Id, std::unique_ptr< InjectedScript::ProtocolPromiseHandler > > m_promiseHandlers
void sendFailure(InjectedScript::ProtocolPromiseHandler *handler, const protocol::DispatchResponse &response) const
void operator=(const PromiseHandlerTracker &)=delete
base::Vector< const DirectHandle< Object > > args
ZoneVector< RpoNumber > & result