diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 3b6d4f8cd6f..6a2af9e9d2c 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1562,11 +1562,11 @@ android:windowSoftInputMode="stateHidden|adjustResize" android:theme="@style/GlifTheme.Light"/> - - - - - + + + + @@ -1575,10 +1575,10 @@ - - - - + + + @@ -1588,7 +1588,7 @@ - - diff --git a/res/layout/fingerprint_enroll_find_sensor_graphic.xml b/res/layout/fingerprint_enroll_find_sensor_graphic.xml index 1c6ab80adf8..069045783e3 100644 --- a/res/layout/fingerprint_enroll_find_sensor_graphic.xml +++ b/res/layout/fingerprint_enroll_find_sensor_graphic.xml @@ -28,7 +28,7 @@ android:src="@drawable/fingerprint_sensor_location" android:scaleType="centerInside"/> - diff --git a/res/layout/settings_base_layout.xml b/res/layout/settings_base_layout.xml new file mode 100644 index 00000000000..7216d7660aa --- /dev/null +++ b/res/layout/settings_base_layout.xml @@ -0,0 +1,35 @@ + + + + + + diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 87d422fd6f7..3d9f66652f5 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -57,7 +57,7 @@ - - sTileBlacklist = new ArraySet<>(); + + private final PackageReceiver mPackageReceiver = new PackageReceiver(); + private final List mCategoryListeners = new ArrayList<>(); + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + final long startTime = System.currentTimeMillis(); + + final TypedArray theme = getTheme().obtainStyledAttributes(android.R.styleable.Theme); + if (!theme.getBoolean(android.R.styleable.Theme_windowNoTitle, false)) { + getWindow().addFlags(LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + requestWindowFeature(Window.FEATURE_NO_TITLE); + } + super.setContentView(R.layout.settings_base_layout); + + final Toolbar toolbar = findViewById(R.id.action_bar); + if (theme.getBoolean(android.R.styleable.Theme_windowNoTitle, false)) { + toolbar.setVisibility(View.GONE); + return; + } + setActionBar(toolbar); + + if (DEBUG_TIMING) { + Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime) + + " ms"); + } + } + + @Override + public boolean onNavigateUp() { + if (!super.onNavigateUp()) { + finish(); + } + return true; + } + + @Override + protected void onResume() { + super.onResume(); + final IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addAction(Intent.ACTION_PACKAGE_CHANGED); + filter.addAction(Intent.ACTION_PACKAGE_REPLACED); + filter.addDataScheme(DATA_SCHEME_PKG); + registerReceiver(mPackageReceiver, filter); + + new CategoriesUpdateTask().execute(); + } + + @Override + protected void onPause() { + unregisterReceiver(mPackageReceiver); + super.onPause(); + } + + public void addCategoryListener(CategoryListener listener) { + mCategoryListeners.add(listener); + } + + public void remCategoryListener(CategoryListener listener) { + mCategoryListeners.remove(listener); + } + + @Override + public void setContentView(@LayoutRes int layoutResID) { + final ViewGroup parent = findViewById(R.id.content_frame); + if (parent != null) { + parent.removeAllViews(); + } + LayoutInflater.from(this).inflate(layoutResID, parent); + } + + @Override + public void setContentView(View view) { + ((ViewGroup) findViewById(R.id.content_frame)).addView(view); + } + + @Override + public void setContentView(View view, ViewGroup.LayoutParams params) { + ((ViewGroup) findViewById(R.id.content_frame)).addView(view, params); + } + + private void onCategoriesChanged() { + final int N = mCategoryListeners.size(); + for (int i = 0; i < N; i++) { + mCategoryListeners.get(i).onCategoriesChanged(); + } + } + + /** + * @return whether or not the enabled state actually changed. + */ + public boolean setTileEnabled(ComponentName component, boolean enabled) { + final PackageManager pm = getPackageManager(); + int state = pm.getComponentEnabledSetting(component); + boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + if (isEnabled != enabled || state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { + if (enabled) { + sTileBlacklist.remove(component); + } else { + sTileBlacklist.add(component); + } + pm.setComponentEnabledSetting(component, enabled + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + return true; + } + return false; + } + + /** + * Updates dashboard categories. Only necessary to call this after setTileEnabled + */ + public void updateCategories() { + new CategoriesUpdateTask().execute(); + } + + public String getSettingPkg() { + return TileUtils.SETTING_PKG; + } + + public interface CategoryListener { + void onCategoriesChanged(); + } + + private class CategoriesUpdateTask extends AsyncTask { + + private final CategoryManager mCategoryManager; + + public CategoriesUpdateTask() { + mCategoryManager = CategoryManager.get(SettingsBaseActivity.this); + } + + @Override + protected Void doInBackground(Void... params) { + mCategoryManager.reloadAllCategories(SettingsBaseActivity.this, getSettingPkg()); + return null; + } + + @Override + protected void onPostExecute(Void result) { + mCategoryManager.updateCategoryFromBlacklist(sTileBlacklist); + onCategoriesChanged(); + } + } + + private class PackageReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + new CategoriesUpdateTask().execute(); + } + } +} diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index ecf905eff00..67ffb76b9f1 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -27,13 +27,13 @@ import android.util.Log; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerListHelper; +import com.android.settings.core.SettingsBaseActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.Indexable; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.drawer.DashboardCategory; -import com.android.settingslib.drawer.SettingsDrawerActivity; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; @@ -52,7 +52,7 @@ import androidx.preference.PreferenceScreen; * Base fragment for dashboard style UI containing a list of static and dynamic setting items. */ public abstract class DashboardFragment extends SettingsPreferenceFragment - implements SettingsDrawerActivity.CategoryListener, Indexable, + implements SettingsBaseActivity.CategoryListener, Indexable, SummaryLoader.SummaryConsumer { private static final String TAG = "DashboardFragment"; @@ -145,9 +145,9 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment mSummaryLoader.setListening(true); } final Activity activity = getActivity(); - if (activity instanceof SettingsDrawerActivity) { + if (activity instanceof SettingsBaseActivity) { mListeningToCategoryChange = true; - ((SettingsDrawerActivity) activity).addCategoryListener(this); + ((SettingsBaseActivity) activity).addCategoryListener(this); } } @@ -197,8 +197,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } if (mListeningToCategoryChange) { final Activity activity = getActivity(); - if (activity instanceof SettingsDrawerActivity) { - ((SettingsDrawerActivity) activity).remCategoryListener(this); + if (activity instanceof SettingsBaseActivity) { + ((SettingsBaseActivity) activity).remCategoryListener(this); } mListeningToCategoryChange = false; } diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 0bb4ce2898c..1b9b75f7139 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -30,6 +30,8 @@ import android.view.ViewGroup; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.core.SettingsBaseActivity; +import com.android.settings.core.SettingsBaseActivity.CategoryListener; import com.android.settings.dashboard.conditional.Condition; import com.android.settings.dashboard.conditional.ConditionManager; import com.android.settings.dashboard.conditional.ConditionManager.ConditionListener; @@ -40,8 +42,6 @@ import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.ActionBarShadowController; import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.DashboardCategory; -import com.android.settingslib.drawer.SettingsDrawerActivity; -import com.android.settingslib.drawer.SettingsDrawerActivity.CategoryListener; import com.android.settingslib.suggestions.SuggestionControllerMixin; import com.android.settingslib.utils.ThreadUtils; @@ -138,7 +138,7 @@ public class DashboardSummary extends InstrumentedFragment long startTime = System.currentTimeMillis(); super.onResume(); - ((SettingsDrawerActivity) getActivity()).addCategoryListener(this); + ((SettingsBaseActivity) getActivity()).addCategoryListener(this); mSummaryLoader.setListening(true); final int metricsCategory = getMetricsCategory(); for (Condition c : mConditionManager.getConditions()) { @@ -156,7 +156,7 @@ public class DashboardSummary extends InstrumentedFragment public void onPause() { super.onPause(); - ((SettingsDrawerActivity) getActivity()).remCategoryListener(this); + ((SettingsBaseActivity) getActivity()).remCategoryListener(this); mSummaryLoader.setListening(false); for (Condition c : mConditionManager.getConditions()) { if (c.shouldShow()) { diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java index f71a6bc963d..1d58ed5ad1a 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java @@ -28,8 +28,8 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.Settings.NightDisplaySuggestionActivity; import com.android.settings.display.NightDisplayPreferenceController; -import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity; -import com.android.settings.fingerprint.FingerprintSuggestionActivity; +import com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity; +import com.android.settings.biometrics.fingerprint.FingerprintSuggestionActivity; import com.android.settings.notification.ZenOnboardingActivity; import com.android.settings.notification.ZenSuggestionActivity; import com.android.settings.overlay.FeatureFactory; diff --git a/src/com/android/settings/TimeoutListPreference.java b/src/com/android/settings/display/TimeoutListPreference.java similarity index 88% rename from src/com/android/settings/TimeoutListPreference.java rename to src/com/android/settings/display/TimeoutListPreference.java index a0e59068f5f..7512a145986 100644 --- a/src/com/android/settings/TimeoutListPreference.java +++ b/src/com/android/settings/display/TimeoutListPreference.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.display; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; @@ -24,13 +24,17 @@ import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.DialogInterface; import android.util.AttributeSet; +import android.util.Log; import android.view.View; +import com.android.settings.R; +import com.android.settings.RestrictedListPreference; import com.android.settingslib.RestrictedLockUtils; import java.util.ArrayList; public class TimeoutListPreference extends RestrictedListPreference { + private static final String TAG = "TimeoutListPreference"; private EnforcedAdmin mAdmin; private final CharSequence[] mInitialEntries; private final CharSequence[] mInitialValues; @@ -115,10 +119,11 @@ public class TimeoutListPreference extends RestrictedListPreference { // If the last one happens to be the same as the max timeout, select that setValue(String.valueOf(maxTimeout)); } else { - // There will be no highlighted selection since nothing in the list matches - // maxTimeout. The user can still select anything less than maxTimeout. - // TODO: maybe append maxTimeout to the list and mark selected. + // The selected time out value is longer than the max timeout allowed by the admin. + // Select the largest value from the list by default. + Log.w(TAG, "Default to longest timeout. Value disabled by admin:" + userPreference); + setValue(revisedValues.get(revisedValues.size() - 1).toString()); } } } -} \ No newline at end of file +} diff --git a/src/com/android/settings/display/TimeoutPreferenceController.java b/src/com/android/settings/display/TimeoutPreferenceController.java index 2beed89124d..2fbe388bcb9 100644 --- a/src/com/android/settings/display/TimeoutPreferenceController.java +++ b/src/com/android/settings/display/TimeoutPreferenceController.java @@ -23,7 +23,6 @@ import android.provider.Settings; import android.util.Log; import com.android.settings.R; -import com.android.settings.TimeoutListPreference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; @@ -71,12 +70,13 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im dpm.getMaximumTimeToLock(null /* admin */, UserHandle.myUserId()); timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin); } - updateTimeoutPreferenceDescription(timeoutListPreference, currentTimeout); + updateTimeoutPreferenceDescription(timeoutListPreference, + Long.parseLong(timeoutListPreference.getValue())); - EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( - mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, - UserHandle.myUserId()); - if(admin != null) { + final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( + mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, + UserHandle.myUserId()); + if (admin != null) { timeoutListPreference.removeUnusableTimeouts(0/* disable all*/, admin); } } diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java index 1dc8baadcee..68678dc427f 100644 --- a/src/com/android/settings/password/ChooseLockGeneric.java +++ b/src/com/android/settings/password/ChooseLockGeneric.java @@ -53,8 +53,8 @@ import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; -import com.android.settings.fingerprint.FingerprintEnrollBase; -import com.android.settings.fingerprint.FingerprintEnrollFindSensor; +import com.android.settings.biometrics.fingerprint.FingerprintEnrollBase; +import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedPreference; @@ -682,7 +682,7 @@ public class ChooseLockGeneric extends SettingsActivity { CharSequence errString) { Log.e(TAG, String.format( "Can't remove fingerprint %d in group %d. Reason: %s", - fp.getFingerId(), fp.getGroupId(), errString)); + fp.getBiometricId(), fp.getGroupId(), errString)); // TODO: need to proceed with the removal of managed profile // fingerprints and finish() gracefully. } diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java index 3f2675029d0..74207cd5631 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java @@ -53,7 +53,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.InstrumentedFragment; -import com.android.settings.fingerprint.FingerprintUiHelper; +import com.android.settings.biometrics.fingerprint.FingerprintUiHelper; /** * Base fragment to be shared for PIN/Pattern/Password confirmation fragments. diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java index 4258d76b624..0540bbff11e 100644 --- a/src/com/android/settings/password/SetupChooseLockGeneric.java +++ b/src/com/android/settings/password/SetupChooseLockGeneric.java @@ -31,7 +31,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.SetupEncryptionInterstitial; import com.android.settings.SetupWizardUtils; -import com.android.settings.fingerprint.SetupFingerprintEnrollFindSensor; +import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor; import com.android.settings.utils.SettingsDividerItemDecoration; import com.android.setupwizardlib.GlifPreferenceLayout; diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java index b5906184d14..30ac4025c83 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -29,8 +29,8 @@ import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.enterprise.EnterprisePrivacyPreferenceController; -import com.android.settings.fingerprint.FingerprintProfileStatusPreferenceController; -import com.android.settings.fingerprint.FingerprintStatusPreferenceController; +import com.android.settings.biometrics.fingerprint.FingerprintProfileStatusPreferenceController; +import com.android.settings.biometrics.fingerprint.FingerprintStatusPreferenceController; import com.android.settings.location.LocationPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.security.trustagent.ManageTrustAgentsPreferenceController; diff --git a/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java b/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java index e19ab484a7a..af1c01a2089 100644 --- a/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java +++ b/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java @@ -27,7 +27,7 @@ import android.util.Log; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; -import com.android.settings.TimeoutListPreference; +import com.android.settings.display.TimeoutListPreference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settings.security.trustagent.TrustAgentManager; diff --git a/src/com/android/settings/wifi/WifiInfoPreferenceController.java b/src/com/android/settings/wifi/WifiInfoPreferenceController.java index 445d6a4c983..d15c5086213 100644 --- a/src/com/android/settings/wifi/WifiInfoPreferenceController.java +++ b/src/com/android/settings/wifi/WifiInfoPreferenceController.java @@ -102,11 +102,12 @@ public class WifiInfoPreferenceController extends AbstractPreferenceController Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0); final String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); - if (TextUtils.isEmpty(macAddress)) { - mWifiMacAddressPref.setSummary(R.string.status_unavailable); - } else if (macRandomizationMode == 1 + if (macRandomizationMode == 1 && WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) { mWifiMacAddressPref.setSummary(R.string.wifi_status_mac_randomized); + } else if (TextUtils.isEmpty(macAddress) + || WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) { + mWifiMacAddressPref.setSummary(R.string.status_unavailable); } else { mWifiMacAddressPref.setSummary(macAddress); } diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable index 393fe61c490..45474e7096b 100644 --- a/tests/robotests/assets/grandfather_not_implementing_indexable +++ b/tests/robotests/assets/grandfather_not_implementing_indexable @@ -6,7 +6,7 @@ com.android.settings.accessibility.AccessibilitySettingsForSetupWizard com.android.settings.datausage.DataUsageList com.android.settings.vpn2.AppManagementFragment com.android.settings.vpn2.VpnSettings -com.android.settings.fingerprint.FingerprintSettings$FingerprintSettingsFragment +com.android.settings.biometrics.fingerprint.FingerprintSettings$FingerprintSettingsFragment com.android.settings.applications.ProcessStatsDetail com.android.settings.wifi.WifiInfo com.android.settings.applications.VrListenerSettings diff --git a/tests/robotests/src/com/android/settings/fingerprint/DeleteFingerprintDialogTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/DeleteFingerprintDialogTest.java similarity index 88% rename from tests/robotests/src/com/android/settings/fingerprint/DeleteFingerprintDialogTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/DeleteFingerprintDialogTest.java index d306d068d30..27729cf5728 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/DeleteFingerprintDialogTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/DeleteFingerprintDialogTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; @@ -23,8 +23,8 @@ import static org.mockito.Mockito.verify; import android.app.Dialog; import android.hardware.fingerprint.Fingerprint; -import com.android.settings.fingerprint.FingerprintSettings.FingerprintSettingsFragment; -import com.android.settings.fingerprint.FingerprintSettings.FingerprintSettingsFragment.DeleteFingerprintDialog; +import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment; +import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment.DeleteFingerprintDialog; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowFragment; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollEnrollingTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 8c8113be4cd..bee208fb71b 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java similarity index 99% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java index 1fe09310e76..338b3c002cb 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivityTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivityTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivityTest.java index 74d4b28a1b7..888b061022f 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivityTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivityTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoViewTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoViewTest.java similarity index 97% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoViewTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoViewTest.java index 24eb1ad671c..e8b27a8446f 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoViewTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoViewTest.java @@ -15,7 +15,7 @@ * */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintPreferenceTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintPreferenceTest.java similarity index 94% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintPreferenceTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintPreferenceTest.java index f8984ab93d3..8c90cb7b2ce 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintPreferenceTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; @@ -25,7 +25,7 @@ import android.view.View; import android.widget.FrameLayout; import com.android.settings.R; -import com.android.settings.fingerprint.FingerprintSettings.FingerprintPreference; +import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintPreference; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java index 583428e6c0f..fe3f5b06df6 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER; import static com.google.common.truth.Truth.assertThat; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintStatusPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java index e01ed3cf005..7fe114b6222 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintSuggestionActivityTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java index ee47f2a036c..310674e3bc7 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintSuggestionActivityTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.google.common.truth.Truth.assertThat; import static org.robolectric.RuntimeEnvironment.application; diff --git a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensorTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java index 85d7ad8212a..38127ef22e2 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java index 9e62511d6b2..bbdb443d2f8 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static com.google.common.truth.Truth.assertThat; import static org.robolectric.RuntimeEnvironment.application; @@ -27,7 +27,7 @@ import android.view.View; import android.widget.Button; import com.android.settings.R; -import com.android.settings.fingerprint.SetupFingerprintEnrollIntroductionTest.ShadowStorageManagerWrapper; +import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroductionTest.ShadowStorageManagerWrapper; import com.android.settings.password.SetupChooseLockGeneric.SetupChooseLockGenericFragment; import com.android.settings.password.SetupSkipDialog; import com.android.settings.password.StorageManagerWrapper; diff --git a/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java b/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java index 4224462f926..70cfa21df20 100644 --- a/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java +++ b/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java @@ -61,7 +61,7 @@ public class PreferenceXmlParserUtilsTest { @Test public void testDataTitleValid_ReturnsPreferenceTitle() { XmlResourceParser parser = getChildByType(R.xml.display_settings, - "com.android.settings.TimeoutListPreference"); + "com.android.settings.display.TimeoutListPreference"); final AttributeSet attrs = Xml.asAttributeSet(parser); String title = PreferenceXmlParserUtils.getDataTitle(mContext, attrs); String expTitle = mContext.getString(R.string.screen_timeout); @@ -80,7 +80,7 @@ public class PreferenceXmlParserUtilsTest { @Test public void testDataKeyValid_ReturnsPreferenceKey() { XmlResourceParser parser = getChildByType(R.xml.display_settings, - "com.android.settings.TimeoutListPreference"); + "com.android.settings.display.TimeoutListPreference"); final AttributeSet attrs = Xml.asAttributeSet(parser); String key = PreferenceXmlParserUtils.getDataKey(mContext, attrs); String expKey = "screen_timeout"; @@ -90,7 +90,7 @@ public class PreferenceXmlParserUtilsTest { @Test public void testDataSummaryValid_ReturnsPreferenceSummary() { XmlResourceParser parser = getChildByType(R.xml.display_settings, - "com.android.settings.TimeoutListPreference"); + "com.android.settings.display.TimeoutListPreference"); final AttributeSet attrs = Xml.asAttributeSet(parser); String summary = PreferenceXmlParserUtils.getDataSummary(mContext, attrs); String expSummary = mContext.getString(R.string.summary_placeholder); diff --git a/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java b/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java new file mode 100644 index 00000000000..0e40fb52b47 --- /dev/null +++ b/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.settings.display; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.mock; +import static org.robolectric.RuntimeEnvironment.application; + +import android.text.TextUtils; +import android.util.AttributeSet; + +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.ShadowUserManager; +import com.android.settingslib.RestrictedLockUtils; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; +import org.robolectric.util.ReflectionHelpers; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(shadows = ShadowUserManager.class) +public class TimeoutListPreferenceTest { + private static final CharSequence[] VALUES = + {"15000", "30000", "60000", "120000", "300000", "600000"}; + private static final CharSequence[] ENTRIES = {"15s", "30s", "1m", "2m", "5m", "10m"}; + + @Mock + private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin; + + private TimeoutListPreference mPreference; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mPreference = new TimeoutListPreference(application, mock(AttributeSet.class)); + ReflectionHelpers.setField(mPreference, "mInitialValues", VALUES); + ReflectionHelpers.setField(mPreference, "mInitialEntries", ENTRIES); + ReflectionHelpers.setField(mPreference, "mEntries", ENTRIES); + ReflectionHelpers.setField(mPreference, "mEntryValues", VALUES); + ReflectionHelpers.setField(mPreference, "mAdmin", mEnforcedAdmin); + } + + @Test + public void removeUnusableTimeouts_selectedValueRemoved_shouldSetValueToLargestAllowedValue() { + mPreference.setValue("600000"); // set to 10 minutes + mPreference.removeUnusableTimeouts(480000L, mEnforcedAdmin); // max allowed is 8 minutes + + // should set to largest allowed value, which is 5 minute + assertThat(mPreference.getValue()).isEqualTo("300000"); + } +} diff --git a/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java index 8627d5f1f1e..0447bbbcfac 100644 --- a/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java @@ -18,9 +18,8 @@ package com.android.settings.display; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; import static com.google.common.truth.Truth.assertThat; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -31,11 +30,13 @@ import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; -import com.android.settings.TimeoutListPreference; +import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowDevicePolicyManager; +import com.android.settings.testutils.shadow.ShadowRestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -55,6 +56,7 @@ public class TimeoutPreferenceControllerTest { private static final int TIMEOUT = 30; private static final String KEY_SCREEN_TIMEOUT = "screen_timeout"; + private static final String DEFAULT_TIMEOUT = "300000"; // 5 minutes private Context mContext; @Mock @@ -69,9 +71,15 @@ public class TimeoutPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); + when(mPreference.getValue()).thenReturn(DEFAULT_TIMEOUT); mController = new TimeoutPreferenceController(mContext, KEY_SCREEN_TIMEOUT); } + @After + public void tearDown() { + ShadowRestrictedLockUtils.reset(); + } + @Test public void testOnPreferenceChange_SetTimeout_ReturnCorrectTimeout() { mController.onPreferenceChange(mPreference, Integer.toString(TIMEOUT)); @@ -125,7 +133,28 @@ public class TimeoutPreferenceControllerTest { verify(mPreference, times(2)) .removeUnusableTimeouts(longCaptor.capture(), adminCaptor.capture()); - assertEquals(0, (long) longCaptor.getValue()); - assertTrue(adminCaptor.getValue() != null); + assertThat((long) longCaptor.getValue()).isEqualTo(0); + assertThat(adminCaptor.getValue()).isNotNull(); + } + + @Test + @Config(shadows = ShadowRestrictedLockUtils.class) + public void updateState_selectedTimeoutLargerThanAdminMax_shouldSetSummaryToUpdatedPrefValue() { + final int profileUserId = UserHandle.myUserId(); + final long allowedTimeout = 480000L; // 8 minutes + when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList()); + ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, allowedTimeout); + ShadowRestrictedLockUtils.setMaximumTimeToLockIsSet(true); + final CharSequence[] timeouts = {"15000", "30000", "60000", "120000", "300000", "600000"}; + final CharSequence[] summaries = {"15s", "30s", "1m", "2m", "5m", "10m"}; + // set current timeout to be 10 minutes, which is longer than the allowed 8 minutes + Settings.System.putLong(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, 600000L); + when(mPreference.getEntries()).thenReturn(summaries); + when(mPreference.getEntryValues()).thenReturn(timeouts); + when(mPreference.getValue()).thenReturn("300000"); + + mController.updateState(mPreference); + + verify(mPreference).setSummary(mContext.getString(R.string.screen_timeout_summary, "5m")); } } diff --git a/tests/robotests/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceControllerTest.java index 2a4b335cfa3..c5e10e06bd4 100644 --- a/tests/robotests/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceControllerTest.java @@ -30,7 +30,7 @@ import android.os.UserManager; import android.provider.Settings; import com.android.internal.widget.LockPatternUtils; -import com.android.settings.TimeoutListPreference; +import com.android.settings.display.TimeoutListPreference; import com.android.settings.security.trustagent.TrustAgentManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; diff --git a/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java b/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java index a6acf2773eb..38d9ce5ba71 100644 --- a/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java +++ b/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java @@ -28,8 +28,8 @@ import android.content.res.Resources; import com.android.settings.R; import com.android.settings.Settings; -import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity; -import com.android.settings.fingerprint.FingerprintSuggestionActivity; +import com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity; +import com.android.settings.biometrics.fingerprint.FingerprintSuggestionActivity; import com.android.settings.notification.ZenSuggestionActivity; import com.android.settings.support.NewDeviceIntroSuggestionActivity; import com.android.settings.testutils.SettingsRobolectricTestRunner; diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtils.java index c6197e7c44a..d1cedec545f 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtils.java @@ -33,6 +33,7 @@ public class ShadowRestrictedLockUtils { private static boolean sIsRestricted; private static boolean sAdminSupportDetailsIntentLaunched; private static boolean sHasSystemFeature; + private static boolean sMaximumTimeToLockIsSet; private static String[] sRestrictedPkgs; private static DevicePolicyManager sDevicePolicyManager; private static String[] sDisabledTypes; @@ -45,6 +46,7 @@ public class ShadowRestrictedLockUtils { sAdminSupportDetailsIntentLaunched = false; sKeyguardDisabledFeatures = 0; sDisabledTypes = new String[0]; + sMaximumTimeToLockIsSet = false; } @Implementation @@ -101,6 +103,11 @@ public class ShadowRestrictedLockUtils { return sIsRestricted ? new EnforcedAdmin() : null; } + @Implementation + public static EnforcedAdmin checkIfMaximumTimeToLockIsSet(Context context) { + return sMaximumTimeToLockIsSet ? new EnforcedAdmin() : null; + } + public static boolean hasAdminSupportDetailsIntentLaunched() { return sAdminSupportDetailsIntentLaunched; } @@ -136,4 +143,9 @@ public class ShadowRestrictedLockUtils { public static void setKeyguardDisabledFeatures(int features) { sKeyguardDisabledFeatures = features; } + + public static void setMaximumTimeToLockIsSet(boolean isSet) { + sMaximumTimeToLockIsSet = isSet; + } + } diff --git a/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java index 3a8ced58bd3..d2e8cb8d5e7 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java @@ -79,6 +79,7 @@ public class WifiInfoPreferenceControllerTest { .thenReturn(mMacPreference) .thenReturn(mIpPreference); when(mWifiManager.getConnectionInfo()).thenReturn(mWifiInfo); + when(mWifiManager.getCurrentNetwork()).thenReturn(null); mController = new WifiInfoPreferenceController(mContext, mLifecycle, mWifiManager); } @@ -103,7 +104,6 @@ public class WifiInfoPreferenceControllerTest { @Test public void onResume_shouldUpdateWifiInfo() { - when(mWifiManager.getCurrentNetwork()).thenReturn(null); when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS); mController.displayPreference(mScreen); @@ -114,22 +114,98 @@ public class WifiInfoPreferenceControllerTest { } @Test - public void testUpdateMacAddress() { - when(mWifiManager.getCurrentNetwork()).thenReturn(null); + public void updateWifiInfo_nullWifiInfoWithMacRandomizationOff_setMacUnavailable() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0); + mController.displayPreference(mScreen); + when(mWifiManager.getConnectionInfo()).thenReturn(null); + + mController.updateWifiInfo(); + + verify(mMacPreference).setSummary(R.string.status_unavailable); + } + + @Test + public void updateWifiInfo_nullMacWithMacRandomizationOff_setMacUnavailable() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0); + mController.displayPreference(mScreen); + when(mWifiInfo.getMacAddress()).thenReturn(null); + + mController.updateWifiInfo(); + + verify(mMacPreference).setSummary(R.string.status_unavailable); + } + + @Test + public void updateWifiInfo_defaultMacWithMacRandomizationOff_setMacUnavailable() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0); + mController.displayPreference(mScreen); + when(mWifiInfo.getMacAddress()).thenReturn(WifiInfo.DEFAULT_MAC_ADDRESS); + + mController.updateWifiInfo(); + + verify(mMacPreference).setSummary(R.string.status_unavailable); + } + + @Test + public void updateWifiInfo_validMacWithMacRandomizationOff_setValidMac() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0); + mController.displayPreference(mScreen); + when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS); + + mController.updateWifiInfo(); + + verify(mMacPreference).setSummary(TEST_MAC_ADDRESS); + } + + @Test + public void updateWifiInfo_nullWifiInfoWithMacRandomizationOn_setMacUnavailable() { Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1); mController.displayPreference(mScreen); + when(mWifiManager.getConnectionInfo()).thenReturn(null); - when(mWifiInfo.getMacAddress()).thenReturn(null); mController.updateWifiInfo(); + verify(mMacPreference).setSummary(R.string.status_unavailable); + } + @Test + public void updateWifiInfo_nullMacWithMacRandomizationOn_setMacUnavailable() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1); + mController.displayPreference(mScreen); + when(mWifiInfo.getMacAddress()).thenReturn(null); + + mController.updateWifiInfo(); + + verify(mMacPreference).setSummary(R.string.status_unavailable); + } + + @Test + public void updateWifiInfo_defaultMacWithMacRandomizationOn_setMacRandomized() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1); + mController.displayPreference(mScreen); when(mWifiInfo.getMacAddress()).thenReturn(WifiInfo.DEFAULT_MAC_ADDRESS); - mController.updateWifiInfo(); - verify(mMacPreference).setSummary(R.string.wifi_status_mac_randomized); - when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS); mController.updateWifiInfo(); + + verify(mMacPreference).setSummary(R.string.wifi_status_mac_randomized); + } + + @Test + public void updateWifiInfo_validMacWithMacRandomizationOn_setValidMac() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1); + mController.displayPreference(mScreen); + when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS); + + mController.updateWifiInfo(); + verify(mMacPreference).setSummary(TEST_MAC_ADDRESS); } } diff --git a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollFinishTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java similarity index 98% rename from tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollFinishTest.java rename to tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java index b09d1bf116e..da25ac04999 100644 --- a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollFinishTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static android.support.test.InstrumentationRegistry.getTargetContext; import static android.support.test.espresso.Espresso.onView; diff --git a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java similarity index 98% rename from tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollIntroductionTest.java rename to tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java index 235ba1e43f0..e937b7f85e6 100644 --- a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollIntroductionTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import static org.mockito.Matchers.anyInt;