Prevent duplicate data from being emitted by MhtmlResourceContext.
Patch by: bobv
Review by: rjrjr
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6505 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/resources/rebind/context/MhtmlResourceContext.java b/user/src/com/google/gwt/resources/rebind/context/MhtmlResourceContext.java
index 2707ab7..285a993 100644
--- a/user/src/com/google/gwt/resources/rebind/context/MhtmlResourceContext.java
+++ b/user/src/com/google/gwt/resources/rebind/context/MhtmlResourceContext.java
@@ -19,9 +19,12 @@
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.typeinfo.JClassType;
+import com.google.gwt.dev.util.Util;
import java.io.OutputStream;
import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
/**
* Encodes resources into Multipart HTML files. In order to avoid mixed-content
@@ -42,6 +45,7 @@
private String bundleBaseIdent;
private int id = 0;
private String isHttpsIdent;
+ private final Map<String, String> strongNameToExpressions = new HashMap<String, String>();
/**
* Output is lazily initialized in the case that all deployed resources are
@@ -60,6 +64,12 @@
public String deploy(String suggestedFileName, String mimeType, byte[] data,
boolean xhrCompatible) throws UnableToCompleteException {
+ String strongName = Util.computeStrongName(data);
+ String toReturn = strongNameToExpressions.get(strongName);
+ if (toReturn != null) {
+ return toReturn;
+ }
+
assert partialPath != null : "partialPath";
assert isHttpsIdent != null : "isHttpsIdent";
assert bundleBaseIdent != null : "bundleBaseIdent";
@@ -103,8 +113,10 @@
*
* isHttps ? (staticLocation) : (bundleBaseIdent + "location")
*/
- return isHttpsIdent + " ? (" + staticLocation + ") : (" + bundleBaseIdent
- + " + \"" + location + "\")";
+ toReturn = isHttpsIdent + " ? (" + staticLocation + ") : ("
+ + bundleBaseIdent + " + \"" + location + "\")";
+ strongNameToExpressions.put(strongName, toReturn);
+ return toReturn;
}
public void finish() throws UnableToCompleteException {
@@ -114,11 +126,6 @@
}
}
- @Override
- public boolean supportsDataUrls() {
- return true;
- }
-
void setBundleBaseIdent(String ident) {
bundleBaseIdent = ident;
}