Fix crash if trying to erase the FRP data.

- Once factory reset protection is on, user data shall not be erased.

Flag: EXEMPT bug fix
Fix: 345587437
Test: Manual test passed
Test: atest passed
Change-Id: I9506224cae7ba12c4181f2b2c676e5eb8ec27431
This commit is contained in:
tomhsu
2024-06-07 06:52:46 +00:00
committed by Tom Hsu
parent 1010a85eda
commit fbb56c4d1c
2 changed files with 14 additions and 2 deletions

View File

@@ -89,8 +89,7 @@ public class MainClearConfirm extends InstrumentedFragment {
final PersistentDataBlockManager pdbManager;
// pre-flight check hardware support PersistentDataBlockManager
if (!SystemProperties.get(PERSISTENT_DATA_BLOCK_PROP).equals("")) {
pdbManager = (PersistentDataBlockManager)
getActivity().getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
pdbManager = getActivity().getSystemService(PersistentDataBlockManager.class);
} else {
pdbManager = null;
}
@@ -152,6 +151,11 @@ public class MainClearConfirm extends InstrumentedFragment {
return false;
}
// Do not try to erase factory reset protection data if the protection is alive.
if (pdbManager.isFactoryResetProtectionActive()) {
return false;
}
// The persistent data block will persist if the device is still being provisioned.
if (isDeviceStillBeingProvisioned()) {
return false;

View File

@@ -77,6 +77,7 @@ public class MainClearConfirmTest {
when(mMockActivity.getSystemService(Context.DEVICE_POLICY_SERVICE))
.thenReturn(mDevicePolicyManager);
when(mPersistentDataBlockManager.isFactoryResetProtectionActive()).thenReturn(false);
}
@Test
@@ -112,6 +113,13 @@ public class MainClearConfirmTest {
assertThat(mMainClearConfirm.shouldWipePersistentDataBlock(null)).isFalse();
}
@Test
public void shouldWipePersistentDataBlock_frpIsAlive_shouldReturnFalse() {
when(mPersistentDataBlockManager.isFactoryResetProtectionActive()).thenReturn(true);
assertThat(mMainClearConfirm.shouldWipePersistentDataBlock(mPersistentDataBlockManager))
.isFalse();
}
@Test
public void shouldWipePersistentDataBlock_deviceIsStillBeingProvisioned_shouldReturnFalse() {
doReturn(true).when(mMainClearConfirm).isDeviceStillBeingProvisioned();