Commit 964eb45f authored by Changwan Ryu's avatar Changwan Ryu Committed by Commit Bot

Fix various class verification errors in net/

There is no logic change - this just move the code around for
optimization.

Android's VM does run-time verification for all the methods in a class
if any of the methods fails in AOT compilation time. Therefore,
splitting out failing methods into a separate class containing it there
help reduce the overall time taken in the run-time verification.

See https://chromium-review.googlesource.com/c/chromium/src/+/1175444/8

for the whole picture.

See crbug.com/838702 for more information about run-time verification
issue.

Bug: 868250
Change-Id: I2f878edb7eb2b45119b146231beeb868174d3f2e
Reviewed-on: https://chromium-review.googlesource.com/1187661
Commit-Queue: Changwan Ryu <changwan@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Reviewed-by: default avatarRyan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590547}
parent abf553f1
......@@ -5,6 +5,9 @@
package org.chromium.base.compat;
import android.annotation.TargetApi;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Process;
import android.webkit.WebView;
......@@ -36,4 +39,25 @@ public final class ApiHelperForM {
public static boolean isProcess64Bit() {
return Process.is64Bit();
}
/** See {@link ConnectivityManager#getBoundNetworkForProcess() } */
public static Network getBoundNetworkForProcess(ConnectivityManager connectivityManager) {
return connectivityManager.getBoundNetworkForProcess();
}
/** See {@link Network#getNetworkHandle() } */
public static long getNetworkHandle(Network network) {
return network.getNetworkHandle();
}
/** See @{link ConnectivityManager#getActiveNetwork() } */
public static Network getActiveNetwork(ConnectivityManager connectivityManager) {
return connectivityManager.getActiveNetwork();
}
/** See @{link ConnectivityManager#getNetworkInfo(Network) } */
public static NetworkInfo getNetworkInfo(
ConnectivityManager connectivityManager, Network network) {
return connectivityManager.getNetworkInfo(network);
}
}
......@@ -28,6 +28,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.CalledByNativeUnchecked;
import org.chromium.base.compat.ApiHelperForM;
import java.io.FileDescriptor;
import java.io.IOException;
......@@ -205,7 +206,7 @@ class AndroidNetworkLibrary {
Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) return false;
Network network = connectivityManager.getActiveNetwork();
Network network = ApiHelperForM.getActiveNetwork(connectivityManager);
if (network == null) return false;
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
......@@ -295,7 +296,7 @@ class AndroidNetworkLibrary {
if (connectivityManager == null) {
return new byte[0][0];
}
Network network = connectivityManager.getActiveNetwork();
Network network = ApiHelperForM.getActiveNetwork(connectivityManager);
if (network == null) {
return new byte[0][0];
}
......
......@@ -5,7 +5,6 @@
package org.chromium.net;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.Build;
......@@ -16,6 +15,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.compat.ApiHelperForM;
import java.util.ArrayList;
......@@ -390,7 +390,6 @@ public class NetworkChangeNotifier {
/**
* Is the process bound to a network?
*/
@TargetApi(Build.VERSION_CODES.M)
private boolean isProcessBoundToNetworkInternal() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return false;
......@@ -399,7 +398,7 @@ public class NetworkChangeNotifier {
boolean returnValue = ConnectivityManager.getProcessDefaultNetwork() != null;
return returnValue;
} else {
return mConnectivityManager.getBoundNetworkForProcess() != null;
return ApiHelperForM.getBoundNetworkForProcess(mConnectivityManager) != null;
}
}
......
......@@ -35,6 +35,7 @@ import org.chromium.base.ApplicationStatus;
import org.chromium.base.BuildConfig;
import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.compat.ApiHelperForM;
import java.io.IOException;
import java.net.Socket;
......@@ -212,7 +213,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
NetworkInfo networkInfo;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
network = getDefaultNetwork();
networkInfo = mConnectivityManager.getNetworkInfo(network);
networkInfo = ApiHelperForM.getNetworkInfo(mConnectivityManager, network);
} else {
networkInfo = mConnectivityManager.getActiveNetworkInfo();
}
......@@ -352,7 +353,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
Network getDefaultNetwork() {
Network defaultNetwork = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
defaultNetwork = mConnectivityManager.getActiveNetwork();
defaultNetwork = ApiHelperForM.getActiveNetwork(mConnectivityManager);
// getActiveNetwork() returning null cannot be trusted to indicate disconnected
// as it suffers from https://crbug.com/677365.
if (defaultNetwork != null) {
......@@ -1073,7 +1074,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
@VisibleForTesting
static long networkToNetId(Network network) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return network.getNetworkHandle();
return ApiHelperForM.getNetworkHandle(network);
} else {
// NOTE(pauljensen): This depends on Android framework implementation details. These
// details cannot change because Lollipop is long since released.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment