287 lines
15 KiB
Diff
287 lines
15 KiB
Diff
|
From: uazo <uazo@users.noreply.github.com>
|
||
|
Date: Sat, 15 Apr 2023 11:46:48 +0000
|
||
|
Subject: Remove ChromiumNetworkAdapter
|
||
|
|
||
|
Removes from java code the ability to make http connections
|
||
|
without asking the native code
|
||
|
|
||
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||
|
---
|
||
|
.../browser/download/OMADownloadHandler.java | 38 -------------
|
||
|
.../browser/feedback/ConnectivityChecker.java | 37 +------------
|
||
|
.../ConnectivityDetector.java | 54 -------------------
|
||
|
.../chrome/browser/omaha/OmahaBase.java | 3 +-
|
||
|
.../util/HttpURLConnectionFactoryImpl.java | 7 +--
|
||
|
.../firstrun/VariationsSeedFetcher.java | 26 +--------
|
||
|
.../chromium/net/ChromiumNetworkAdapter.java | 12 -----
|
||
|
7 files changed, 4 insertions(+), 173 deletions(-)
|
||
|
|
||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java
|
||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java
|
||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java
|
||
|
@@ -968,44 +968,6 @@ public class OMADownloadHandler extends BroadcastReceiver {
|
||
|
protected Boolean doInBackground() {
|
||
|
HttpURLConnection urlConnection = null;
|
||
|
boolean success = false;
|
||
|
- try {
|
||
|
- URL url = new URL(mOMAInfo.getValue(OMA_INSTALL_NOTIFY_URI));
|
||
|
- urlConnection = (HttpURLConnection) ChromiumNetworkAdapter.openConnection(
|
||
|
- url, TRAFFIC_ANNOTATION);
|
||
|
- urlConnection.setDoOutput(true);
|
||
|
- urlConnection.setUseCaches(false);
|
||
|
- urlConnection.setRequestMethod("POST");
|
||
|
- String userAgent = mDownloadInfo.getUserAgent();
|
||
|
- if (TextUtils.isEmpty(userAgent)) {
|
||
|
- userAgent = ContentUtils.getBrowserUserAgent();
|
||
|
- }
|
||
|
- urlConnection.setRequestProperty("User-Agent", userAgent);
|
||
|
- urlConnection.setRequestProperty("cookie", mDownloadInfo.getCookie());
|
||
|
-
|
||
|
- DataOutputStream dos = new DataOutputStream(urlConnection.getOutputStream());
|
||
|
- try {
|
||
|
- dos.writeBytes(mStatusMessage);
|
||
|
- dos.flush();
|
||
|
- } catch (IOException e) {
|
||
|
- Log.w(TAG, "Cannot write status message.", e);
|
||
|
- } finally {
|
||
|
- dos.close();
|
||
|
- }
|
||
|
- int responseCode = urlConnection.getResponseCode();
|
||
|
- if (responseCode == HttpURLConnection.HTTP_OK || responseCode == -1) {
|
||
|
- success = true;
|
||
|
- } else {
|
||
|
- success = false;
|
||
|
- }
|
||
|
- } catch (MalformedURLException e) {
|
||
|
- Log.w(TAG, "Invalid notification URL.", e);
|
||
|
- } catch (IOException e) {
|
||
|
- Log.w(TAG, "Cannot connect to server.", e);
|
||
|
- } catch (IllegalStateException e) {
|
||
|
- Log.w(TAG, "Cannot connect to server.", e);
|
||
|
- } finally {
|
||
|
- if (urlConnection != null) urlConnection.disconnect();
|
||
|
- }
|
||
|
|
||
|
if (success) {
|
||
|
String path = mDownloadInfo.getFilePath();
|
||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityChecker.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityChecker.java
|
||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityChecker.java
|
||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityChecker.java
|
||
|
@@ -136,42 +136,7 @@ public final class ConnectivityChecker {
|
||
|
postResult(callback, ConnectivityCheckResult.ERROR);
|
||
|
return;
|
||
|
}
|
||
|
- new AsyncTask<Integer>() {
|
||
|
- @Override
|
||
|
- protected Integer doInBackground() {
|
||
|
- try {
|
||
|
- HttpURLConnection conn =
|
||
|
- (HttpURLConnection) ChromiumNetworkAdapter.openConnection(
|
||
|
- url, TRAFFIC_ANNOTATION);
|
||
|
- conn.setInstanceFollowRedirects(false);
|
||
|
- conn.setRequestMethod("GET");
|
||
|
- conn.setDoInput(false);
|
||
|
- conn.setDoOutput(false);
|
||
|
- conn.setConnectTimeout(timeoutMs);
|
||
|
- conn.setReadTimeout(timeoutMs);
|
||
|
-
|
||
|
- conn.connect();
|
||
|
- int responseCode = conn.getResponseCode();
|
||
|
- if (responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
|
||
|
- return ConnectivityCheckResult.CONNECTED;
|
||
|
- } else {
|
||
|
- return ConnectivityCheckResult.NOT_CONNECTED;
|
||
|
- }
|
||
|
- } catch (SocketTimeoutException e) {
|
||
|
- return ConnectivityCheckResult.TIMEOUT;
|
||
|
- } catch (ProtocolException e) {
|
||
|
- return ConnectivityCheckResult.ERROR;
|
||
|
- } catch (IOException e) {
|
||
|
- return ConnectivityCheckResult.NOT_CONNECTED;
|
||
|
- }
|
||
|
- }
|
||
|
-
|
||
|
- @Override
|
||
|
- protected void onPostExecute(Integer result) {
|
||
|
- callback.onResult(result);
|
||
|
- }
|
||
|
- }
|
||
|
- .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||
|
+ postResult(callback, ConnectivityCheckResult.ERROR);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java b/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java
|
||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java
|
||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java
|
||
|
@@ -390,60 +390,6 @@ public class ConnectivityDetector implements NetworkChangeNotifier.ConnectionTyp
|
||
|
new AsyncTask<Integer>() {
|
||
|
@Override
|
||
|
protected Integer doInBackground() {
|
||
|
- HttpURLConnection urlConnection = null;
|
||
|
- try {
|
||
|
- RecordHistogram.recordCount1MHistogram(
|
||
|
- "ConnectivityDetector.SentHttpProbe." + mClientName, 1);
|
||
|
- Log.i(TAG, "Sending HTTP Probe now to url:" + urlString);
|
||
|
-
|
||
|
- URL url = new URL(urlString);
|
||
|
- urlConnection = (HttpURLConnection) ChromiumNetworkAdapter.openConnection(
|
||
|
- url, NetworkTrafficAnnotationTag.MISSING_TRAFFIC_ANNOTATION);
|
||
|
- urlConnection.setInstanceFollowRedirects(false);
|
||
|
- urlConnection.setRequestMethod(sProbeMethod);
|
||
|
- urlConnection.setConnectTimeout(timeoutMs);
|
||
|
- urlConnection.setReadTimeout(timeoutMs);
|
||
|
- urlConnection.setUseCaches(false);
|
||
|
- urlConnection.setRequestProperty(USER_AGENT_HEADER_NAME, mUserAgentString);
|
||
|
-
|
||
|
- long requestTimestamp = SystemClock.elapsedRealtime();
|
||
|
- urlConnection.connect();
|
||
|
- long responseTimestamp = SystemClock.elapsedRealtime();
|
||
|
- int responseCode = urlConnection.getResponseCode();
|
||
|
-
|
||
|
- Log.i(TAG,
|
||
|
- "Probe " + urlString + " time=" + (responseTimestamp - requestTimestamp)
|
||
|
- + "ms ret=" + responseCode
|
||
|
- + " headers=" + urlConnection.getHeaderFields());
|
||
|
-
|
||
|
- if (responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
|
||
|
- return ProbeResult.VALIDATED_WITH_NO_CONTENT;
|
||
|
- } else if (responseCode >= 400) {
|
||
|
- return ProbeResult.SERVER_ERROR;
|
||
|
- } else if (responseCode == HttpURLConnection.HTTP_OK) {
|
||
|
- // Treat 200 response with zero content length to not be a captive portal
|
||
|
- // because the user cannot sign in to an empty page. Probably this is due to
|
||
|
- // a broken transparent proxy.
|
||
|
- if (urlConnection.getContentLength() == 0) {
|
||
|
- return ProbeResult.VALIDATED_WITH_OK_BUT_ZERO_CONTENT_LENGTH;
|
||
|
- } else if (urlConnection.getContentLength() == -1) {
|
||
|
- // When no Content-length (default value == -1), attempt to read a byte
|
||
|
- // from the response.
|
||
|
- if (urlConnection.getInputStream().read() == -1) {
|
||
|
- return ProbeResult.VALIDATED_WITH_OK_BUT_NO_CONTENT_LENGTH;
|
||
|
- }
|
||
|
- }
|
||
|
- }
|
||
|
- } catch (IOException e) {
|
||
|
- Log.i(TAG, "Probe " + urlString + " failed w/ exception " + e);
|
||
|
- // Most likely the exception is thrown due to host name not resolved or socket
|
||
|
- // timeout.
|
||
|
- return ProbeResult.NO_INTERNET;
|
||
|
- } finally {
|
||
|
- if (urlConnection != null) {
|
||
|
- urlConnection.disconnect();
|
||
|
- }
|
||
|
- }
|
||
|
// The result returned from a well-known URL doesn't match the expected result,
|
||
|
// probably due to that the traffic is intercepted by the captive portal.
|
||
|
return ProbeResult.NOT_VALIDATED;
|
||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||
|
@@ -461,8 +461,7 @@ public class OmahaBase {
|
||
|
+ "}");
|
||
|
try {
|
||
|
URL url = new URL(getRequestGenerator().getServerUrl());
|
||
|
- HttpURLConnection connection =
|
||
|
- (HttpURLConnection) ChromiumNetworkAdapter.openConnection(url, annotation);
|
||
|
+ HttpURLConnection connection = null;
|
||
|
connection.setConnectTimeout(MS_CONNECTION_TIMEOUT);
|
||
|
connection.setReadTimeout(MS_CONNECTION_TIMEOUT);
|
||
|
return connection;
|
||
|
diff --git a/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java b/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java
|
||
|
--- a/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java
|
||
|
+++ b/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java
|
||
|
@@ -37,11 +37,6 @@ public class HttpURLConnectionFactoryImpl implements HttpURLConnectionFactory {
|
||
|
|
||
|
@Override
|
||
|
public HttpURLConnection createHttpURLConnection(String url) {
|
||
|
- try {
|
||
|
- return (HttpURLConnection) ChromiumNetworkAdapter.openConnection(
|
||
|
- new URL(url), TRAFFIC_ANNOTATION);
|
||
|
- } catch (IOException e) {
|
||
|
- return null;
|
||
|
- }
|
||
|
+ return null;
|
||
|
}
|
||
|
}
|
||
|
diff --git a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
|
||
|
--- a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
|
||
|
+++ b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
|
||
|
@@ -186,14 +186,6 @@ public class VariationsSeedFetcher {
|
||
|
ResettersForTesting.register(() -> sInstance = oldValue);
|
||
|
}
|
||
|
|
||
|
- @VisibleForTesting
|
||
|
- protected HttpURLConnection getServerConnection(SeedFetchParameters params)
|
||
|
- throws MalformedURLException, IOException {
|
||
|
- String urlString = getConnectionString(params);
|
||
|
- URL url = new URL(urlString);
|
||
|
- return (HttpURLConnection) ChromiumNetworkAdapter.openConnection(url, TRAFFIC_ANNOTATION);
|
||
|
- }
|
||
|
-
|
||
|
@VisibleForTesting
|
||
|
protected List<String> getAvailableInstanceManipulations() {
|
||
|
List<String> compressions = new ArrayList<String>();
|
||
|
@@ -508,24 +500,8 @@ public class VariationsSeedFetcher {
|
||
|
HttpURLConnection connection = null;
|
||
|
try {
|
||
|
long startTimeMillis = SystemClock.elapsedRealtime();
|
||
|
- connection = getServerConnection(params);
|
||
|
- connection.setReadTimeout(READ_TIMEOUT);
|
||
|
- connection.setConnectTimeout(REQUEST_TIMEOUT);
|
||
|
- connection.setDoInput(true);
|
||
|
- if (currInfo != null) {
|
||
|
- VariationsSeed currentVariationsSeed = currInfo.getParsedVariationsSeed();
|
||
|
- if (currentVariationsSeed != null) {
|
||
|
- String serialNumber = currentVariationsSeed.getSerialNumber();
|
||
|
- if (!serialNumber.isEmpty()) {
|
||
|
- connection.setRequestProperty("If-None-Match", serialNumber);
|
||
|
- }
|
||
|
- }
|
||
|
- }
|
||
|
List<String> requestedInstanceManipulations = getAvailableInstanceManipulations();
|
||
|
- connection.setRequestProperty("A-IM", String.join(",", requestedInstanceManipulations));
|
||
|
- connection.connect();
|
||
|
- int responseCode = connection.getResponseCode();
|
||
|
- fetchInfo.seedFetchResult = responseCode;
|
||
|
+ int responseCode = 400;
|
||
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||
|
recordSeedConnectTime(SystemClock.elapsedRealtime() - startTimeMillis);
|
||
|
|
||
|
diff --git a/net/android/java/src/org/chromium/net/ChromiumNetworkAdapter.java b/net/android/java/src/org/chromium/net/ChromiumNetworkAdapter.java
|
||
|
--- a/net/android/java/src/org/chromium/net/ChromiumNetworkAdapter.java
|
||
|
+++ b/net/android/java/src/org/chromium/net/ChromiumNetworkAdapter.java
|
||
|
@@ -25,10 +25,6 @@ public final class ChromiumNetworkAdapter {
|
||
|
* what data gets sent, what triggers it, etc.
|
||
|
* @return a URLConnection linking to the URL.
|
||
|
*/
|
||
|
- public static URLConnection openConnection(
|
||
|
- URL url, NetworkTrafficAnnotationTag trafficAnnotation) throws IOException {
|
||
|
- return url.openConnection();
|
||
|
- }
|
||
|
|
||
|
/**
|
||
|
* Wrapper around URL#openConnection(Proxy), with an extra argument for static analysis/privacy
|
||
|
@@ -40,10 +36,6 @@ public final class ChromiumNetworkAdapter {
|
||
|
* what data gets sent, what triggers it, etc.
|
||
|
* @return a URLConnection linking to the URL.
|
||
|
*/
|
||
|
- public static URLConnection openConnection(URL url, Proxy proxy,
|
||
|
- NetworkTrafficAnnotationTag trafficAnnotation) throws IOException {
|
||
|
- return url.openConnection(proxy);
|
||
|
- }
|
||
|
|
||
|
/**
|
||
|
* Wrapper around URL#openStream(), with an extra argument for static analysis/privacy
|
||
|
@@ -54,8 +46,4 @@ public final class ChromiumNetworkAdapter {
|
||
|
* what data gets sent, what triggers it, etc.
|
||
|
* @return an InputStream linking to the URL.
|
||
|
*/
|
||
|
- public static InputStream openStream(URL url, NetworkTrafficAnnotationTag trafficAnnotation)
|
||
|
- throws IOException {
|
||
|
- return url.openStream();
|
||
|
- }
|
||
|
}
|
||
|
--
|
||
|
2.25.1
|