Index: content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java |
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java b/content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java |
index f3c099248f6c60bd7ad52245e1cc01e2488645fe..7194f8edb21d445b79fa15ceaa46224d39968faf 100644 |
--- a/content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java |
+++ b/content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java |
@@ -36,6 +36,7 @@ public class LoadUrlParams { |
byte[] mPostData; |
String mBaseUrlForDataUrl; |
String mVirtualUrlForDataUrl; |
+ String mDataUrlAsString; |
boolean mCanLoadLocalResources; |
boolean mIsRendererInitiated; |
boolean mShouldReplaceCurrentEntry; |
@@ -66,6 +67,7 @@ public class LoadUrlParams { |
mPostData = null; |
mBaseUrlForDataUrl = null; |
mVirtualUrlForDataUrl = null; |
+ mDataUrlAsString = null; |
} |
/** |
@@ -89,6 +91,15 @@ public class LoadUrlParams { |
*/ |
public static LoadUrlParams createLoadDataParams( |
String data, String mimeType, boolean isBase64Encoded, String charset) { |
+ LoadUrlParams params = new LoadUrlParams( |
+ buildDataUri(data, mimeType, isBase64Encoded, charset)); |
+ params.setLoadType(LoadURLType.DATA); |
+ params.setTransitionType(PageTransition.TYPED); |
+ return params; |
+ } |
+ |
+ private static String buildDataUri( |
+ String data, String mimeType, boolean isBase64Encoded, String charset) { |
StringBuilder dataUrl = new StringBuilder("data:"); |
dataUrl.append(mimeType); |
if (charset != null && !charset.isEmpty()) { |
@@ -99,11 +110,7 @@ public class LoadUrlParams { |
} |
dataUrl.append(","); |
dataUrl.append(data); |
- |
- LoadUrlParams params = new LoadUrlParams(dataUrl.toString()); |
- params.setLoadType(LoadURLType.DATA); |
- params.setTransitionType(PageTransition.TYPED); |
- return params; |
+ return dataUrl.toString(); |
} |
/** |
@@ -144,15 +151,19 @@ public class LoadUrlParams { |
public static LoadUrlParams createLoadDataParamsWithBaseUrl( |
String data, String mimeType, boolean isBase64Encoded, |
String baseUrl, String historyUrl, String charset) { |
- LoadUrlParams params = createLoadDataParams(data, mimeType, isBase64Encoded, charset); |
+ LoadUrlParams params; |
// For WebView compatibility, when the base URL has the 'data:' |
// scheme, we treat it as a regular data URL load and skip setting |
// baseUrl and historyUrl. |
// TODO(joth): we should just append baseURL and historyURL here, and move the |
// WebView specific transform up to a wrapper factory function in android_webview/. |
if (baseUrl == null || !baseUrl.toLowerCase(Locale.US).startsWith("data:")) { |
+ params = createLoadDataParams("", mimeType, isBase64Encoded, charset); |
params.setBaseUrlForDataUrl(baseUrl != null ? baseUrl : "about:blank"); |
params.setVirtualUrlForDataUrl(historyUrl != null ? historyUrl : "about:blank"); |
+ params.setDataUrlAsString(buildDataUri(data, mimeType, isBase64Encoded, charset)); |
+ } else { |
+ params = createLoadDataParams(data, mimeType, isBase64Encoded, charset); |
} |
return params; |
} |
@@ -361,6 +372,24 @@ public class LoadUrlParams { |
} |
/** |
+ * Get the data for data load. This is then passed to the renderer as |
+ * a string, not as a GURL object to circumvent GURL size restriction. |
+ * @return The data url. |
+ */ |
+ public String getDataUrlAsString() { |
+ return mDataUrlAsString; |
+ } |
+ |
+ /** |
+ * Set the data for data load. This is then passed to the renderer as |
+ * a string, not as a GURL object to circumvent GURL size restriction. |
+ * @param url The data url. |
+ */ |
+ public void setDataUrlAsString(String url) { |
+ mDataUrlAsString = url; |
+ } |
+ |
+ /** |
* Set whether the load should be able to access local resources. This |
* defaults to false. |
*/ |