[whatwg] Workers feedback

So the API I'm proposing is the following:

[NoInterfaceObject] interface WorkerFactory {
    Worker createWorker(in DOMString scriptURL);
    Worker createSharedWorker(in DOMString name, in DOMString scriptURL);
};


interface Worker {
    boolean postMessage(in DOMString message);
    boolean postMessage(in DOMString message,
                        in MessagePort messagePort);

    // event handler attributes
             attribute EventListener onmessage;
             attribute EventListener onload;
             attribute EventListener onerror;
             attribute EventListener onunload;
};

interface WorkerParent {
    boolean postMessage(in DOMString message);
    boolean postMessage(in DOMString message,
                        in MessagePort messagePort);
};

[NoInterfaceObject] interface WorkerGlobalScope {
    // core worker features
    readonly attribute WorkerGlobalScope self;
    readonly attribute WorkerLocation location;
    readonly attribute DOMString name;
    readonly attribute boolean closing;
    readonly attribute WorkerParent parent;
    void close();

    // event handler attributes
             attribute EventListener onunload;
};

(We might want to add an onconnect property to WorkerGlobalScope, but it
doesn't seem strictly needed)

I think that it has the following advantages over the current draft spec:

* We don't expose users to MessagePort objects in the majority of
   scenarios.
* There is no permanent .port properties anywhere that would go dead if
   the port is passed somewhere.
* There is no need for pseudo properties anywhere (the port variable
   inside the WorkerGlobalScript)
* The current draft duplicates the onunload property on both the
   worker and its port. Not sure if this is needed or just a bug.
* All onX objects live on the same object rather than some living
   on the worker, some living on worker.port.

I'd be interested to hear what others think of this proposal.

/ Jonas

Received on Friday, 8 August 2008 10:10:52 UTC