Dmitry Titov wrote:

I'd appreciate much your advice on the whole API and on the way to bring it
into WebKit.

I'm very interested in this, perhaps mainly as the first method available in the browser/JavaScript space to be able to create new contexts.


Here is an actual API:
---------------------------
Page-level API

var globalScript = new webkitGlobalScript(name, url, loadHandler,
errorHandler);

I've mentioned before that this API turns out to be very similiar to the serverJS notion of a "module".

        https://wiki.mozilla.org/ServerJS/Modules/SecurableModules

Differences are the name: require -> webkitGlobalScript; semantics about sharing across pages (not relevant to the serverJS work); the "exports" variable in the module which provides the reference to the globalScript return value the client sees; and that this is async vs. serverJS's sync model.

Of most interest is the notion of the "exports" variable. Instead of exposing the "global" scope of the global script itself as the return value, you actually have to assign something to the exports variable from within the global script for it to be available in the caller. The nice thing about this is that it provides a nice way to create private references within your global script.

It would probably be useful for folks to at least look at some of the work going on in the serverJS world - actually, just remembered they have changed their name to CommonJS. The narwhal work probably provides a good concrete example of what they're doing (it's been a few months since I looked at it in depth).

   http://github.com/tlrobinson/narwhal/tree/master

I'm not a big fan of stringing fairly arbitrary parameters together as the handlers seem to be in the webkitGlobalScript() function, especially since it's pretty simple to send extendable objects instead. Would prefer to see something like:

new webkitGlobalScript("foo", "foo.js", {
   loadHandler: function(something) {},
   errorHandler: function(something) {}
});

API exposed to Global Script (on its global scope object)
- Timers
- XHR
- Navigator
- localStorage
- Database
- Workers

Previously mentioned was a way to load an additional script from within the global script. Does the Workers API to do that handle this? That's a sync API, right? Is that what we want?

--
Patrick Mueller - http://muellerware.org

_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to