Index: content/public/android/java/src/org/chromium/content/browser/LoadUrlParams.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/LoadUrlParams.java b/content/public/android/java/src/org/chromium/content/browser/LoadUrlParams.java |
index 24d153f92ea367b27f42a1b6bdaa371c76a4380d..9819dd8410e254dfbb09458367963a979b6a4db8 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/LoadUrlParams.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/LoadUrlParams.java |
@@ -63,9 +63,25 @@ public class LoadUrlParams { |
* @param isBase64Encoded True if the data is encoded in Base 64 format. |
*/ |
public static LoadUrlParams createLoadDataParams( |
- String data, String mimeType, boolean isBase64Encoded) { |
+ String data, String mimeType, boolean isBase64Encoded) { |
+ return createLoadDataParams(data, mimeType, isBase64Encoded, null); |
+ } |
+ |
+ /** |
+ * Helper method to create a LoadUrlParams object for data url. |
+ * @param data Data to be loaded. |
+ * @param mimeType Mime type of the data. |
+ * @param isBase64Encoded True if the data is encoded in Base 64 format. |
+ * @param charset The character set for the data. Pass null if the mime type |
+ * does not require a special charset. |
+ */ |
+ public static LoadUrlParams createLoadDataParams( |
+ String data, String mimeType, boolean isBase64Encoded, String charset) { |
StringBuilder dataUrl = new StringBuilder("data:"); |
dataUrl.append(mimeType); |
+ if (charset != null && !charset.isEmpty()) { |
+ dataUrl.append(";charset=" + charset); |
+ } |
if (isBase64Encoded) { |
dataUrl.append(";base64"); |
} |
@@ -94,10 +110,34 @@ public class LoadUrlParams { |
public static LoadUrlParams createLoadDataParamsWithBaseUrl( |
String data, String mimeType, boolean isBase64Encoded, |
String baseUrl, String historyUrl) { |
- LoadUrlParams params = createLoadDataParams(data, mimeType, isBase64Encoded); |
+ return createLoadDataParamsWithBaseUrl(data, mimeType, isBase64Encoded, |
+ baseUrl, historyUrl, null); |
+ } |
+ |
+ /** |
+ * Helper method to create a LoadUrlParams object for data url with base |
+ * and virtual url. |
+ * @param data Data to be loaded. |
+ * @param mimeType Mime type of the data. |
+ * @param isBase64Encoded True if the data is encoded in Base 64 format. |
+ * @param baseUrl Base url of this data load. Note that for WebView compatibility, |
+ * baseUrl and historyUrl are ignored if this is a data: url. |
+ * Defaults to about:blank if null. |
+ * @param historyUrl History url for this data load. Note that for WebView compatibility, |
+ * this is ignored if baseUrl is a data: url. Defaults to about:blank |
+ * if null. |
+ * @param charset The character set for the data. Pass null if the mime type |
+ * does not require a special charset. |
+ */ |
+ public static LoadUrlParams createLoadDataParamsWithBaseUrl( |
+ String data, String mimeType, boolean isBase64Encoded, |
+ String baseUrl, String historyUrl, String charset) { |
+ LoadUrlParams params = createLoadDataParams(data, mimeType, isBase64Encoded, charset); |
// 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().startsWith("data:")) { |
params.setBaseUrlForDataUrl(baseUrl != null ? baseUrl : "about:blank"); |
params.setVirtualUrlForDataUrl(historyUrl != null ? historyUrl : "about:blank"); |