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

Unified Diff: android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java

Issue 986953002: Move implementation of load methods to chromium layer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: return Created 5 years, 9 months 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
« no previous file with comments | « no previous file | android_webview/java/src/org/chromium/android_webview/AwContents.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
index 79424ec12ab1fba5441e6f62eb569781043c7d72..f36742c6b2d3d6d43a13089f1abc6da5e64397fb 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
@@ -19,8 +19,6 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.print.PrintDocumentAdapter;
-import android.text.TextUtils;
-import android.util.Base64;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -50,12 +48,10 @@ import org.chromium.android_webview.AwPrintDocumentAdapter;
import org.chromium.android_webview.AwSettings;
import org.chromium.base.ThreadUtils;
import org.chromium.content.browser.SmartClipProvider;
-import org.chromium.content_public.browser.LoadUrlParams;
import java.io.BufferedWriter;
import java.io.File;
import java.lang.annotation.Annotation;
-import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.Callable;
@@ -506,117 +502,76 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
}
@Override
- public void loadUrl(final String url, Map<String, String> additionalHttpHeaders) {
- // TODO: We may actually want to do some sanity checks here (like filter about://chrome).
-
- // For backwards compatibility, apps targeting less than K will have JS URLs evaluated
- // directly and any result of the evaluation will not replace the current page content.
- // Matching Chrome behavior more closely; apps targetting >= K that load a JS URL will
- // have the result of that URL replace the content of the current page.
- final String javaScriptScheme = "javascript:";
- if (mAppTargetSdkVersion < Build.VERSION_CODES.KITKAT && url != null
- && url.startsWith(javaScriptScheme)) {
- mFactory.startYourEngines(true);
- if (checkNeedsPost()) {
- mRunQueue.addTask(new Runnable() {
- @Override
- public void run() {
- mAwContents.evaluateJavaScriptEvenIfNotYetNavigated(
- url.substring(javaScriptScheme.length()));
- }
- });
- } else {
- mAwContents.evaluateJavaScriptEvenIfNotYetNavigated(
- url.substring(javaScriptScheme.length()));
- }
+ public void loadUrl(final String url, final Map<String, String> additionalHttpHeaders) {
+ mFactory.startYourEngines(true);
+ if (checkNeedsPost()) {
+ // Disallowed in WebView API for apps targetting a new SDK
+ assert mAppTargetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR2;
+ mRunQueue.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mAwContents.loadUrl(url, additionalHttpHeaders);
+ }
+ });
return;
}
-
- LoadUrlParams params = new LoadUrlParams(url);
- if (additionalHttpHeaders != null) params.setExtraHeaders(additionalHttpHeaders);
- loadUrlOnUiThread(params);
+ mAwContents.loadUrl(url, additionalHttpHeaders);
}
@Override
- public void loadUrl(String url) {
- // Early out to match old WebView implementation
- if (url == null) {
+ public void loadUrl(final String url) {
+ mFactory.startYourEngines(true);
+ if (checkNeedsPost()) {
+ // Disallowed in WebView API for apps targetting a new SDK
+ assert mAppTargetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR2;
+ mRunQueue.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mAwContents.loadUrl(url);
+ }
+ });
return;
}
- loadUrl(url, null);
+ mAwContents.loadUrl(url);
}
@Override
- public void postUrl(String url, byte[] postData) {
- LoadUrlParams params = LoadUrlParams.createLoadHttpPostParams(url, postData);
- Map<String, String> headers = new HashMap<String, String>();
- headers.put("Content-Type", "application/x-www-form-urlencoded");
- params.setExtraHeaders(headers);
- loadUrlOnUiThread(params);
- }
-
- private static String fixupMimeType(String mimeType) {
- return TextUtils.isEmpty(mimeType) ? "text/html" : mimeType;
- }
-
- private static String fixupData(String data) {
- return TextUtils.isEmpty(data) ? "" : data;
- }
-
- private static String fixupBase(String url) {
- return TextUtils.isEmpty(url) ? "about:blank" : url;
- }
-
- private static String fixupHistory(String url) {
- return TextUtils.isEmpty(url) ? "about:blank" : url;
- }
-
- private static boolean isBase64Encoded(String encoding) {
- return "base64".equals(encoding);
- }
-
- @Override
- public void loadData(String data, String mimeType, String encoding) {
- loadUrlOnUiThread(LoadUrlParams.createLoadDataParams(
- fixupData(data), fixupMimeType(mimeType), isBase64Encoded(encoding)));
+ public void postUrl(final String url, final byte[] postData) {
+ mFactory.startYourEngines(true);
+ if (checkNeedsPost()) {
+ // Disallowed in WebView API for apps targetting a new SDK
+ assert mAppTargetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR2;
+ mRunQueue.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mAwContents.postUrl(url, postData);
+ }
+ });
+ return;
+ }
+ mAwContents.postUrl(url, postData);
}
@Override
- public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding,
- String historyUrl) {
- data = fixupData(data);
- mimeType = fixupMimeType(mimeType);
- LoadUrlParams loadUrlParams;
- baseUrl = fixupBase(baseUrl);
- historyUrl = fixupHistory(historyUrl);
-
- if (baseUrl.startsWith("data:")) {
- // For backwards compatibility with WebViewClassic, we use the value of |encoding|
- // as the charset, as long as it's not "base64".
- boolean isBase64 = isBase64Encoded(encoding);
- loadUrlParams = LoadUrlParams.createLoadDataParamsWithBaseUrl(
- data, mimeType, isBase64, baseUrl, historyUrl, isBase64 ? null : encoding);
- } else {
- // When loading data with a non-data: base URL, the classic WebView would effectively
- // "dump" that string of data into the WebView without going through regular URL
- // loading steps such as decoding URL-encoded entities. We achieve this same behavior by
- // base64 encoding the data that is passed here and then loading that as a data: URL.
- try {
- loadUrlParams = LoadUrlParams.createLoadDataParamsWithBaseUrl(
- Base64.encodeToString(data.getBytes("utf-8"), Base64.DEFAULT), mimeType,
- true, baseUrl, historyUrl, "utf-8");
- } catch (java.io.UnsupportedEncodingException e) {
- Log.wtf(TAG, "Unable to load data string " + data, e);
- return;
- }
+ public void loadData(final String data, final String mimeType, final String encoding) {
+ mFactory.startYourEngines(true);
+ if (checkNeedsPost()) {
+ // Disallowed in WebView API for apps targetting a new SDK
+ assert mAppTargetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR2;
+ mRunQueue.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mAwContents.loadData(data, mimeType, encoding);
+ }
+ });
+ return;
}
- loadUrlOnUiThread(loadUrlParams);
+ mAwContents.loadData(data, mimeType, encoding);
}
- private void loadUrlOnUiThread(final LoadUrlParams loadUrlParams) {
- // This is the last point that we can delay starting the Chromium backend up
- // and if the app has not caused us to bind the Chromium UI thread to a background thread
- // we now bind Chromium's notion of the UI thread to the app main thread.
+ @Override
+ public void loadDataWithBaseURL(final String baseUrl, final String data, final String mimeType,
+ final String encoding, final String historyUrl) {
mFactory.startYourEngines(true);
if (checkNeedsPost()) {
// Disallowed in WebView API for apps targetting a new SDK
@@ -624,12 +579,12 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
mRunQueue.addTask(new Runnable() {
@Override
public void run() {
- mAwContents.loadUrl(loadUrlParams);
+ mAwContents.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
}
});
return;
}
- mAwContents.loadUrl(loadUrlParams);
+ mAwContents.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
}
public void evaluateJavaScript(String script, ValueCallback<String> resultCallback) {
« no previous file with comments | « no previous file | android_webview/java/src/org/chromium/android_webview/AwContents.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698