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

Unified Diff: net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java

Issue 2601893003: NCN: Get the current network's info (Closed)
Patch Set: Address comments Created 3 years, 11 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 | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
diff --git a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
index 6096ad73cd73776d0f872bc6f9b68a66f5fe8ccc..73c7c86dcd841a80ab01cf7c15af0a23aa6a3423 100644
--- a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
+++ b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
@@ -29,6 +29,8 @@ import android.os.Build;
import android.telephony.TelephonyManager;
import android.util.Log;
+import org.chromium.base.ApplicationState;
+import org.chromium.base.ApplicationStatus;
import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram;
@@ -97,12 +99,55 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
}
/**
+ * @return the info of the network that is available to this app.
+ */
+ @TargetApi(Build.VERSION_CODES.M)
+ NetworkInfo getNetworkInfo() {
+ NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo();
+ if (networkInfo == null) {
+ return null;
+ }
+
+ if (networkInfo.isConnected()) {
+ return networkInfo;
+ }
+
+ // Current active network is not connected. Check if the network connectivity is blocked
pauljensen 2017/01/07 02:32:38 Can we combine and simplify this comment and the o
tbansal1 2017/01/09 18:11:14 Done.
+ // even though there is a network available that has Internet capability. This may
+ // happen because Android may not have updated the network access permissions for
+ // this app. See https://crbug.com/677365 for more details.
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ // https://crbug.com/677365 affects only Marshmallow and higher versions on which
+ // data access may be restricted to the background apps.
+ return null;
+ }
+
+ if (networkInfo.getDetailedState() != NetworkInfo.DetailedState.BLOCKED) {
+ // Network state is not blocked which implies that network access is
+ // unavailable (not just blocked to this app).
+ return null;
+ }
+
+ if (ApplicationStatus.getStateForApplication()
+ != ApplicationState.HAS_RUNNING_ACTIVITIES) {
+ // The app is not in the foreground.
+ return null;
+ }
+
+ // Network corresponding to networkInfo is BLOCKED which implies that it is blocked for
+ // this app. However, since this app is in foreground, so the network access must be
+ // restored to this app even though Android may not have updated the network access
+ // permissions for this app. See https://crbug.com/677365 for more details.
+ return networkInfo;
+ }
+
+ /**
* Returns connection type and status information about the current
* default network.
*/
NetworkState getNetworkState(WifiManagerDelegate wifiManagerDelegate) {
- final NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo();
- if (networkInfo == null || !networkInfo.isConnected()) {
+ final NetworkInfo networkInfo = getNetworkInfo();
+ if (networkInfo == null) {
return new NetworkState(false, -1, -1, null);
}
// If Wifi, then fetch SSID also
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698