diff options
Diffstat (limited to 'src/inspector/inspected-context.cc')
-rw-r--r-- | src/inspector/inspected-context.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/inspector/inspected-context.cc b/src/inspector/inspected-context.cc index dab3bba0..6d9f51ed 100644 --- a/src/inspector/inspected-context.cc +++ b/src/inspector/inspected-context.cc @@ -41,10 +41,12 @@ InspectedContext::InspectedContext(V8InspectorImpl* inspector, m_humanReadableName(toString16(info.humanReadableName)), m_auxData(toString16(info.auxData)), m_reported(false) { + v8::Isolate* isolate = m_inspector->isolate(); + info.context->SetEmbedderData(static_cast<int>(v8::Context::kDebugIdIndex), + v8::Int32::New(isolate, contextId)); m_context.SetWeak(&m_context, &clearContext, v8::WeakCallbackType::kParameter); - v8::Isolate* isolate = m_inspector->isolate(); v8::Local<v8::Object> global = info.context->Global(); v8::Local<v8::Object> console = V8Console::createConsole(this, info.hasMemoryOnConsole); @@ -65,6 +67,14 @@ InspectedContext::~InspectedContext() { } } +// static +int InspectedContext::contextId(v8::Local<v8::Context> context) { + v8::Local<v8::Value> data = + context->GetEmbedderData(static_cast<int>(v8::Context::kDebugIdIndex)); + if (data.IsEmpty() || !data->IsInt32()) return 0; + return static_cast<int>(data.As<v8::Int32>()->Value()); +} + v8::Local<v8::Context> InspectedContext::context() const { return m_context.Get(isolate()); } |