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

Side by Side Diff: content/public/android/java/src/org/chromium/content/browser/LoadUrlParams.java

Issue 11571008: [Android] Add API for specifying a charset for data Urls. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.content.browser; 5 package org.chromium.content.browser;
6 6
7 import org.chromium.base.CalledByNative; 7 import org.chromium.base.CalledByNative;
8 import org.chromium.base.JNINamespace; 8 import org.chromium.base.JNINamespace;
9 9
10 import java.util.Map; 10 import java.util.Map;
(...skipping 11 matching lines...) Expand all
22 public static int LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; 22 public static int LOAD_TYPE_BROWSER_INITIATED_HTTP_POST;
23 public static int LOAD_TYPE_DATA; 23 public static int LOAD_TYPE_DATA;
24 24
25 // Should match NavigationController::UserAgentOverrideOption exactly. 25 // Should match NavigationController::UserAgentOverrideOption exactly.
26 // See comments there for proper usage. Values are initialized in 26 // See comments there for proper usage. Values are initialized in
27 // initializeConstants. 27 // initializeConstants.
28 public static int UA_OVERRIDE_INHERIT; 28 public static int UA_OVERRIDE_INHERIT;
29 public static int UA_OVERRIDE_FALSE; 29 public static int UA_OVERRIDE_FALSE;
30 public static int UA_OVERRIDE_TRUE; 30 public static int UA_OVERRIDE_TRUE;
31 31
32 // The default character encoding for data URLs as defined in
33 // RFC 2397.
34 private static final String DATA_URL_DEFAULT_CHARSET = "US-ASCII";
35
32 // Fields with counterparts in NavigationController::LoadURLParams. 36 // Fields with counterparts in NavigationController::LoadURLParams.
33 // Package private so that ContentViewCore.loadUrl can pass them down to 37 // Package private so that ContentViewCore.loadUrl can pass them down to
34 // native code. Should not be accessed directly anywhere else outside of 38 // native code. Should not be accessed directly anywhere else outside of
35 // this class. 39 // this class.
36 final String mUrl; 40 final String mUrl;
37 int mLoadUrlType; 41 int mLoadUrlType;
38 int mTransitionType; 42 int mTransitionType;
39 int mUaOverrideOption; 43 int mUaOverrideOption;
40 private Map<String, String> mExtraHeaders; 44 private Map<String, String> mExtraHeaders;
41 byte[] mPostData; 45 byte[] mPostData;
42 String mBaseUrlForDataUrl; 46 String mBaseUrlForDataUrl;
43 String mVirtualUrlForDataUrl; 47 String mVirtualUrlForDataUrl;
44 boolean mCanLoadLocalResources; 48 boolean mCanLoadLocalResources;
45 49
46 public LoadUrlParams(String url) { 50 public LoadUrlParams(String url) {
47 // Check initializeConstants was called. 51 // Check initializeConstants was called.
48 assert LOAD_TYPE_DEFAULT != LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; 52 assert LOAD_TYPE_DEFAULT != LOAD_TYPE_BROWSER_INITIATED_HTTP_POST;
49 53
50 mUrl = url; 54 mUrl = url;
51 mLoadUrlType = LOAD_TYPE_DEFAULT; 55 mLoadUrlType = LOAD_TYPE_DEFAULT;
52 mTransitionType = ContentViewCore.PAGE_TRANSITION_LINK; 56 mTransitionType = ContentViewCore.PAGE_TRANSITION_LINK;
53 mUaOverrideOption = UA_OVERRIDE_INHERIT; 57 mUaOverrideOption = UA_OVERRIDE_INHERIT;
54 mPostData = null; 58 mPostData = null;
55 mBaseUrlForDataUrl = null; 59 mBaseUrlForDataUrl = null;
56 mVirtualUrlForDataUrl = null; 60 mVirtualUrlForDataUrl = null;
57 } 61 }
58 62
59 /** 63 /**
64 * Helper method to create a LoadUrlParams object for data url. Defaults
65 * to US-ASCII charset, as per RFC2397.
66 * @param data Data to be loaded.
67 * @param mimeType Mime type of the data.
68 * @param isBase64Encoded True if the data is encoded in Base 64 format.
69 */
70 public static LoadUrlParams createLoadDataParams(
71 String data, String mimeType, boolean isBase64Encoded) {
72 return createLoadDataParams(data, mimeType, isBase64Encoded, DATA_URL_DE FAULT_CHARSET);
73 }
74
75 /**
60 * Helper method to create a LoadUrlParams object for data url. 76 * Helper method to create a LoadUrlParams object for data url.
61 * @param data Data to be loaded. 77 * @param data Data to be loaded.
62 * @param mimeType Mime type of the data. 78 * @param mimeType Mime type of the data.
63 * @param isBase64Encoded True if the data is encoded in Base 64 format. 79 * @param isBase64Encoded True if the data is encoded in Base 64 format.
80 * @param charset The character set for the data.
64 */ 81 */
65 public static LoadUrlParams createLoadDataParams( 82 public static LoadUrlParams createLoadDataParams(
66 String data, String mimeType, boolean isBase64Encoded) { 83 String data, String mimeType, boolean isBase64Encoded, String charse t) {
67 StringBuilder dataUrl = new StringBuilder("data:"); 84 StringBuilder dataUrl = new StringBuilder("data:");
68 dataUrl.append(mimeType); 85 dataUrl.append(mimeType);
86 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
69 if (isBase64Encoded) { 87 if (isBase64Encoded) {
70 dataUrl.append(";base64"); 88 dataUrl.append(";base64");
71 } 89 }
72 dataUrl.append(","); 90 dataUrl.append(",");
73 dataUrl.append(data); 91 dataUrl.append(data);
74 92
75 LoadUrlParams params = new LoadUrlParams(dataUrl.toString()); 93 LoadUrlParams params = new LoadUrlParams(dataUrl.toString());
76 params.setLoadType(LoadUrlParams.LOAD_TYPE_DATA); 94 params.setLoadType(LoadUrlParams.LOAD_TYPE_DATA);
77 params.setTransitionType(ContentViewCore.PAGE_TRANSITION_TYPED); 95 params.setTransitionType(ContentViewCore.PAGE_TRANSITION_TYPED);
78 return params; 96 return params;
79 } 97 }
80 98
81 /** 99 /**
82 * Helper method to create a LoadUrlParams object for data url with base 100 * Helper method to create a LoadUrlParams object for data url with base
83 * and virtual url. 101 * and virtual url. Defaults to US-ASCII charset, as per RFC2397.
84 * @param data Data to be loaded. 102 * @param data Data to be loaded.
85 * @param mimeType Mime type of the data. 103 * @param mimeType Mime type of the data.
86 * @param isBase64Encoded True if the data is encoded in Base 64 format. 104 * @param isBase64Encoded True if the data is encoded in Base 64 format.
87 * @param baseUrl Base url of this data load. Note that for WebView compatib ility, 105 * @param baseUrl Base url of this data load. Note that for WebView compatib ility,
88 * baseUrl and historyUrl are ignored if this is a data: url. 106 * baseUrl and historyUrl are ignored if this is a data: url.
89 * Defaults to about:blank if null. 107 * Defaults to about:blank if null.
90 * @param historyUrl History url for this data load. Note that for WebView c ompatibility, 108 * @param historyUrl History url for this data load. Note that for WebView c ompatibility,
91 * this is ignored if baseUrl is a data: url. Defaults to about:blank 109 * this is ignored if baseUrl is a data: url. Defaults to about:blank
92 * if null. 110 * if null.
93 */ 111 */
94 public static LoadUrlParams createLoadDataParamsWithBaseUrl( 112 public static LoadUrlParams createLoadDataParamsWithBaseUrl(
95 String data, String mimeType, boolean isBase64Encoded, 113 String data, String mimeType, boolean isBase64Encoded,
96 String baseUrl, String historyUrl) { 114 String baseUrl, String historyUrl) {
97 LoadUrlParams params = createLoadDataParams(data, mimeType, isBase64Enco ded); 115 return createLoadDataParamsWithBaseUrl(data, mimeType, isBase64Encoded,
116 baseUrl, historyUrl, DATA_URL_DEFAULT_CHARSET);
117 }
118
119 /**
120 * Helper method to create a LoadUrlParams object for data url with base
121 * and virtual url.
122 * @param data Data to be loaded.
123 * @param mimeType Mime type of the data.
124 * @param isBase64Encoded True if the data is encoded in Base 64 format.
125 * @param baseUrl Base url of this data load. Note that for WebView compatib ility,
126 * baseUrl and historyUrl are ignored if this is a data: url.
127 * Defaults to about:blank if null.
128 * @param historyUrl History url for this data load. Note that for WebView c ompatibility,
129 * this is ignored if baseUrl is a data: url. Defaults to about:blank
130 * if null.
131 * @param charset The character set for the data.
132 */
133 public static LoadUrlParams createLoadDataParamsWithBaseUrl(
134 String data, String mimeType, boolean isBase64Encoded,
135 String baseUrl, String historyUrl, String charset) {
136 LoadUrlParams params = createLoadDataParams(data, mimeType, isBase64Enco ded, charset);
98 // For WebView compatibility, when the base URL has the 'data:' 137 // For WebView compatibility, when the base URL has the 'data:'
99 // scheme, we treat it as a regular data URL load and skip setting 138 // scheme, we treat it as a regular data URL load and skip setting
100 // baseUrl and historyUrl. 139 // baseUrl and historyUrl.
101 if (baseUrl == null || !baseUrl.toLowerCase().startsWith("data:")) { 140 if (baseUrl == null || !baseUrl.toLowerCase().startsWith("data:")) {
102 params.setBaseUrlForDataUrl(baseUrl != null ? baseUrl : "about:blank "); 141 params.setBaseUrlForDataUrl(baseUrl != null ? baseUrl : "about:blank ");
103 params.setVirtualUrlForDataUrl(historyUrl != null ? historyUrl : "ab out:blank"); 142 params.setVirtualUrlForDataUrl(historyUrl != null ? historyUrl : "ab out:blank");
104 } 143 }
105 return params; 144 return params;
106 } 145 }
107 146
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 UA_OVERRIDE_FALSE = ua_override_false; 291 UA_OVERRIDE_FALSE = ua_override_false;
253 UA_OVERRIDE_TRUE = ua_override_true; 292 UA_OVERRIDE_TRUE = ua_override_true;
254 } 293 }
255 294
256 /** 295 /**
257 * Parses |url| as a GURL on the native side, and 296 * Parses |url| as a GURL on the native side, and
258 * returns true if it's scheme is data:. 297 * returns true if it's scheme is data:.
259 */ 298 */
260 private static native boolean nativeIsDataScheme(String url); 299 private static native boolean nativeIsDataScheme(String url);
261 } 300 }
OLDNEW
« no previous file with comments | « android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698