diff --git a/Userland/Libraries/LibWeb/HTML/WindowOrWorkerGlobalScope.idl b/Userland/Libraries/LibWeb/HTML/WindowOrWorkerGlobalScope.idl
new file mode 100644
index 0000000000..82e66c92bf
--- /dev/null
+++ b/Userland/Libraries/LibWeb/HTML/WindowOrWorkerGlobalScope.idl
@@ -0,0 +1,28 @@
+// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope
+interface mixin WindowOrWorkerGlobalScope {
+ [Replaceable] readonly attribute USVString origin;
+ readonly attribute boolean isSecureContext;
+ readonly attribute boolean crossOriginIsolated;
+
+ // FIXME: undefined reportError(any e);
+
+ // base64 utility methods
+ DOMString btoa(DOMString data);
+ ByteString atob(DOMString data);
+
+ // timers
+ // FIXME: long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments);
+ // FIXME: undefined clearTimeout(optional long id = 0);
+ // FIXME: long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments);
+ // FIXME: undefined clearInterval(optional long id = 0);
+
+ // microtask queuing
+ // FIXME: undefined queueMicrotask(VoidFunction callback);
+
+ // ImageBitmap
+ // FIXME: Promise createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options = {});
+ // FIXME: Promise createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {});
+
+ // structured cloning
+ // FIXME: any structuredClone(any value, optional StructuredSerializeOptions options = {});
+};
diff --git a/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.idl b/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.idl
index 136a48536f..a595badd04 100644
--- a/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.idl
+++ b/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.idl
@@ -1,8 +1,10 @@
#import
#import
+#import
#import
#import
+// https://html.spec.whatwg.org/multipage/workers.html#workerglobalscope
[Exposed=Worker]
interface WorkerGlobalScope : EventTarget {
readonly attribute WorkerGlobalScope self;
@@ -16,13 +18,6 @@ interface WorkerGlobalScope : EventTarget {
attribute EventHandler ononline;
attribute EventHandler onrejectionhandled;
attribute EventHandler onunhandledrejection;
-
- // FIXME: These should all come from a WindowOrWorkerGlobalScope mixin
- [Replaceable] readonly attribute USVString origin;
- readonly attribute boolean isSecureContext;
- readonly attribute boolean crossOriginIsolated;
-
- // base64 utility methods
- DOMString btoa(DOMString data);
- ByteString atob(DOMString data);
};
+
+WorkerGlobalScope includes WindowOrWorkerGlobalScope;