#import <CSS/FontFaceSet.idl>
#import <DOM/EventTarget.idl>
#import <DOM/EventHandler.idl>
#import <HTML/WindowOrWorkerGlobalScope.idl>
#import <HTML/WorkerLocation.idl>
#import <HTML/WorkerNavigator.idl>
#import <HTML/MessagePort.idl>

// https://html.spec.whatwg.org/multipage/workers.html#workerglobalscope
[Exposed=Worker]
interface WorkerGlobalScope : EventTarget {
    readonly attribute WorkerGlobalScope self;
    readonly attribute WorkerLocation location;
    readonly attribute WorkerNavigator navigator;
    undefined importScripts(USVString... urls);

    attribute OnErrorEventHandler onerror;
    attribute EventHandler onlanguagechange;
    attribute EventHandler onoffline;
    attribute EventHandler ononline;
    attribute EventHandler onrejectionhandled;
    attribute EventHandler onunhandledrejection;

    // FIXME: IDL overload issue here
    // FIXME: undefined postMessage(any message, sequence<object> transfer);
    undefined postMessage(any message, optional StructuredSerializeOptions options = {});
    attribute EventHandler onmessage;
    attribute EventHandler onmessageerror;
};

WorkerGlobalScope includes WindowOrWorkerGlobalScope;
WorkerGlobalScope includes FontFaceSource;
