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 @@ ...@@ -5,6 +5,9 @@
package org.chromium.base.compat; package org.chromium.base.compat;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build; import android.os.Build;
import android.os.Process; import android.os.Process;
import android.webkit.WebView; import android.webkit.WebView;
...@@ -36,4 +39,25 @@ public final class ApiHelperForM { ...@@ -36,4 +39,25 @@ public final class ApiHelperForM {
public static boolean isProcess64Bit() { public static boolean isProcess64Bit() {
return Process.is64Bit(); 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; ...@@ -28,6 +28,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.CalledByNativeUnchecked; import org.chromium.base.annotations.CalledByNativeUnchecked;
import org.chromium.base.compat.ApiHelperForM;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.IOException; import java.io.IOException;
...@@ -205,7 +206,7 @@ class AndroidNetworkLibrary { ...@@ -205,7 +206,7 @@ class AndroidNetworkLibrary {
Context.CONNECTIVITY_SERVICE); Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) return false; if (connectivityManager == null) return false;
Network network = connectivityManager.getActiveNetwork(); Network network = ApiHelperForM.getActiveNetwork(connectivityManager);
if (network == null) return false; if (network == null) return false;
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network); NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
...@@ -295,7 +296,7 @@ class AndroidNetworkLibrary { ...@@ -295,7 +296,7 @@ class AndroidNetworkLibrary {
if (connectivityManager == null) { if (connectivityManager == null) {
return new byte[0][0]; return new byte[0][0];
} }
Network network = connectivityManager.getActiveNetwork(); Network network = ApiHelperForM.getActiveNetwork(connectivityManager);
if (network == null) { if (network == null) {
return new byte[0][0]; return new byte[0][0];
} }
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
package org.chromium.net; package org.chromium.net;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.Build; import android.os.Build;
...@@ -16,6 +15,7 @@ import org.chromium.base.VisibleForTesting; ...@@ -16,6 +15,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName; import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.compat.ApiHelperForM;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -390,7 +390,6 @@ public class NetworkChangeNotifier { ...@@ -390,7 +390,6 @@ public class NetworkChangeNotifier {
/** /**
* Is the process bound to a network? * Is the process bound to a network?
*/ */
@TargetApi(Build.VERSION_CODES.M)
private boolean isProcessBoundToNetworkInternal() { private boolean isProcessBoundToNetworkInternal() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return false; return false;
...@@ -399,7 +398,7 @@ public class NetworkChangeNotifier { ...@@ -399,7 +398,7 @@ public class NetworkChangeNotifier {
boolean returnValue = ConnectivityManager.getProcessDefaultNetwork() != null; boolean returnValue = ConnectivityManager.getProcessDefaultNetwork() != null;
return returnValue; return returnValue;
} else { } else {
return mConnectivityManager.getBoundNetworkForProcess() != null; return ApiHelperForM.getBoundNetworkForProcess(mConnectivityManager) != null;
} }
} }
......
...@@ -35,6 +35,7 @@ import org.chromium.base.ApplicationStatus; ...@@ -35,6 +35,7 @@ import org.chromium.base.ApplicationStatus;
import org.chromium.base.BuildConfig; import org.chromium.base.BuildConfig;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.compat.ApiHelperForM;
import java.io.IOException; import java.io.IOException;
import java.net.Socket; import java.net.Socket;
...@@ -212,7 +213,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver { ...@@ -212,7 +213,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
NetworkInfo networkInfo; NetworkInfo networkInfo;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
network = getDefaultNetwork(); network = getDefaultNetwork();
networkInfo = mConnectivityManager.getNetworkInfo(network); networkInfo = ApiHelperForM.getNetworkInfo(mConnectivityManager, network);
} else { } else {
networkInfo = mConnectivityManager.getActiveNetworkInfo(); networkInfo = mConnectivityManager.getActiveNetworkInfo();
} }
...@@ -352,7 +353,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver { ...@@ -352,7 +353,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
Network getDefaultNetwork() { Network getDefaultNetwork() {
Network defaultNetwork = null; Network defaultNetwork = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 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 // getActiveNetwork() returning null cannot be trusted to indicate disconnected
// as it suffers from https://crbug.com/677365. // as it suffers from https://crbug.com/677365.
if (defaultNetwork != null) { if (defaultNetwork != null) {
...@@ -1073,7 +1074,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver { ...@@ -1073,7 +1074,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
@VisibleForTesting @VisibleForTesting
static long networkToNetId(Network network) { static long networkToNetId(Network network) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return network.getNetworkHandle(); return ApiHelperForM.getNetworkHandle(network);
} else { } else {
// NOTE(pauljensen): This depends on Android framework implementation details. These // NOTE(pauljensen): This depends on Android framework implementation details. These
// details cannot change because Lollipop is long since released. // 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