diff options
author | 2022-06-22 23:21:48 -0700 | |
---|---|---|
committer | 2022-06-22 23:21:48 -0700 | |
commit | 729d445b6885f69dd2c6355f38707bd42851c791 (patch) | |
tree | f87a7c408929ea3f57bbb7ace380cf869da83c0e /src/bun.js/bindings/JSDOMGlobalObject.h | |
parent | 25f820c6bf1d8ec6d444ef579cc036b8c0607b75 (diff) | |
download | bun-jarred/rename.tar.gz bun-jarred/rename.tar.zst bun-jarred/rename.zip |
change the directory structurejarred/rename
Diffstat (limited to 'src/bun.js/bindings/JSDOMGlobalObject.h')
-rw-r--r-- | src/bun.js/bindings/JSDOMGlobalObject.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/bun.js/bindings/JSDOMGlobalObject.h b/src/bun.js/bindings/JSDOMGlobalObject.h new file mode 100644 index 000000000..b22700d7d --- /dev/null +++ b/src/bun.js/bindings/JSDOMGlobalObject.h @@ -0,0 +1,34 @@ +#pragma once + +#include "root.h" + +#include "DOMWrapperWorld.h" + +#include "JavaScriptCore/HeapInlines.h" +#include "JavaScriptCore/JSGlobalObject.h" +#include "JavaScriptCore/JSObjectInlines.h" +#include "JavaScriptCore/WeakGCMap.h" +#include "ScriptExecutionContext.h" + +namespace WebCore { + +Zig::GlobalObject* toJSDOMGlobalObject(ScriptExecutionContext& ctx, DOMWrapperWorld& world); +WEBCORE_EXPORT Zig::GlobalObject& callerGlobalObject(JSC::JSGlobalObject&, JSC::CallFrame*); +Zig::GlobalObject& legacyActiveGlobalObjectForAccessor(JSC::JSGlobalObject&, JSC::CallFrame*); + +template<class JSClass> +JSClass* toJSDOMGlobalObject(JSC::VM& vm, JSC::JSValue value) +{ + // static_assert(std::is_base_of_v<JSDOMGlobalObject, JSClass>); + + if (auto* object = value.getObject()) { + if (object->type() == JSC::PureForwardingProxyType) + return JSC::jsDynamicCast<JSClass*>(JSC::jsCast<JSC::JSProxy*>(object)->target()); + if (object->inherits<JSClass>()) + return JSC::jsCast<JSClass*>(object); + } + + return nullptr; +} + +}
\ No newline at end of file |