-
-
Notifications
You must be signed in to change notification settings - Fork 72
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Auto Pin Confirm]: Changes to allow PIN auto confirm feature to be c…
…ontrollable by the user - Add SwitchPreference to allow user to control the pin auto confirm feature - Add Checkbox option during the PIN setup in Security app - Disable the opt-in checkbox during SUW entry point for PIN setup - Update SwitchPreference availability appropriately according to current PIN length - Update the pin_auto_confirm setting appropriately according to state of switchPreference or checkbox state (in PIN setup) - Update the error-message when PIN Too short to let user know six digit is recommended Bug: 262926000 Bug: 262936383 Bug: 262934702 Bug: 262935305 Test: Manual Test Test: atest SettingsRoboTests Change-Id: Ib9e09bd5ce44652158e77f80e8be19c4dd50f3bf
- Loading branch information
Avinash Vadlamudi
committed
Jan 30, 2023
1 parent
5135787
commit 4c8ad8f
Showing
12 changed files
with
551 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<!-- | ||
~ Copyright (C) 2023 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. | ||
--> | ||
|
||
<selector xmlns:android="http://schemas.android.com/apk/res/android"> | ||
<item | ||
android:state_checked="true" | ||
android:drawable="@drawable/ic_check_circle_filled_24dp" /> | ||
<item | ||
android:state_checked="false" | ||
android:drawable="@drawable/ic_circle_outline_24dp" /> | ||
</selector> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<!-- | ||
~ Copyright (C) 2023 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. | ||
--> | ||
|
||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" | ||
android:width="24dp" | ||
android:height="24dp" | ||
android:viewportWidth="24" | ||
android:viewportHeight="24" | ||
android:tint="?androidprv:attr/colorAccentPrimaryVariant"> | ||
<path | ||
android:fillColor="@android:color/white" | ||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10c5.52,0 10,-4.48 10,-10S17.52,2 12,2zM10.59,16.6l-4.24,-4.24l1.41,-1.41l2.83,2.83l5.66,-5.66l1.41,1.41L10.59,16.6z"/> | ||
</vector> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<!-- | ||
~ Copyright (C) 2023 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. | ||
--> | ||
|
||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:width="24dp" | ||
android:height="24dp" | ||
android:viewportWidth="24" | ||
android:viewportHeight="24" | ||
android:tint="?attr/colorControlNormal"> | ||
<path | ||
android:fillColor="@android:color/white" | ||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/> | ||
</vector> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
src/com/android/settings/security/screenlock/AutoPinConfirmPreferenceController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
* Copyright (C) 2023 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.security.screenlock; | ||
|
||
import android.content.Context; | ||
|
||
import androidx.preference.Preference; | ||
import androidx.preference.TwoStatePreference; | ||
|
||
import com.android.internal.widget.LockPatternUtils; | ||
import com.android.settings.core.PreferenceControllerMixin; | ||
import com.android.settingslib.core.AbstractPreferenceController; | ||
|
||
/** | ||
* Preference controller for the pin_auto_confirm setting. | ||
*/ | ||
public class AutoPinConfirmPreferenceController extends AbstractPreferenceController implements | ||
PreferenceControllerMixin, Preference.OnPreferenceChangeListener { | ||
|
||
private static final String PREF_KEY_PIN_AUTO_CONFIRM = "auto_pin_confirm"; | ||
private static final long MIN_AUTO_PIN_REQUIREMENT_LENGTH = 6L; | ||
|
||
private final int mUserId; | ||
private final LockPatternUtils mLockPatternUtils; | ||
|
||
public AutoPinConfirmPreferenceController(Context context, int userId, | ||
LockPatternUtils lockPatternUtils) { | ||
super(context); | ||
mUserId = userId; | ||
mLockPatternUtils = lockPatternUtils; | ||
} | ||
|
||
@Override | ||
public boolean onPreferenceChange(Preference preference, Object newValue) { | ||
setPinAutoConfirmSettingState((boolean) newValue); | ||
return true; | ||
} | ||
|
||
@Override | ||
public void updateState(Preference preference) { | ||
((TwoStatePreference) preference).setChecked(getPinAutoConfirmSettingState()); | ||
} | ||
|
||
@Override | ||
public boolean isAvailable() { | ||
return mLockPatternUtils.isAutoPinConfirmFeatureAvailable() && isPinLock() | ||
&& isPinLengthEligibleForAutoConfirmation(); | ||
} | ||
|
||
@Override | ||
public String getPreferenceKey() { | ||
return PREF_KEY_PIN_AUTO_CONFIRM; | ||
} | ||
|
||
private boolean isPinLock() { | ||
return mLockPatternUtils.getCredentialTypeForUser(mUserId) | ||
== LockPatternUtils.CREDENTIAL_TYPE_PIN; | ||
} | ||
|
||
private boolean isPinLengthEligibleForAutoConfirmation() { | ||
return mLockPatternUtils.getPinLength(mUserId) >= MIN_AUTO_PIN_REQUIREMENT_LENGTH; | ||
} | ||
|
||
private boolean getPinAutoConfirmSettingState() { | ||
return mLockPatternUtils.isAutoPinConfirmEnabled(mUserId); | ||
} | ||
|
||
private void setPinAutoConfirmSettingState(boolean state) { | ||
mLockPatternUtils.setAutoPinConfirm(state, mUserId); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.