summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/inspector/InjectedScriptHost.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/inspector/InjectedScriptHost.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/inspector/InjectedScriptHost.cpp')
-rw-r--r--Source/JavaScriptCore/inspector/InjectedScriptHost.cpp46
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)