diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 54dea11b08d..71e16f0a183 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -1418,4 +1418,9 @@ @color/screen_flash_preset_opacity_color_11 @color/screen_flash_preset_opacity_color_12 + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 3df3ceb4932..bdf9107e0ab 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3916,8 +3916,8 @@ Caps lock Ctrl - - Meta + + Action key Alt @@ -4100,18 +4100,20 @@ Experimental Feature flags - - Snoop Logger Filters - - Set filters (Toggle Bluetooth after changing this setting) - - Snoop Logger Filter PBAP - - Snoop Logger Filter MAP - - Set filtering mode. (Toggle Bluetooth after changing this setting) - - Enable Snoop Log Mode Filtered to change this option. + + Bluetooth HCI snoop log filtering + + Set filters + + Disable and enable Bluetooth for the changes to take effect + + Bluetooth HCI snoop log filtering PBAP + + Bluetooth HCI snoop log filtering MAP + + Set filtering mode. (Disable and enable Bluetooth for the changes to take effect) + + Set Bluetooth HCI snoop log mode to Enabled Filtered to change this option Talkback @@ -7784,12 +7786,12 @@ - %1$s will be able to read all notifications, + The %1$s app will be able to read all notifications, including personal information such as contact names, photos, and the text of messages you receive. This app will also be able to snooze or dismiss notifications or take action on buttons in notifications, including answering phone calls. \n\nThis will also give the app the ability to turn Do Not Disturb on or off and change related settings. - %1$s will be able to: + The %1$s app will be able to: Read your notifications It can read your notifications, including personal information such as contacts, messages, and photos. Reply to messages diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index ae93eed13ae..7e720c908e0 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -83,7 +83,7 @@ diff --git a/res/xml/snoop_logger_filters_settings.xml b/res/xml/snoop_logger_filters_settings.xml index c804ec67855..abc2546591e 100644 --- a/res/xml/snoop_logger_filters_settings.xml +++ b/res/xml/snoop_logger_filters_settings.xml @@ -18,7 +18,7 @@ + android:title="@string/bt_hci_snoop_log_filters_dashboard_title" > + + diff --git a/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.java b/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.java index 8f2083ff8a0..59c3f60c8f6 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimEidPreferenceController.java @@ -162,7 +162,7 @@ public class SimEidPreferenceController extends BasePreferenceController mShowEidOnSummary = true; dialogShwon.setOnDismissListener(dlg -> { - mPreference.setSummary(getSummary()); + mPreference.setSummary(PhoneNumberUtil.expandByTts(getSummary())); }); } diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 339cabe52d1..5b40e93bf8f 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -152,6 +152,11 @@ public interface PowerUsageFeatureProvider { */ Set getOthersSystemComponentSet(); + /** + * Returns {@link Set} for the custom system component names which are combined into others + */ + Set getOthersCustomComponentNameSet(); + /** * Returns {@link Set} for hiding system component ids in the usage screen */ diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 5d1e2e56bab..b6858fc6977 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -172,6 +172,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider return new ArraySet<>(); } + @Override + public Set getOthersCustomComponentNameSet() { + return new ArraySet<>(); + } + @Override public Set getHideSystemComponentSet() { return new ArraySet<>(); diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java index f13a4ef6d7d..d192e1ab924 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java @@ -20,7 +20,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.res.Configuration; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -68,8 +67,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private static final String KEY_DAILY_CHART_INDEX = "daily_chart_index"; private static final String KEY_HOURLY_CHART_INDEX = "hourly_chart_index"; - private static int sUiMode = Configuration.UI_MODE_NIGHT_UNDEFINED; - /** * A callback listener for battery usage is updated. * This happens when battery usage data is ready or the selected index is changed. @@ -167,14 +164,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll @Override public void onResume() { - final int currentUiMode = - mContext.getResources().getConfiguration().uiMode - & Configuration.UI_MODE_NIGHT_MASK; - if (sUiMode != currentUiMode) { - sUiMode = currentUiMode; - BatteryDiffEntry.clearCache(); - Log.d(TAG, "clear icon and label cache since uiMode is changed"); - } mIs24HourFormat = DateFormat.is24HourFormat(mContext); mMetricsFeatureProvider.action(mPrefContext, SettingsEnums.OPEN_BATTERY_USAGE); } diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java index a07cfdde856..67613ff406c 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java @@ -17,6 +17,7 @@ package com.android.settings.fuelgauge.batteryusage; import android.content.Context; +import android.os.BatteryConsumer; import androidx.annotation.NonNull; @@ -151,11 +152,17 @@ public class BatteryDiffData { final PowerUsageFeatureProvider featureProvider, final List systemEntries) { final Set othersSystemComponentSet = featureProvider.getOthersSystemComponentSet(); + final Set othersCustomComponentNameSet = + featureProvider.getOthersCustomComponentNameSet(); BatteryDiffEntry.OthersBatteryDiffEntry othersDiffEntry = null; final Iterator systemListIterator = systemEntries.iterator(); while (systemListIterator.hasNext()) { final BatteryDiffEntry batteryDiffEntry = systemListIterator.next(); - if (othersSystemComponentSet.contains(batteryDiffEntry.mBatteryHistEntry.mDrainType)) { + final int componentId = batteryDiffEntry.mBatteryHistEntry.mDrainType; + if (othersSystemComponentSet.contains(componentId) || ( + componentId >= BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + && othersCustomComponentNameSet.contains( + batteryDiffEntry.getAppLabel()))) { if (othersDiffEntry == null) { othersDiffEntry = new BatteryDiffEntry.OthersBatteryDiffEntry(context); } diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java index d4701d0ad75..485c806850a 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage; import android.app.settings.SettingsEnums; import android.content.Context; +import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Looper; @@ -43,6 +44,7 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnDestroy; +import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.widget.FooterPreference; import java.util.HashMap; @@ -51,15 +53,15 @@ import java.util.Map; /** Controller for battery usage breakdown preference group. */ public class BatteryUsageBreakdownController extends BasePreferenceController - implements LifecycleObserver, OnDestroy { + implements LifecycleObserver, OnResume, OnDestroy { private static final String TAG = "BatteryUsageBreakdownController"; private static final String ROOT_PREFERENCE_KEY = "battery_usage_breakdown"; private static final String FOOTER_PREFERENCE_KEY = "battery_usage_footer"; private static final String SPINNER_PREFERENCE_KEY = "battery_usage_spinner"; private static final String APP_LIST_PREFERENCE_KEY = "app_list"; private static final String PACKAGE_NAME_NONE = "none"; - private static final int ENABLED_ICON_ALPHA = 255; - private static final int DISABLED_ICON_ALPHA = 255 / 3; + + private static int sUiMode = Configuration.UI_MODE_NIGHT_UNDEFINED; private final SettingsActivity mActivity; private final InstrumentedPreferenceFragment mFragment; @@ -98,6 +100,19 @@ public class BatteryUsageBreakdownController extends BasePreferenceController } } + @Override + public void onResume() { + final int currentUiMode = + mContext.getResources().getConfiguration().uiMode + & Configuration.UI_MODE_NIGHT_MASK; + if (sUiMode != currentUiMode) { + sUiMode = currentUiMode; + BatteryDiffEntry.clearCache(); + mPreferenceCache.clear(); + Log.d(TAG, "clear icon and label cache since uiMode is changed"); + } + } + @Override public void onDestroy() { mHandler.removeCallbacksAndMessages(/*token=*/ null); @@ -268,12 +283,11 @@ public class BatteryUsageBreakdownController extends BasePreferenceController pref.setSingleLineTitle(true); // Sets the BatteryDiffEntry to preference for launching detailed page. pref.setBatteryDiffEntry(entry); - pref.setEnabled(entry.validForRestriction()); + pref.setSelectable(entry.validForRestriction()); setPreferenceSummary(pref, entry); if (!isAdded) { mAppListPreferenceGroup.addPreference(pref); } - appIcon.setAlpha(pref.isEnabled() ? ENABLED_ICON_ALPHA : DISABLED_ICON_ALPHA); prefIndex++; } Log.d(TAG, String.format("addAllPreferences() is finished in %d/ms", diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java index 4ab1f42ef06..0aee8a57671 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java +++ b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java @@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batteryusage; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import androidx.preference.PreferenceViewHolder; @@ -37,6 +39,10 @@ import com.android.settingslib.widget.AppPreference; public class PowerGaugePreference extends AppPreference { private static final double PERCENTAGE_TO_SHOW_THRESHOLD = 1f; + // Please see go/battery-usage-app-list-alpha + private static final float SELECTABLE_ALPHA = 1f; + private static final float UNSELECTABLE_ALPHA_LIGHT_MODE = 0.65f; + private static final float UNSELECTABLE_ALPHA_DARK_MODE = 0.5f; private BatteryEntry mInfo; private BatteryDiffEntry mBatteryDiffEntry; @@ -125,6 +131,11 @@ public class PowerGaugePreference extends AppPreference { public void onBindViewHolder(PreferenceViewHolder view) { super.onBindViewHolder(view); + final boolean isNightMode = Utils.isNightMode(getContext()); + final float alpha = isSelectable() ? SELECTABLE_ALPHA + : (isNightMode ? UNSELECTABLE_ALPHA_DARK_MODE : UNSELECTABLE_ALPHA_LIGHT_MODE); + setViewAlpha(view.itemView, alpha); + final TextView subtitle = (TextView) view.findViewById(R.id.widget_summary); subtitle.setText(mProgress); if (mShowAnomalyIcon) { @@ -138,4 +149,15 @@ public class PowerGaugePreference extends AppPreference { titleView.setContentDescription(mContentDescription); } } + + private static void setViewAlpha(View view, float alpha) { + if (view instanceof ViewGroup) { + final ViewGroup viewGroup = (ViewGroup) view; + for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) { + setViewAlpha(viewGroup.getChildAt(i), alpha); + } + } else { + view.setAlpha(alpha); + } + } } diff --git a/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java b/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java index b016f221392..291ce455a97 100644 --- a/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java +++ b/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java @@ -54,6 +54,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { private Preference mPreference; private String mKeyDefaultName; + private String mKeyFocus; private Context mContext; private InputManager mIm; @@ -72,6 +73,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { public ModifierKeysPickerDialogFragment(Preference preference, InputManager inputManager) { mPreference = preference; mKeyDefaultName = preference.getTitle().toString(); + mKeyFocus = preference.getSummary().toString(); mIm = inputManager; } @@ -101,11 +103,11 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { ModifierKeyAdapter adapter = new ModifierKeyAdapter(modifierKeys); ListView listView = dialoglayout.findViewById(R.id.modifier_key_picker); listView.setAdapter(adapter); + setInitialFocusItem(modifierKeys, adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { adapter.setCurrentItem(i); - adapter.setClick(true); adapter.notifyDataSetChanged(); } }); @@ -165,13 +167,22 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { return modifierKeyDialog; } + private void setInitialFocusItem( + List modifierKeys, ModifierKeyAdapter adapter) { + if (modifierKeys.indexOf(mKeyFocus) == -1) { + adapter.setCurrentItem(modifierKeys.indexOf(mKeyDefaultName)); + } else { + adapter.setCurrentItem(modifierKeys.indexOf(mKeyFocus)); + } + adapter.notifyDataSetChanged(); + } + private static boolean isKeyCapsLock(Context context, String key) { return key.equals(context.getString(R.string.modifier_keys_caps_lock)); } class ModifierKeyAdapter extends BaseAdapter { private int mCurrentItem = 0; - private boolean mIsClick = false; private List mList; ModifierKeyAdapter(List list) { @@ -201,12 +212,15 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { TextView textView = view.findViewById(R.id.modifier_key_text); ImageView checkIcon = view.findViewById(R.id.modifier_key_check_icon); textView.setText(mList.get(i)); - if (mCurrentItem == i && mIsClick) { + if (mCurrentItem == i) { textView.setTextColor(getColorOfColorAccentPrimaryVariant()); checkIcon.setImageAlpha(255); + view.setBackground( + mContext.getDrawable(R.drawable.modifier_key_lisetview_background)); } else { textView.setTextColor(getColorOfTextColorPrimary()); checkIcon.setImageAlpha(0); + view.setBackground(null); } return view; } @@ -218,10 +232,6 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { public int getCurrentItem() { return this.mCurrentItem; } - - public void setClick(boolean click) { - this.mIsClick = click; - } } private int getColorOfTextColorPrimary() { diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 7f94f73a068..9fb80a5d412 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -22,6 +22,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; @@ -244,6 +245,24 @@ public class EnabledNetworkModePreferenceController extends // TODO: Using the carrier config. mDisplay3gOptions = getResourcesForSubId().getBoolean( R.bool.config_display_network_mode_3g_option); + + int[] carriersWithout3gMenu = getResourcesForSubId().getIntArray( + R.array.network_mode_3g_deprecated_carrier_id); + if ((carriersWithout3gMenu != null) && (carriersWithout3gMenu.length > 0)) { + SubscriptionManager sm = mContext.getSystemService(SubscriptionManager.class); + SubscriptionInfo subInfo = sm.getActiveSubscriptionInfo(mSubId); + if (subInfo != null) { + int carrierId = subInfo.getCarrierId(); + + for (int idx = 0; idx < carriersWithout3gMenu.length; idx++) { + if (carrierId == carriersWithout3gMenu[idx]) { + mDisplay3gOptions = false; + break; + } + } + } + } + mLteEnabled = carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL); } Log.d(LOG_TAG, "PreferenceEntriesBuilder: subId" + mSubId diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java index 55e01b0a0c0..00ba2921a18 100644 --- a/src/com/android/settings/password/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -831,7 +831,7 @@ public class ChooseLockPassword extends SettingsActivity { mIsAlphaMode ? R.string.lockpassword_password_too_short : R.string.lockpassword_pin_too_short); - if (mLockPatternUtils.isAutoPinConfirmFeatureAvailable() + if (LockPatternUtils.isAutoPinConfirmFeatureAvailable() && !mIsAlphaMode && error.requirement < MIN_AUTO_PIN_REQUIREMENT_LENGTH) { Map arguments = new HashMap<>(); @@ -929,7 +929,7 @@ public class ChooseLockPassword extends SettingsActivity { } private void setAutoPinConfirmOption(boolean enabled, int length) { - if (!mLockPatternUtils.isAutoPinConfirmFeatureAvailable() + if (!LockPatternUtils.isAutoPinConfirmFeatureAvailable() || mAutoPinConfirmOption == null) { return; } diff --git a/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceController.java b/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceController.java index 75af1faf2c9..ff4a8b7924c 100644 --- a/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceController.java +++ b/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceController.java @@ -57,7 +57,7 @@ public class AutoPinConfirmPreferenceController extends AbstractPreferenceContro @Override public boolean isAvailable() { - return mLockPatternUtils.isAutoPinConfirmFeatureAvailable() && isPinLock() + return LockPatternUtils.isAutoPinConfirmFeatureAvailable() && isPinLock() && isPinLengthEligibleForAutoConfirmation(); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index 840ab3431cf..f312936db7b 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -157,7 +157,7 @@ public final class BatteryUsageBreakdownControllerTest { assertThat(pref.getOrder()).isEqualTo(1); assertThat(pref.getBatteryDiffEntry()).isSameInstanceAs(mBatteryDiffEntry); assertThat(pref.isSingleLineTitle()).isTrue(); - assertThat(pref.isEnabled()).isFalse(); + assertThat(pref.isSelectable()).isFalse(); } @Test diff --git a/tests/robotests/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceControllerTest.java index 370b214eb5e..55e1f1a23c7 100644 --- a/tests/robotests/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceControllerTest.java @@ -16,17 +16,23 @@ package com.android.settings.security.screenlock; +import static android.provider.DeviceConfig.NAMESPACE_AUTO_PIN_CONFIRMATION; + +import static com.android.internal.widget.LockPatternUtils.FLAG_ENABLE_AUTO_PIN_CONFIRMATION; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.provider.DeviceConfig; import androidx.preference.SwitchPreference; import androidx.test.core.app.ApplicationProvider; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.testutils.shadow.ShadowDeviceConfig; import org.junit.Before; import org.junit.Test; @@ -34,8 +40,10 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) +@Config(shadows = {ShadowDeviceConfig.class}) public class AutoPinConfirmPreferenceControllerTest { private static final Integer TEST_USER_ID = 1; @Mock @@ -54,16 +62,18 @@ public class AutoPinConfirmPreferenceControllerTest { @Test public void isAvailable_featureEnabledAndLockSetToNone_shouldReturnFalse() { + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "true", /* makeDefault */ false); when(mLockPatternUtils.isSecure(TEST_USER_ID)).thenReturn(true); - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(true); assertThat(mController.isAvailable()).isFalse(); } @Test public void isAvailable_featureEnabledAndLockSetToPassword_shouldReturnFalse() { + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "true", /* makeDefault */ false); when(mLockPatternUtils.isSecure(TEST_USER_ID)).thenReturn(true); - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(true); when(mLockPatternUtils.getCredentialTypeForUser(TEST_USER_ID)) .thenReturn(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD); @@ -72,7 +82,8 @@ public class AutoPinConfirmPreferenceControllerTest { @Test public void isAvailable_featureEnabledAndLockSetToPIN_lengthLessThanSix_shouldReturnFalse() { - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(true); + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "true", /* makeDefault */ false); when(mLockPatternUtils.getCredentialTypeForUser(TEST_USER_ID)) .thenReturn(LockPatternUtils.CREDENTIAL_TYPE_PIN); when(mLockPatternUtils.getPinLength(TEST_USER_ID)).thenReturn(5L); @@ -82,8 +93,9 @@ public class AutoPinConfirmPreferenceControllerTest { @Test public void isAvailable_featureEnabledAndLockSetToPIN_lengthMoreThanEqSix_shouldReturnTrue() { + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "true", /* makeDefault */ false); when(mLockPatternUtils.isSecure(TEST_USER_ID)).thenReturn(true); - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(true); when(mLockPatternUtils.getCredentialTypeForUser(TEST_USER_ID)) .thenReturn(LockPatternUtils.CREDENTIAL_TYPE_PIN); when(mLockPatternUtils.getPinLength(TEST_USER_ID)).thenReturn(6L); @@ -93,7 +105,8 @@ public class AutoPinConfirmPreferenceControllerTest { @Test public void isAvailable_featureDisabledAndLockSetToPIN_shouldReturnFalse() { - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(false); + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "false", /* makeDefault */ false); when(mLockPatternUtils.isSecure(TEST_USER_ID)).thenReturn(true); when(mLockPatternUtils.getCredentialTypeForUser(TEST_USER_ID)) .thenReturn(LockPatternUtils.CREDENTIAL_TYPE_PIN); @@ -103,7 +116,8 @@ public class AutoPinConfirmPreferenceControllerTest { @Test public void updateState_ChangingSettingState_shouldSetPreferenceToAppropriateCheckedState() { - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(true); + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "true", /* makeDefault */ false); // When auto_pin_confirm setting is disabled, switchPreference is unchecked when(mLockPatternUtils.isAutoPinConfirmEnabled(TEST_USER_ID)).thenReturn(false); mController.updateState(mPreference); @@ -117,7 +131,8 @@ public class AutoPinConfirmPreferenceControllerTest { @Test public void onPreferenceChange_shouldUpdatePinAutoConfirmSetting() { - when(mLockPatternUtils.isAutoPinConfirmFeatureAvailable()).thenReturn(true); + DeviceConfig.setProperty(NAMESPACE_AUTO_PIN_CONFIRMATION, FLAG_ENABLE_AUTO_PIN_CONFIRMATION, + "true", /* makeDefault */ false); mController.onPreferenceChange(mPreference, /* newValue= */ true); verify(mLockPatternUtils).setAutoPinConfirm(true, TEST_USER_ID); }