diff --git a/src/com/android/settings/biometrics/BiometricStatusPreferenceController.java b/src/com/android/settings/biometrics/BiometricStatusPreferenceController.java index 90d4cc2f1f9..379a02b7479 100644 --- a/src/com/android/settings/biometrics/BiometricStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/BiometricStatusPreferenceController.java @@ -33,7 +33,7 @@ public abstract class BiometricStatusPreferenceController extends BasePreference protected final UserManager mUm; protected final LockPatternUtils mLockPatternUtils; - protected final int mUserId = UserHandle.myUserId(); + private final int mUserId = UserHandle.myUserId(); protected final int mProfileChallengeUserId; /** diff --git a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java index cd27dbbe3d5..84505772092 100644 --- a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java @@ -46,7 +46,7 @@ public class FaceStatusPreferenceController extends BiometricStatusPreferenceCon @Override protected boolean hasEnrolledBiometrics() { - return mFaceManager.hasEnrolledTemplates(mUserId); + return mFaceManager.hasEnrolledTemplates(getUserId()); } @Override diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java index 2fcff5c8822..0e1ccd7839a 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java @@ -45,12 +45,12 @@ public class FingerprintStatusPreferenceController extends BiometricStatusPrefer @Override protected boolean hasEnrolledBiometrics() { - return mFingerprintManager.hasEnrolledFingerprints(mUserId); + return mFingerprintManager.hasEnrolledFingerprints(getUserId()); } @Override protected String getSummaryTextEnrolled() { - final int numEnrolled = mFingerprintManager.getEnrolledFingerprints(mUserId).size(); + final int numEnrolled = mFingerprintManager.getEnrolledFingerprints(getUserId()).size(); return mContext.getResources().getQuantityString( R.plurals.security_settings_fingerprint_preference_summary, numEnrolled, numEnrolled); diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java index 096bdfe4fc0..3001d2e3f1e 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_MOBILE; 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.telephony.TelephonyManager; 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 @@ public final class DataUsageUtils { } 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/development/BluetoothA2dpHwOffloadPreferenceController.java b/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java index b0e35d3de09..0fcec05bd43 100644 --- a/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java +++ b/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java @@ -66,20 +66,6 @@ public class BluetoothA2dpHwOffloadPreferenceController extends DeveloperOptions } } - @Override - protected void onDeveloperOptionsSwitchDisabled() { - super.onDeveloperOptionsSwitchDisabled(); - final boolean offloadSupported = - SystemProperties.getBoolean(A2DP_OFFLOAD_SUPPORTED_PROPERTY, false); - if (offloadSupported) { - ((SwitchPreference) mPreference).setChecked(false); - SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, "false"); - } else { - ((SwitchPreference) mPreference).setChecked(true); - SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, "true"); - } - } - public void onA2dpHwDialogConfirmed() { final boolean offloadDisabled = SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false); diff --git a/src/com/android/settings/development/CbrsDataSwitchPreferenceController.java b/src/com/android/settings/development/CbrsDataSwitchPreferenceController.java index ec1f8e0d155..d5c78e8b752 100644 --- a/src/com/android/settings/development/CbrsDataSwitchPreferenceController.java +++ b/src/com/android/settings/development/CbrsDataSwitchPreferenceController.java @@ -54,12 +54,12 @@ public class CbrsDataSwitchPreferenceController extends DeveloperOptionsPreferen @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean state = (Boolean)newValue; - return mTelephonyManager.setAlternativeNetworkAccessState(state); + return mTelephonyManager.setAlternativeNetworkState(state); } @Override public void updateState(Preference preference) { - boolean state = mTelephonyManager.isAlternativeNetworkAccessEnabled(); + boolean state = mTelephonyManager.isAlternativeNetworkEnabled(); ((SwitchPreference) mPreference).setChecked(state); } diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 2e6611fc185..d6c1931c511 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -123,7 +123,8 @@ public class WifiConfigController implements TextWatcher, private final ArrayAdapter mPhase2FullAdapter; // e.g. AccessPoint.SECURITY_NONE - private int mAccessPointSecurity; + @VisibleForTesting + int mAccessPointSecurity; private TextView mPasswordView; private String mUnspecifiedCertString; @@ -465,7 +466,8 @@ public class WifiConfigController implements TextWatcher, } 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 @@ public class WifiConfigController implements TextWatcher, 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 0270be4b4cd..4ab42569fa8 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 @@ package com.android.settings.datausage; 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 @@ public final class DataUsageUtilsTest { private ConnectivityManager mManager; @Mock private TelephonyManager mTelephonyManager; + @Mock + private NetworkStatsManager mNetworkStatsManager; + private Context mContext; @Before @@ -51,6 +60,7 @@ public final class DataUsageUtilsTest { 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 @@ public final class DataUsageUtilsTest { 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/development/CbrsDataSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java index be9b1231682..0f2239079db 100644 --- a/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java @@ -62,19 +62,19 @@ public final class CbrsDataSwitchPreferenceControllerTest { public void onPreferenceChanged_settingEnabled_shouldEnableANAS() { mController.onPreferenceChange(mPreference, true); - assertThat(mTelephonyManager.isAlternativeNetworkAccessEnabled()).isTrue(); + assertThat(mTelephonyManager.isAlternativeNetworkEnabled()).isTrue(); } @Test public void onPreferenceChanged_settingDisabled_shouldDisableANAS() { mController.onPreferenceChange(mPreference, false); - assertThat(mTelephonyManager.isAlternativeNetworkAccessEnabled()).isFalse(); + assertThat(mTelephonyManager.isAlternativeNetworkEnabled()).isFalse(); } @Test public void updateState_settingEnabled_shouldEnablePreference() { - mTelephonyManager.setAlternativeNetworkAccessState(true); + mTelephonyManager.setAlternativeNetworkState(true); mController.updateState(mPreference); assertThat(mPreference.isChecked()).isTrue(); @@ -82,7 +82,7 @@ public final class CbrsDataSwitchPreferenceControllerTest { @Test public void updateState_settingDisabled_shouldDisablePreference() { - mTelephonyManager.setAlternativeNetworkAccessState(false); + mTelephonyManager.setAlternativeNetworkState(false); mController.updateState(mPreference); assertThat(mPreference.isChecked()).isFalse(); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java index 54be773d75e..471c991bfad 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 @@ public class WifiConfigControllerTest { @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 @@ public class WifiConfigControllerTest { 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 @@ public class WifiConfigControllerTest { @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 @@ public class WifiConfigControllerTest { 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(); }