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;