OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 unsigned id = heapSnapshotObjectId.toUInt(&ok); | 278 unsigned id = heapSnapshotObjectId.toUInt(&ok); |
279 if (!ok) { | 279 if (!ok) { |
280 *error = "Invalid heap snapshot object id"; | 280 *error = "Invalid heap snapshot object id"; |
281 return; | 281 return; |
282 } | 282 } |
283 ScriptObject heapObject = ScriptProfiler::objectByHeapObjectId(id); | 283 ScriptObject heapObject = ScriptProfiler::objectByHeapObjectId(id); |
284 if (heapObject.isEmpty()) { | 284 if (heapObject.isEmpty()) { |
285 *error = "Object is not available"; | 285 *error = "Object is not available"; |
286 return; | 286 return; |
287 } | 287 } |
288 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(h
eapObject.scriptState()); | 288 InjectedScript& injectedScript = m_injectedScriptManager->injectedScriptFor(
heapObject.scriptState()); |
289 if (injectedScript.isEmpty()) { | 289 if (injectedScript.isEmpty()) { |
290 *error = "Object is not available. Inspected context is gone"; | 290 *error = "Object is not available. Inspected context is gone"; |
291 return; | 291 return; |
292 } | 292 } |
293 result = injectedScript.wrapObject(heapObject, objectGroup ? *objectGroup :
""); | 293 result = injectedScript.wrapObject(heapObject, objectGroup ? *objectGroup :
""); |
294 if (!result) | 294 if (!result) |
295 *error = "Failed to wrap object"; | 295 *error = "Failed to wrap object"; |
296 } | 296 } |
297 | 297 |
298 void InspectorHeapProfilerAgent::getHeapObjectId(ErrorString* errorString, const
String& objectId, String* heapSnapshotObjectId) | 298 void InspectorHeapProfilerAgent::getHeapObjectId(ErrorString* errorString, const
String& objectId, String* heapSnapshotObjectId) |
299 { | 299 { |
300 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb
jectId(objectId); | 300 InjectedScript& injectedScript = m_injectedScriptManager->injectedScriptForO
bjectId(objectId); |
301 if (injectedScript.isEmpty()) { | 301 if (injectedScript.isEmpty()) { |
302 *errorString = "Inspected context has gone"; | 302 *errorString = "Inspected context has gone"; |
303 return; | 303 return; |
304 } | 304 } |
305 ScriptValue value = injectedScript.findObjectById(objectId); | 305 if (!injectedScript.isJavaScript()) { |
| 306 *errorString = "The heap profiler does not yet work for Dart."; |
| 307 return; |
| 308 } |
| 309 |
| 310 V8InjectedScript& v8InjectedScript = static_cast<V8InjectedScript&>(injected
Script); |
| 311 |
| 312 ScriptValue value = v8InjectedScript.findObjectById(objectId); |
306 V8ScriptState::Scope scope(injectedScript.scriptState()->v8ScriptState()); | 313 V8ScriptState::Scope scope(injectedScript.scriptState()->v8ScriptState()); |
| 314 |
307 if (value.isEmpty() || value.isUndefined()) { | 315 if (value.isEmpty() || value.isUndefined()) { |
308 *errorString = "Object with given id not found"; | 316 *errorString = "Object with given id not found"; |
309 return; | 317 return; |
310 } | 318 } |
311 unsigned id = ScriptProfiler::getHeapObjectId(value); | 319 unsigned id = ScriptProfiler::getHeapObjectId(value); |
312 *heapSnapshotObjectId = String::number(id); | 320 *heapSnapshotObjectId = String::number(id); |
313 } | 321 } |
314 | 322 |
315 } // namespace WebCore | 323 } // namespace WebCore |
316 | 324 |
OLD | NEW |