Merge "Fix work profile fingerprint userId"
diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java
index 096bdfe..3001d2e 100644
--- a/src/com/android/settings/datausage/DataUsageUtils.java
+++ b/src/com/android/settings/datausage/DataUsageUtils.java
@@ -18,6 +18,8 @@
import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.telephony.TelephonyManager.SIM_STATE_READY;
+import android.app.usage.NetworkStats.Bucket;
+import android.app.usage.NetworkStatsManager;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.INetworkStatsService;
@@ -33,8 +35,11 @@
import android.text.BidiFormatter;
import android.text.format.Formatter;
import android.text.format.Formatter.BytesResult;
+import android.util.FeatureFlagUtils;
import android.util.Log;
+import com.android.settings.core.FeatureFlags;
+
import java.util.List;
/**
@@ -69,28 +74,48 @@
}
final ConnectivityManager conn = ConnectivityManager.from(context);
- final boolean hasEthernet = conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET);
-
- final long ethernetBytes;
- try {
- INetworkStatsService statsService = INetworkStatsService.Stub.asInterface(
- ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
-
- INetworkStatsSession statsSession = statsService.openSession();
- if (statsSession != null) {
- ethernetBytes = statsSession.getSummaryForNetwork(
- NetworkTemplate.buildTemplateEthernet(), Long.MIN_VALUE, Long.MAX_VALUE)
- .getTotalBytes();
- TrafficStats.closeQuietly(statsSession);
- } else {
- ethernetBytes = 0;
- }
- } catch (RemoteException e) {
- throw new RuntimeException(e);
+ if (!conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET)) {
+ return false;
}
- // only show ethernet when both hardware present and traffic has occurred
- return hasEthernet && ethernetBytes > 0;
+ if (FeatureFlagUtils.isEnabled(context, FeatureFlags.DATA_USAGE_V2)) {
+ final TelephonyManager telephonyManager = TelephonyManager.from(context);;
+ final NetworkStatsManager networkStatsManager =
+ context.getSystemService(NetworkStatsManager.class);
+ boolean hasEthernetUsage = false;
+ try {
+ final Bucket bucket = networkStatsManager.querySummaryForUser(
+ ConnectivityManager.TYPE_ETHERNET, telephonyManager.getSubscriberId(),
+ 0L /* startTime */, System.currentTimeMillis() /* endTime */);
+ if (bucket != null) {
+ hasEthernetUsage = bucket.getRxBytes() > 0 || bucket.getTxBytes() > 0;
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Exception querying network detail.", e);
+ }
+ return hasEthernetUsage;
+ } else {
+ final long ethernetBytes;
+ try {
+ INetworkStatsService statsService = INetworkStatsService.Stub.asInterface(
+ ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
+
+ INetworkStatsSession statsSession = statsService.openSession();
+ if (statsSession != null) {
+ ethernetBytes = statsSession.getSummaryForNetwork(
+ NetworkTemplate.buildTemplateEthernet(), Long.MIN_VALUE, Long.MAX_VALUE)
+ .getTotalBytes();
+ TrafficStats.closeQuietly(statsSession);
+ } else {
+ ethernetBytes = 0;
+ }
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+
+ // only show ethernet when both hardware present and traffic has occurred
+ return ethernetBytes > 0;
+ }
}
/**
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 2e6611f..d6c1931 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -123,7 +123,8 @@
private final ArrayAdapter<String> mPhase2FullAdapter;
// e.g. AccessPoint.SECURITY_NONE
- private int mAccessPointSecurity;
+ @VisibleForTesting
+ int mAccessPointSecurity;
private TextView mPasswordView;
private String mUnspecifiedCertString;
@@ -465,7 +466,8 @@
} else {
enabled = ipAndProxyFieldsAreValid();
}
- if (mAccessPointSecurity == AccessPoint.SECURITY_EAP) {
+ if (mAccessPointSecurity == AccessPoint.SECURITY_EAP && mEapCaCertSpinner != null
+ && mView.findViewById(R.id.l_ca_cert).getVisibility() != View.GONE) {
String caCertSelection = (String) mEapCaCertSpinner.getSelectedItem();
if (caCertSelection.equals(mUnspecifiedCertString)) {
// Disallow submit if the user has not selected a CA certificate for an EAP network
@@ -481,7 +483,8 @@
enabled = false;
}
}
- if (mAccessPointSecurity == AccessPoint.SECURITY_EAP
+ if (mAccessPointSecurity == AccessPoint.SECURITY_EAP && mEapUserCertSpinner != null
+ && mView.findViewById(R.id.l_user_cert).getVisibility() != View.GONE
&& mEapUserCertSpinner.getSelectedItem().equals(mUnspecifiedCertString)) {
// Disallow submit if the user has not selected a user certificate for an EAP network
// configuration.
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java
index 0270be4..4ab4256 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java
@@ -19,13 +19,19 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.usage.NetworkStatsManager;
import android.content.Context;
import android.net.ConnectivityManager;
import android.telephony.TelephonyManager;
import android.util.DataUnit;
+import android.util.FeatureFlagUtils;
+import com.android.settings.core.FeatureFlags;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
@@ -42,6 +48,9 @@
private ConnectivityManager mManager;
@Mock
private TelephonyManager mTelephonyManager;
+ @Mock
+ private NetworkStatsManager mNetworkStatsManager;
+
private Context mContext;
@Before
@@ -51,6 +60,7 @@
mContext = shadowContext.getApplicationContext();
shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
shadowContext.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
+ shadowContext.setSystemService(Context.NETWORK_STATS_SERVICE, mNetworkStatsManager);
}
@Test
@@ -88,4 +98,17 @@
assertThat(formattedDataUsage).isEqualTo("1.00 GB");
}
+
+ @Test
+ public void hasEthernet_shouldQueryEthernetSummaryForUser() throws Exception {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.DATA_USAGE_V2, true);
+ when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
+ final String subscriber = "TestSub";
+ when(mTelephonyManager.getSubscriberId()).thenReturn(subscriber);
+
+ DataUsageUtils.hasEthernet(mContext);
+
+ verify(mNetworkStatsManager).querySummaryForUser(eq(ConnectivityManager.TYPE_ETHERNET),
+ eq(subscriber), anyLong() /* startTime */, anyLong() /* endTime */);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
index 54be773..471c991 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
@@ -57,11 +57,10 @@
@Mock
private Context mContext;
@Mock
- private View mView;
- @Mock
private AccessPoint mAccessPoint;
@Mock
private KeyStore mKeyStore;
+ private View mView;
private Spinner mHiddenSettingsSpinner;
public WifiConfigController mController;
@@ -74,6 +73,7 @@
private static final String SHORT_PSK = "abcdefg";
// Valid PSK pass phrase
private static final String GOOD_PSK = "abcdefghijklmnopqrstuvwxyz";
+ private static final String GOOD_SSID = "abc";
private static final int DHCP = 0;
@Before
@@ -185,6 +185,9 @@
@Test
public void isSubmittable_EapToPskWithValidPassword_shouldReturnTrue() {
+ mController = new TestWifiConfigController(mConfigUiBase, mView, null,
+ WifiConfigUiBase.MODE_CONNECT);
+ final TextView ssid = mView.findViewById(R.id.ssid);
final TextView password = mView.findViewById(R.id.password);
final Spinner securitySpinner = mView.findViewById(R.id.security);
assertThat(password).isNotNull();
@@ -195,6 +198,16 @@
mController.onItemSelected(securitySpinner, null, AccessPoint.SECURITY_EAP, 0);
mController.onItemSelected(securitySpinner, null, AccessPoint.SECURITY_PSK, 0);
password.setText(GOOD_PSK);
+ ssid.setText(GOOD_SSID);
+
+ assertThat(mController.isSubmittable()).isTrue();
+ }
+
+ @Test
+ public void isSubmittable_EapWithAkaMethod_shouldReturnTrue() {
+ when(mAccessPoint.isSaved()).thenReturn(true);
+ mController.mAccessPointSecurity = AccessPoint.SECURITY_EAP;
+ mView.findViewById(R.id.l_ca_cert).setVisibility(View.GONE);
assertThat(mController.isSubmittable()).isTrue();
}