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

Reply via email to