summaryrefslogtreecommitdiff
path: root/deps/v8/src/inspector/inspected-context.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/inspector/inspected-context.cc')
-rw-r--r--deps/v8/src/inspector/inspected-context.cc32
1 files changed, 27 insertions, 5 deletions
diff --git a/deps/v8/src/inspector/inspected-context.cc b/deps/v8/src/inspector/inspected-context.cc
index bb98c87158..92f64c2cb9 100644
--- a/deps/v8/src/inspector/inspected-context.cc
+++ b/deps/v8/src/inspector/inspected-context.cc
@@ -109,18 +109,40 @@ InjectedScript* InspectedContext::getInjectedScript(int sessionId) {
return it == m_injectedScripts.end() ? nullptr : it->second.get();
}
-bool InspectedContext::createInjectedScript(int sessionId) {
+InjectedScript* InspectedContext::createInjectedScript(int sessionId) {
std::unique_ptr<InjectedScript> injectedScript =
- InjectedScript::create(this, sessionId);
- // InjectedScript::create can destroy |this|.
- if (!injectedScript) return false;
+ v8::base::make_unique<InjectedScript>(this, sessionId);
CHECK(m_injectedScripts.find(sessionId) == m_injectedScripts.end());
m_injectedScripts[sessionId] = std::move(injectedScript);
- return true;
+ return getInjectedScript(sessionId);
}
void InspectedContext::discardInjectedScript(int sessionId) {
m_injectedScripts.erase(sessionId);
}
+bool InspectedContext::addInternalObject(v8::Local<v8::Object> object,
+ V8InternalValueType type) {
+ if (m_internalObjects.IsEmpty()) {
+ m_internalObjects.Reset(isolate(), v8::debug::WeakMap::New(isolate()));
+ }
+ return !m_internalObjects.Get(isolate())
+ ->Set(m_context.Get(isolate()), object,
+ v8::Integer::New(isolate(), static_cast<int>(type)))
+ .IsEmpty();
+}
+
+V8InternalValueType InspectedContext::getInternalType(
+ v8::Local<v8::Object> object) {
+ if (m_internalObjects.IsEmpty()) return V8InternalValueType::kNone;
+ v8::Local<v8::Value> typeValue;
+ if (!m_internalObjects.Get(isolate())
+ ->Get(m_context.Get(isolate()), object)
+ .ToLocal(&typeValue) ||
+ !typeValue->IsUint32()) {
+ return V8InternalValueType::kNone;
+ }
+ return static_cast<V8InternalValueType>(typeValue.As<v8::Int32>()->Value());
+}
+
} // namespace v8_inspector