Add bp subtitle for WiFi sharing

Move the screen lock message selection logic to Utils and update the
related strings as suzannechen@ suggested.

Test: manual (see bug)
Test: atest UtilsTest
Fixes: 291307701
Change-Id: I346c25426395eea1320edc07ce2d962efeb8daa6
This commit is contained in:
Wenhui Yang
2023-07-26 17:12:53 +00:00
parent a94cfc7b76
commit cf8ba456bb
5 changed files with 170 additions and 43 deletions

View File

@@ -16,9 +16,15 @@
package com.android.settings;
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PASSWORD;
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PATTERN;
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PIN;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
@@ -31,6 +37,7 @@ import static org.mockito.Mockito.when;
import android.app.ActionBar;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyResourcesManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -60,6 +67,7 @@ import android.widget.TextView;
import androidx.core.graphics.drawable.IconCompat;
import androidx.fragment.app.FragmentActivity;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
import org.junit.After;
@@ -94,6 +102,8 @@ public class UtilsTest {
@Mock
private DevicePolicyManager mDevicePolicyManager;
@Mock
private DevicePolicyResourcesManager mDevicePolicyResourcesManager;
@Mock
private UserManager mMockUserManager;
@Mock
private PackageManager mPackageManager;
@@ -348,4 +358,103 @@ public class UtilsTest {
SecurityException.class,
() -> Utils.checkUserOwnsFrpCredential(mContext, 123));
}
@Test
public void getConfirmCredentialStringForUser_Pin_shouldReturnCorrectString() {
setUpForConfirmCredentialString(false /* isEffectiveUserManagedProfile */);
when(mContext.getString(R.string.lockpassword_confirm_your_pin_generic))
.thenReturn("PIN");
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_PIN);
assertThat(confirmCredentialString).isEqualTo("PIN");
}
@Test
public void getConfirmCredentialStringForUser_Pattern_shouldReturnCorrectString() {
setUpForConfirmCredentialString(false /* isEffectiveUserManagedProfile */);
when(mContext.getString(R.string.lockpassword_confirm_your_pattern_generic))
.thenReturn("PATTERN");
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_PATTERN);
assertThat(confirmCredentialString).isEqualTo("PATTERN");
}
@Test
public void getConfirmCredentialStringForUser_Password_shouldReturnCorrectString() {
setUpForConfirmCredentialString(false /* isEffectiveUserManagedProfile */);
when(mContext.getString(R.string.lockpassword_confirm_your_password_generic))
.thenReturn("PASSWORD");
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD);
assertThat(confirmCredentialString).isEqualTo("PASSWORD");
}
@Test
public void getConfirmCredentialStringForUser_workPin_shouldReturnCorrectString() {
setUpForConfirmCredentialString(true /* isEffectiveUserManagedProfile */);
when(mDevicePolicyResourcesManager
.getString(eq(WORK_PROFILE_CONFIRM_PIN), any()))
.thenReturn("WORK PIN");
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_PIN);
assertThat(confirmCredentialString).isEqualTo("WORK PIN");
}
@Test
public void getConfirmCredentialStringForUser_workPattern_shouldReturnCorrectString() {
setUpForConfirmCredentialString(true /* isEffectiveUserManagedProfile */);
when(mDevicePolicyResourcesManager
.getString(eq(WORK_PROFILE_CONFIRM_PATTERN), any()))
.thenReturn("WORK PATTERN");
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_PATTERN);
assertThat(confirmCredentialString).isEqualTo("WORK PATTERN");
}
@Test
public void getConfirmCredentialStringForUser_workPassword_shouldReturnCorrectString() {
setUpForConfirmCredentialString(true /* isEffectiveUserManagedProfile */);
when(mDevicePolicyResourcesManager
.getString(eq(WORK_PROFILE_CONFIRM_PASSWORD), any()))
.thenReturn("WORK PASSWORD");
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD);
assertThat(confirmCredentialString).isEqualTo("WORK PASSWORD");
}
@Test
public void getConfirmCredentialStringForUser_credentialTypeNone_shouldReturnNull() {
setUpForConfirmCredentialString(false /* isEffectiveUserManagedProfile */);
String confirmCredentialString = Utils.getConfirmCredentialStringForUser(mContext,
USER_ID, LockPatternUtils.CREDENTIAL_TYPE_NONE);
assertNull(confirmCredentialString);
}
private void setUpForConfirmCredentialString(boolean isEffectiveUserManagedProfile) {
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
when(mMockUserManager.getCredentialOwnerProfile(USER_ID)).thenReturn(USER_ID);
when(mMockUserManager.isManagedProfile(USER_ID)).thenReturn(isEffectiveUserManagedProfile);
when(mContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDevicePolicyManager);
when(mDevicePolicyManager.getResources()).thenReturn(mDevicePolicyResourcesManager);
}
}