Check if FRP policy is supported in Settings
* Check if FRP policy is supported before
erasing a device via settings.
* Call DPM TestAPI isFactoryResetProtectionPolicySupported
* If FRP policy is not supported, then do not
erase the device.
Bug: 155057616
Test: atest com.android.settings.MasterClearConfirmTest
Change-Id: I56e4a6566457f31932658188646abe21701637fc
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index cac18f7..3ace436 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -151,11 +151,16 @@
if (isOemUnlockedAllowed()) {
return false;
}
+ final DevicePolicyManager dpm = (DevicePolicyManager) getActivity()
+ .getSystemService(Context.DEVICE_POLICY_SERVICE);
+ // Do not erase the factory reset protection data (from Settings) if factory reset
+ // protection policy is not supported on the device.
+ if (!dpm.isFactoryResetProtectionPolicySupported()) {
+ return false;
+ }
// Do not erase the factory reset protection data (from Settings) if the
// device is an organization-owned managed profile device and a factory
// reset protection policy has been set.
- final DevicePolicyManager dpm = (DevicePolicyManager) getActivity()
- .getSystemService(Context.DEVICE_POLICY_SERVICE);
FactoryResetProtectionPolicy frpPolicy = dpm.getFactoryResetProtectionPolicy(null);
if (dpm.isOrganizationOwnedDeviceWithManagedProfile() && frpPolicy != null
&& frpPolicy.isNotEmpty()) {
diff --git a/tests/robotests/src/com/android/settings/MasterClearConfirmTest.java b/tests/robotests/src/com/android/settings/MasterClearConfirmTest.java
index 1222bdd..f2000e5 100644
--- a/tests/robotests/src/com/android/settings/MasterClearConfirmTest.java
+++ b/tests/robotests/src/com/android/settings/MasterClearConfirmTest.java
@@ -115,6 +115,20 @@
}
@Test
+ public void shouldWipePersistentDataBlock_frpPolicyNotSupported_shouldReturnFalse() {
+ when(mMasterClearConfirm.getActivity()).thenReturn(mMockActivity);
+
+ doReturn(false).when(mMasterClearConfirm).isDeviceStillBeingProvisioned();
+ doReturn(false).when(mMasterClearConfirm).isOemUnlockedAllowed();
+ when(mMockActivity.getSystemService(Context.DEVICE_POLICY_SERVICE))
+ .thenReturn(mDevicePolicyManager);
+ when(mDevicePolicyManager.isFactoryResetProtectionPolicySupported()).thenReturn(false);
+
+ assertThat(mMasterClearConfirm.shouldWipePersistentDataBlock(
+ mPersistentDataBlockManager)).isFalse();
+ }
+
+ @Test
public void shouldWipePersistentDataBlock_hasFactoryResetProtectionPolicy_shouldReturnFalse() {
when(mMasterClearConfirm.getActivity()).thenReturn(mMockActivity);
@@ -128,6 +142,7 @@
.build();
when(mMockActivity.getSystemService(Context.DEVICE_POLICY_SERVICE))
.thenReturn(mDevicePolicyManager);
+ when(mDevicePolicyManager.isFactoryResetProtectionPolicySupported()).thenReturn(true);
when(mDevicePolicyManager.getFactoryResetProtectionPolicy(null)).thenReturn(frp);
when(mDevicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile()).thenReturn(true);
@@ -144,6 +159,7 @@
when(mMockActivity.getSystemService(Context.DEVICE_POLICY_SERVICE))
.thenReturn(mDevicePolicyManager);
+ when(mDevicePolicyManager.isFactoryResetProtectionPolicySupported()).thenReturn(true);
when(mDevicePolicyManager.getFactoryResetProtectionPolicy(null)).thenReturn(null);
when(mDevicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile()).thenReturn(false);