Web Inspector: support stable remote object ids
https://bugs.webkit.org/show_bug.cgi?id=109908
Reviewed by Pavel Feldman.
Source/WebCore:
Introduced a map from javascript object to its id. It guarantees
that object is assined id only once (unless it is explicitely
released). The map is per execution context and is stored in
InjectedScriptManager.
Test: inspector-protocol/persistent-id.html
* bindings/js/JSInjectedScriptHostCustom.cpp:
(WebCore::JSInjectedScriptHost::objectId):
(WebCore):
(WebCore::JSInjectedScriptHost::releaseObjectId):
* bindings/js/ScriptObject.h:
(WTF):
(WTF::ScriptObjectHash::hash):
(WTF::ScriptObjectHash::equal):
(ScriptObjectHash):
* bindings/v8/ScriptObject.h:
(WTF):
(WTF::ScriptObjectHash::hash):
(WTF::ScriptObjectHash::equal):
(ScriptObjectHash):
* bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
(WebCore::V8InjectedScriptHost::objectIdMethodCustom):
(WebCore):
(WebCore::V8InjectedScriptHost::releaseObjectIdMethodCustom):
* inspector/InjectedScriptHost.cpp:
(WebCore::InjectedScriptHost::create):
(WebCore::InjectedScriptHost::InjectedScriptHost):
(WebCore::InjectedScriptHost::disconnect):
(WebCore::InjectedScriptHost::objectId):
(WebCore):
(WebCore::InjectedScriptHost::releaseObjectId):
* inspector/InjectedScriptHost.h:
(WebCore):
(InjectedScriptHost):
* inspector/InjectedScriptHost.idl:
* inspector/InjectedScriptManager.cpp:
(InjectedScriptManager::ObjectIdMap):
(WebCore::InjectedScriptManager::ObjectIdMap::ObjectIdMap):
(WebCore::InjectedScriptManager::ObjectIdMap::objectId):
(WebCore::InjectedScriptManager::ObjectIdMap::releaseObjectId):
(WebCore):
(WebCore::InjectedScriptManager::InjectedScriptManager):
(WebCore::InjectedScriptManager::discardInjectedScripts):
(WebCore::InjectedScriptManager::discardInjectedScriptsFor):
(WebCore::InjectedScriptManager::objectId):
(WebCore::InjectedScriptManager::releaseObjectId):
* inspector/InjectedScriptManager.h:
(InjectedScriptManager):
* inspector/InjectedScriptSource.js:
(.):
LayoutTests:
Test that same object will have same id if requested several times.
* inspector-protocol/persistent-id-expected.txt: Added.
* inspector-protocol/persistent-id.html: Added.
* inspector/console/command-line-api-expected.txt:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144924 268f45cc-cd09-0410-ab3c-d52691b4dbfc
15 files changed