Merge "Make the Factory Reset Protection unit tests work on TV" into udc-dev

This commit is contained in:
Eric Biggers
2023-03-09 23:53:56 +00:00
committed by Android (Google) Code Review
3 changed files with 37 additions and 9 deletions

View File

@@ -39,6 +39,7 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.hardware.authsecret.IAuthSecret; import android.hardware.authsecret.IAuthSecret;
import android.hardware.face.FaceManager; import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
@@ -97,6 +98,7 @@ public abstract class BaseLockSettingsServiceTests {
MockLockSettingsContext mContext; MockLockSettingsContext mContext;
LockSettingsStorageTestable mStorage; LockSettingsStorageTestable mStorage;
Resources mResources;
FakeGateKeeperService mGateKeeperService; FakeGateKeeperService mGateKeeperService;
NotificationManager mNotificationManager; NotificationManager mNotificationManager;
UserManager mUserManager; UserManager mUserManager;
@@ -122,6 +124,7 @@ public abstract class BaseLockSettingsServiceTests {
@Before @Before
public void setUp_baseServices() throws Exception { public void setUp_baseServices() throws Exception {
mResources = createMockResources();
mGateKeeperService = new FakeGateKeeperService(); mGateKeeperService = new FakeGateKeeperService();
mNotificationManager = mock(NotificationManager.class); mNotificationManager = mock(NotificationManager.class);
mUserManager = mock(UserManager.class); mUserManager = mock(UserManager.class);
@@ -146,7 +149,7 @@ public abstract class BaseLockSettingsServiceTests {
LocalServices.addService(WindowManagerInternal.class, mMockWindowManager); LocalServices.addService(WindowManagerInternal.class, mMockWindowManager);
final Context origContext = InstrumentationRegistry.getContext(); final Context origContext = InstrumentationRegistry.getContext();
mContext = new MockLockSettingsContext(origContext, mContext = new MockLockSettingsContext(origContext, mResources,
mSettingsRule.mockContentResolver(origContext), mUserManager, mNotificationManager, mSettingsRule.mockContentResolver(origContext), mUserManager, mNotificationManager,
mDevicePolicyManager, mock(StorageManager.class), mock(TrustManager.class), mDevicePolicyManager, mock(StorageManager.class), mock(TrustManager.class),
mock(KeyguardManager.class), mFingerprintManager, mFaceManager, mPackageManager); mock(KeyguardManager.class), mFingerprintManager, mFaceManager, mPackageManager);
@@ -245,6 +248,22 @@ public abstract class BaseLockSettingsServiceTests {
mLocalService = LocalServices.getService(LockSettingsInternal.class); mLocalService = LocalServices.getService(LockSettingsInternal.class);
} }
private Resources createMockResources() {
Resources res = mock(Resources.class);
// Set up some default configs, copied from core/res/res/values/config.xml
when(res.getBoolean(eq(com.android.internal.R.bool.config_disableLockscreenByDefault)))
.thenReturn(false);
when(res.getBoolean(
eq(com.android.internal.R.bool.config_enableCredentialFactoryResetProtection)))
.thenReturn(true);
when(res.getBoolean(eq(com.android.internal.R.bool.config_isMainUserPermanentAdmin)))
.thenReturn(true);
when(res.getBoolean(eq(com.android.internal.R.bool.config_strongAuthRequiredOnBoot)))
.thenReturn(true);
return res;
}
protected void setDeviceProvisioned(boolean provisioned) { protected void setDeviceProvisioned(boolean provisioned) {
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVICE_PROVISIONED, provisioned ? 1 : 0); Settings.Global.DEVICE_PROVISIONED, provisioned ? 1 : 0);

View File

@@ -34,6 +34,7 @@ import android.app.trust.TrustManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.hardware.face.FaceManager; import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
@@ -106,8 +107,8 @@ public class LockSettingsStorageTests {
when(mockUserManager.getProfileParent(eq(3))).thenReturn(new UserInfo(0, "name", 0)); when(mockUserManager.getProfileParent(eq(3))).thenReturn(new UserInfo(0, "name", 0));
MockLockSettingsContext context = new MockLockSettingsContext(origContext, MockLockSettingsContext context = new MockLockSettingsContext(origContext,
mSettingsRule.mockContentResolver(origContext), mockUserManager, mock(Resources.class), mSettingsRule.mockContentResolver(origContext),
mock(NotificationManager.class), mock(DevicePolicyManager.class), mockUserManager, mock(NotificationManager.class), mock(DevicePolicyManager.class),
mock(StorageManager.class), mock(TrustManager.class), mock(KeyguardManager.class), mock(StorageManager.class), mock(TrustManager.class), mock(KeyguardManager.class),
mock(FingerprintManager.class), mock(FaceManager.class), mock(FingerprintManager.class), mock(FaceManager.class),
mock(PackageManager.class)); mock(PackageManager.class));

View File

@@ -27,6 +27,7 @@ import android.content.ContextWrapper;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.hardware.face.FaceManager; import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
import android.os.Handler; import android.os.Handler;
@@ -36,6 +37,7 @@ import android.os.storage.StorageManager;
public class MockLockSettingsContext extends ContextWrapper { public class MockLockSettingsContext extends ContextWrapper {
private final Resources mResources;
private final ContentResolver mContentResolver; private final ContentResolver mContentResolver;
private final UserManager mUserManager; private final UserManager mUserManager;
private final NotificationManager mNotificationManager; private final NotificationManager mNotificationManager;
@@ -47,13 +49,14 @@ public class MockLockSettingsContext extends ContextWrapper {
private final FaceManager mFaceManager; private final FaceManager mFaceManager;
private final PackageManager mPackageManager; private final PackageManager mPackageManager;
public MockLockSettingsContext(Context base, ContentResolver contentResolver, public MockLockSettingsContext(Context base, Resources resources,
UserManager userManager, NotificationManager notificationManager, ContentResolver contentResolver, UserManager userManager,
DevicePolicyManager devicePolicyManager, StorageManager storageManager, NotificationManager notificationManager, DevicePolicyManager devicePolicyManager,
TrustManager trustManager, KeyguardManager keyguardManager, StorageManager storageManager, TrustManager trustManager,
FingerprintManager fingerprintManager, FaceManager faceManager, KeyguardManager keyguardManager, FingerprintManager fingerprintManager,
PackageManager packageManager) { FaceManager faceManager, PackageManager packageManager) {
super(base); super(base);
mResources = resources;
mContentResolver = contentResolver; mContentResolver = contentResolver;
mUserManager = userManager; mUserManager = userManager;
mNotificationManager = notificationManager; mNotificationManager = notificationManager;
@@ -66,6 +69,11 @@ public class MockLockSettingsContext extends ContextWrapper {
mPackageManager = packageManager; mPackageManager = packageManager;
} }
@Override
public Resources getResources() {
return mResources;
}
@Override @Override
public ContentResolver getContentResolver() { public ContentResolver getContentResolver() {
return mContentResolver; return mContentResolver;