Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1953)

Unified Diff: content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java

Issue 1497743005: Allow huge data: URIs only via WebView.loadDataWithBaseUrl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed the test Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
*/

Powered by Google App Engine
This is Rietveld 408576698