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..696dbcdc5d8e033f1095aabbace511a4254ed5e9 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 |
@@ -29,6 +29,10 @@ public class LoadUrlParams { |
public static int UA_OVERRIDE_FALSE; |
public static int UA_OVERRIDE_TRUE; |
+ // The default character encoding for data URLs as defined in |
+ // RFC 2397. |
+ private static final String DATA_URL_DEFAULT_CHARSET = "US-ASCII"; |
+ |
// Fields with counterparts in NavigationController::LoadURLParams. |
// Package private so that ContentViewCore.loadUrl can pass them down to |
// native code. Should not be accessed directly anywhere else outside of |
@@ -57,15 +61,29 @@ public class LoadUrlParams { |
} |
/** |
+ * Helper method to create a LoadUrlParams object for data url. Defaults |
+ * to US-ASCII charset, as per RFC2397. |
+ * @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. |
+ */ |
+ public static LoadUrlParams createLoadDataParams( |
+ String data, String mimeType, boolean isBase64Encoded) { |
+ return createLoadDataParams(data, mimeType, isBase64Encoded, DATA_URL_DEFAULT_CHARSET); |
+ } |
+ |
+ /** |
* 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. |
*/ |
public static LoadUrlParams createLoadDataParams( |
- String data, String mimeType, boolean isBase64Encoded) { |
+ String data, String mimeType, boolean isBase64Encoded, String charset) { |
StringBuilder dataUrl = new StringBuilder("data:"); |
dataUrl.append(mimeType); |
+ dataUrl.append(";charset=" + charset); |
joth
2012/12/14 18:02:51
-AIUI the charset is spurious if the mimetype is n
benm (inactive)
2012/12/14 18:13:58
Good point. I think the charset is considered a pa
|
if (isBase64Encoded) { |
dataUrl.append(";base64"); |
} |
@@ -80,7 +98,7 @@ public class LoadUrlParams { |
/** |
* Helper method to create a LoadUrlParams object for data url with base |
- * and virtual url. |
+ * and virtual url. Defaults to US-ASCII charset, as per RFC2397. |
* @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. |
@@ -94,7 +112,28 @@ 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, DATA_URL_DEFAULT_CHARSET); |
+ } |
+ |
+ /** |
+ * 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. |
+ */ |
+ 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. |