diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/inspector/InjectedScriptHost.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/inspector/InjectedScriptHost.cpp')
-rw-r--r-- | Source/JavaScriptCore/inspector/InjectedScriptHost.cpp | 46 |
1 files changed, 11 insertions, 35 deletions
diff --git a/Source/JavaScriptCore/inspector/InjectedScriptHost.cpp b/Source/JavaScriptCore/inspector/InjectedScriptHost.cpp index 46b3c4e37..433174ff9 100644 --- a/Source/JavaScriptCore/inspector/InjectedScriptHost.cpp +++ b/Source/JavaScriptCore/inspector/InjectedScriptHost.cpp @@ -26,8 +26,7 @@ #include "config.h" #include "InjectedScriptHost.h" -#if ENABLE(INSPECTOR) - +#include "JSCInlines.h" #include "JSInjectedScriptHost.h" using namespace JSC; @@ -38,46 +37,23 @@ InjectedScriptHost::~InjectedScriptHost() { } -JSValue InjectedScriptHost::jsWrapper(ExecState* exec, JSGlobalObject* globalObject) +JSValue InjectedScriptHost::wrapper(ExecState* exec, JSGlobalObject* globalObject) { - auto key = std::make_pair(exec, globalObject); - auto it = m_wrappers.find(key); - if (it != m_wrappers.end()) - return it->value.get(); - - JSValue jsValue = toJS(exec, globalObject, this); - if (!jsValue.isObject()) - return jsValue; - - JSObject* jsObject = jsValue.toObject(exec, globalObject); - Strong<JSObject> wrapper(exec->vm(), jsObject); - m_wrappers.add(key, wrapper); - - return jsValue; -} + JSValue value = m_wrappers.getWrapper(globalObject); + if (value) + return value; -static void clearWrapperFromValue(JSValue value) -{ - JSInjectedScriptHost* jsInjectedScriptHost = toJSInjectedScriptHost(value); - ASSERT(jsInjectedScriptHost); - if (jsInjectedScriptHost) - jsInjectedScriptHost->releaseImpl(); -} + JSObject* prototype = JSInjectedScriptHost::createPrototype(exec->vm(), globalObject); + Structure* structure = JSInjectedScriptHost::createStructure(exec->vm(), globalObject, prototype); + JSInjectedScriptHost* injectedScriptHost = JSInjectedScriptHost::create(exec->vm(), structure, makeRef(*this)); + m_wrappers.addWrapper(globalObject, injectedScriptHost); -void InjectedScriptHost::clearWrapper(ExecState* exec, JSGlobalObject* globalObject) -{ - auto key = std::make_pair(exec, globalObject); - clearWrapperFromValue(m_wrappers.take(key).get()); + return injectedScriptHost; } void InjectedScriptHost::clearAllWrappers() { - for (auto wrapper : m_wrappers) - clearWrapperFromValue(wrapper.value.get()); - - m_wrappers.clear(); + m_wrappers.clearAllWrappers(); } } // namespace Inspector - -#endif // ENABLE(INSPECTOR) |