Revision: 8786
Author: sp...@google.com
Date: Wed Sep 15 07:44:00 2010
Log: The cross-site iframe linker now loads deferred JS code via script
tags holding
the code directly. It no longer has the code in a string literal that gets
passed
around through several layers of code before being evaluated.
Review by: unn...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=8786
Modified:
/trunk/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
/trunk/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeTemplate.js
/trunk/user/src/com/google/gwt/core/client/impl/CrossSiteIframeLoadingStrategy.java
=======================================
---
/trunk/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
Wed Aug 25 12:59:47 2010
+++
/trunk/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
Wed Sep 15 07:44:00 2010
@@ -42,20 +42,6 @@
public String getDescription() {
return "Cross-Site-Iframe";
}
-
- @Override
- protected String generateDeferredFragment(TreeLogger logger,
- LinkerContext context, int fragment, String js) {
- StringBuilder sb = new StringBuilder();
- sb.append("$wnd.");
- sb.append(context.getModuleFunctionName());
- sb.append(".runAsyncCallback");
- sb.append(fragment);
- sb.append("(");
- sb.append(JsToStringGenerationVisitor.javaScriptString(js));
- sb.append(");\n");
- return sb.toString();
- }
@Override
protected byte[] generatePrimaryFragment(TreeLogger logger,
=======================================
---
/trunk/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeTemplate.js
Tue Sep 7 09:26:43 2010
+++
/trunk/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeTemplate.js
Wed Sep 15 07:44:00 2010
@@ -236,10 +236,6 @@
type: 'end',
});
}
-
- // Install code pulled in via runAsync
- //
- __MODULE_FUNC__.installCode = installCode;
// --------------- STRAIGHT-LINE CODE ---------------
=======================================
---
/trunk/user/src/com/google/gwt/core/client/impl/CrossSiteIframeLoadingStrategy.java
Wed Aug 25 12:59:47 2010
+++
/trunk/user/src/com/google/gwt/core/client/impl/CrossSiteIframeLoadingStrategy.java
Wed Sep 15 07:44:00 2010
@@ -113,18 +113,7 @@
}
}-*/;
- private static native JavaScriptObject removeTagAndEvalCode(int fragment,
- JavaScriptObject tag) /*-{
- return function(code) {
- var head = document.getElementsByTagName('head').item(0);
-
@com.google.gwt.core.client.impl.CrossSiteIframeLoadingStrategy::clearOnSuccess(*)(fragment);
-
@com.google.gwt.core.client.impl.CrossSiteIframeLoadingStrategy::clearCallbacks(*)(tag);
- head.removeChild(tag);
- __gwtModuleFunction.installCode(code, false);
- }
- }-*/;
-
- private static native void setOnFailure(JavaScriptObject script,
+ private static native void setOnTerminated(JavaScriptObject script,
JavaScriptObject callback) /*-{
var exception =
@com.google.gwt.core.client.impl.CrossSiteIframeLoadingStrategy::LoadTerminated;
script.onerror = function() {
@@ -141,21 +130,12 @@
}
}-*/;
- /**
- * Set the success callback for fragment <code>fragment</code>
- * to the supplied JavaScript function.
- */
- private static native void setOnSuccess(int fragment, JavaScriptObject
callback) /*-{
- __gwtModuleFunction['runAsyncCallback'+fragment] = callback;
- }-*/;
-
private final IntToIntMap serialNumbers = IntToIntMap.create();
public void startLoadingFragment(int fragment,
LoadTerminatedHandler loadFinishedHandler) {
JavaScriptObject tag = createScriptTag(getUrl(fragment));
- setOnSuccess(fragment, removeTagAndEvalCode(fragment, tag));
- setOnFailure(tag, removeTagAndCallErrorHandler(fragment, tag,
+ setOnTerminated(tag, removeTagAndCallErrorHandler(fragment, tag,
loadFinishedHandler));
installScriptTag(tag);
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors