From 3a8f193bb516c3255e3bffee3c0011719dd27e67 Mon Sep 17 00:00:00 2001 From: Omer Ozer Date: Fri, 21 Feb 2025 20:02:27 +0000 Subject: [PATCH] FactoryResetPreferenceController return null when permission isn't grandted. Flag: EXEMPT bugfix Bug: 396580123 Test: manual Change-Id: Id68dcebc600de21fddf8801757dfb56b92a1a773 --- .../FactoryResetPreferenceController.java | 2 +- .../FactoryResetPreferenceControllerTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/system/FactoryResetPreferenceController.java b/src/com/android/settings/system/FactoryResetPreferenceController.java index 54c97a389b8..d80e926c3c6 100644 --- a/src/com/android/settings/system/FactoryResetPreferenceController.java +++ b/src/com/android/settings/system/FactoryResetPreferenceController.java @@ -111,7 +111,7 @@ public class FactoryResetPreferenceController extends BasePreferenceController { return prepareFactoryResetWizardRequest; } } - return prepareFactoryResetWizardRequest; + return null; } Log.i(TAG, "Unable to resolve a Factory Reset Handler Activity"); return null; diff --git a/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java index 383ed94b7db..8eb02b332ae 100644 --- a/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java @@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import android.Manifest; @@ -157,4 +158,21 @@ public class FactoryResetPreferenceControllerTest { assertThat(intentArgumentCaptor.getValue().getAction()) .isEqualTo(FactoryResetPreferenceController.ACTION_PREPARE_FACTORY_RESET); } + + @Test + @RequiresFlagsEnabled(com.android.settings.factory_reset.Flags.FLAG_ENABLE_FACTORY_RESET_WIZARD) + public void handlePreference_factoryResetWizardEnabled_noExistingFrwApp() + throws PackageManager.NameNotFoundException { + PackageInfo info = new PackageInfo(); + info.requestedPermissions = + new String[] {Manifest.permission.PREPARE_FACTORY_RESET}; + info.requestedPermissionsFlags = new int[] {0}; + when(mPackageManager.getPackageInfo(anyString(), anyInt())) + .thenReturn(info); + + assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue(); + verify(mPackageManager).getPackageInfo(eq(FACTORY_RESET_APP_PACKAGE), + eq(PackageManager.GET_PERMISSIONS)); + verifyNoMoreInteractions(mFactoryResetLauncher); + } }