I'd like runAsync to use XHR for the iframe linker, so that GWT applications can get timely notification if an async code download fails for any reason.
I've outlined all the code changes, but there is a remaining question about how the runAsync support should access XHR. Ten minutes of reading through RequestBuilder and related classes is very convincing that that's the code to use. It's a classic case where different browsers do a variety of weird and quirky things, and there are solutions to all the known quirks already implemented in those classes. The problem is that GWT.runAsync is in Core, RequestBuilder requires UserAgent, and Core is not supposed to require UserAgent. To solve this problem, how about we make a generic RequestBuilder that can be used in Core, and then add deferred bindings for the common case that UserAgent is included? It would be analogous to what we do for StringBuffer. After looking at the implementation, I believe the only thing sensitive to the user agent is the method doCreateXmlHTTPRequest(). The rest of the code is shared. If that's the case, wouldn't it be possible to define a generic doCreateXmlHTTPRequest that handles all browsers? It would look like the current IE implementation except with an additional catch block: @Override protected native JavaScriptObject doCreateXmlHTTPRequest() /*-{ if ($wnd.XMLHttpRequest) { return new XMLHttpRequest(); } else { try { return new ActiveXObject('MSXML2.XMLHTTP.3.0'); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { // new catch block return new XMLHttpRequest(); } } } }-*/; Assuming the above implementation is reliable, HTTPRequestImpl could use it as the implementation in the base class. We could add a new class HTTPRequestImplNonIE6 that has the simple "return new XMLHttpRequest" that works on all non-IE browsers. The modules would be changed as follows: Core would inherit HTTP, and thus get a functioning but suboptimal RequestBuilder HTTPRequest would change its default binding of HTTPRequestImpl to HTTPRequestImplNonIE6 Before I experiment further, does anyone spot anything to worry about? Lex --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---