- From: Jonas Sicking <jonas@sicking.cc>
- Date: Fri, 08 Aug 2008 10:10:52 -0700
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