aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/JSDOMGlobalObject.h
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-22 23:21:48 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-22 23:21:48 -0700
commit729d445b6885f69dd2c6355f38707bd42851c791 (patch)
treef87a7c408929ea3f57bbb7ace380cf869da83c0e /src/bun.js/bindings/JSDOMGlobalObject.h
parent25f820c6bf1d8ec6d444ef579cc036b8c0607b75 (diff)
downloadbun-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.h34
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