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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import static android.net.ConnectivityManager.TYPE_VPN; 7 import static android.net.ConnectivityManager.TYPE_VPN;
8 import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; 8 import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
9 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN; 9 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
10 import static android.net.NetworkCapabilities.TRANSPORT_VPN; 10 import static android.net.NetworkCapabilities.TRANSPORT_VPN;
(...skipping 11 matching lines...) Expand all
22 import android.net.Network; 22 import android.net.Network;
23 import android.net.NetworkCapabilities; 23 import android.net.NetworkCapabilities;
24 import android.net.NetworkInfo; 24 import android.net.NetworkInfo;
25 import android.net.NetworkRequest; 25 import android.net.NetworkRequest;
26 import android.net.wifi.WifiInfo; 26 import android.net.wifi.WifiInfo;
27 import android.net.wifi.WifiManager; 27 import android.net.wifi.WifiManager;
28 import android.os.Build; 28 import android.os.Build;
29 import android.telephony.TelephonyManager; 29 import android.telephony.TelephonyManager;
30 import android.util.Log; 30 import android.util.Log;
31 31
32 import org.chromium.base.ApplicationState;
33 import org.chromium.base.ApplicationStatus;
32 import org.chromium.base.ThreadUtils; 34 import org.chromium.base.ThreadUtils;
33 import org.chromium.base.VisibleForTesting; 35 import org.chromium.base.VisibleForTesting;
34 import org.chromium.base.metrics.RecordHistogram; 36 import org.chromium.base.metrics.RecordHistogram;
35 import org.chromium.net.ConnectionType.ConnectionTypeEnum; 37 import org.chromium.net.ConnectionType.ConnectionTypeEnum;
36 38
37 import java.io.IOException; 39 import java.io.IOException;
38 import java.util.Arrays; 40 import java.util.Arrays;
39 41
40 import javax.annotation.concurrent.GuardedBy; 42 import javax.annotation.concurrent.GuardedBy;
41 43
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 (ConnectivityManager) context.getSystemService(Context.CONNE CTIVITY_SERVICE); 92 (ConnectivityManager) context.getSystemService(Context.CONNE CTIVITY_SERVICE);
91 } 93 }
92 94
93 // For testing. 95 // For testing.
94 ConnectivityManagerDelegate() { 96 ConnectivityManagerDelegate() {
95 // All the methods below should be overridden. 97 // All the methods below should be overridden.
96 mConnectivityManager = null; 98 mConnectivityManager = null;
97 } 99 }
98 100
99 /** 101 /**
102 * @return the info of the network that is available to this app.
103 */
104 @TargetApi(Build.VERSION_CODES.M)
105 NetworkInfo getNetworkInfo() {
106 NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo( );
107 if (networkInfo == null) {
108 return null;
109 }
110
111 if (networkInfo.isConnected()) {
112 return networkInfo;
113 }
114
115 // Current active network is not connected. Check if the network con nectivity 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.
116 // even though there is a network available that has Internet capabi lity. This may
117 // happen because Android may not have updated the network access pe rmissions for
118 // this app. See https://crbug.com/677365 for more details.
119 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
120 // https://crbug.com/677365 affects only Marshmallow and higher versions on which
121 // data access may be restricted to the background apps.
122 return null;
123 }
124
125 if (networkInfo.getDetailedState() != NetworkInfo.DetailedState.BLOC KED) {
126 // Network state is not blocked which implies that network acces s is
127 // unavailable (not just blocked to this app).
128 return null;
129 }
130
131 if (ApplicationStatus.getStateForApplication()
132 != ApplicationState.HAS_RUNNING_ACTIVITIES) {
133 // The app is not in the foreground.
134 return null;
135 }
136
137 // Network corresponding to networkInfo is BLOCKED which implies tha t it is blocked for
138 // this app. However, since this app is in foreground, so the networ k access must be
139 // restored to this app even though Android may not have updated the network access
140 // permissions for this app. See https://crbug.com/677365 for more d etails.
141 return networkInfo;
142 }
143
144 /**
100 * Returns connection type and status information about the current 145 * Returns connection type and status information about the current
101 * default network. 146 * default network.
102 */ 147 */
103 NetworkState getNetworkState(WifiManagerDelegate wifiManagerDelegate) { 148 NetworkState getNetworkState(WifiManagerDelegate wifiManagerDelegate) {
104 final NetworkInfo networkInfo = mConnectivityManager.getActiveNetwor kInfo(); 149 final NetworkInfo networkInfo = getNetworkInfo();
105 if (networkInfo == null || !networkInfo.isConnected()) { 150 if (networkInfo == null) {
106 return new NetworkState(false, -1, -1, null); 151 return new NetworkState(false, -1, -1, null);
107 } 152 }
108 // If Wifi, then fetch SSID also 153 // If Wifi, then fetch SSID also
109 if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { 154 if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
110 // Since Android 4.2 the SSID can be retrieved from NetworkInfo. getExtraInfo(). 155 // Since Android 4.2 the SSID can be retrieved from NetworkInfo. getExtraInfo().
111 if (networkInfo.getExtraInfo() != null && !"".equals(networkInfo .getExtraInfo())) { 156 if (networkInfo.getExtraInfo() != null && !"".equals(networkInfo .getExtraInfo())) {
112 return new NetworkState(true, networkInfo.getType(), network Info.getSubtype(), 157 return new NetworkState(true, networkInfo.getType(), network Info.getSubtype(),
113 networkInfo.getExtraInfo()); 158 networkInfo.getExtraInfo());
114 } 159 }
115 // Fetch WiFi SSID directly from WifiManagerDelegate if not in N etworkInfo. 160 // Fetch WiFi SSID directly from WifiManagerDelegate if not in N etworkInfo.
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 return network.getNetworkHandle(); 1032 return network.getNetworkHandle();
988 } else { 1033 } else {
989 // NOTE(pauljensen): This depends on Android framework implementatio n details. These 1034 // NOTE(pauljensen): This depends on Android framework implementatio n details. These
990 // details cannot change because Lollipop is long since released. 1035 // details cannot change because Lollipop is long since released.
991 // NetIDs are only 16-bit so use parseInt. This function returns a l ong because 1036 // NetIDs are only 16-bit so use parseInt. This function returns a l ong because
992 // getNetworkHandle() returns a long. 1037 // getNetworkHandle() returns a long.
993 return Integer.parseInt(network.toString()); 1038 return Integer.parseInt(network.toString());
994 } 1039 }
995 } 1040 }
996 } 1041 }
OLDNEW
« 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