Index: Source/core/inspector/InspectorHeapProfilerAgent.cpp |
diff --git a/Source/core/inspector/InspectorHeapProfilerAgent.cpp b/Source/core/inspector/InspectorHeapProfilerAgent.cpp |
index 117f0f5752edba9fd229cf1bc7027c53e1aea8fb..05bfdbf02875203ae6fbf9189fce4124994bf1c8 100644 |
--- a/Source/core/inspector/InspectorHeapProfilerAgent.cpp |
+++ b/Source/core/inspector/InspectorHeapProfilerAgent.cpp |
@@ -285,7 +285,7 @@ void InspectorHeapProfilerAgent::getObjectByHeapObjectId(ErrorString* error, con |
*error = "Object is not available"; |
return; |
} |
- InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(heapObject.scriptState()); |
+ InjectedScript& injectedScript = m_injectedScriptManager->injectedScriptFor(heapObject.scriptState()); |
if (injectedScript.isEmpty()) { |
*error = "Object is not available. Inspected context is gone"; |
return; |
@@ -297,13 +297,21 @@ void InspectorHeapProfilerAgent::getObjectByHeapObjectId(ErrorString* error, con |
void InspectorHeapProfilerAgent::getHeapObjectId(ErrorString* errorString, const String& objectId, String* heapSnapshotObjectId) |
{ |
- InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); |
+ InjectedScript& injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); |
if (injectedScript.isEmpty()) { |
*errorString = "Inspected context has gone"; |
return; |
} |
- ScriptValue value = injectedScript.findObjectById(objectId); |
+ if (!injectedScript.isJavaScript()) { |
+ *errorString = "The heap profiler does not yet work for Dart."; |
+ return; |
+ } |
+ |
+ V8InjectedScript& v8InjectedScript = static_cast<V8InjectedScript&>(injectedScript); |
+ |
+ ScriptValue value = v8InjectedScript.findObjectById(objectId); |
V8ScriptState::Scope scope(injectedScript.scriptState()->v8ScriptState()); |
+ |
if (value.isEmpty() || value.isUndefined()) { |
*errorString = "Object with given id not found"; |
return; |