Add receiver for app install/uninstall events

In order to keep the settings list up to date
we are listening to package manager broadcasts
so when an app is installed, etc it will trigger
a refresh

Bug: 264420106
Test: ondevice & atest
Change-Id: I83be80e88dd03ebce1cb97a66fb759e1ef2537e8
This commit is contained in:
Becca Hughes
2023-04-10 21:51:33 +00:00
parent 156b7d6f18
commit 86e092d84a
2 changed files with 110 additions and 2 deletions

View File

@@ -368,6 +368,71 @@ public class CredentialManagerPreferenceControllerTest {
assertThat(pref3.isChecked()).isTrue();
}
@Test
public void handleRefreshIntent_packageAdded() {
CredentialProviderInfo cpi = createCredentialProviderInfo();
CredentialManagerPreferenceController controller =
createControllerWithServices(Lists.newArrayList(cpi));
String packageName = cpi.getServiceInfo().packageName;
// Create an intent with valid data.
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED);
intent.setData(Uri.parse("package:" + packageName));
assertThat(controller.handleRefreshIntent(intent)).isTrue();
}
@Test
public void handleRefreshIntent_packageRemoved() {
CredentialProviderInfo cpi = createCredentialProviderInfo();
CredentialManagerPreferenceController controller =
createControllerWithServices(Lists.newArrayList(cpi));
String packageName = cpi.getServiceInfo().packageName;
// Create an intent with valid data.
Intent intent = new Intent(Intent.ACTION_PACKAGE_REMOVED);
intent.setData(Uri.parse("package:" + packageName));
assertThat(controller.handleRefreshIntent(intent)).isTrue();
}
@Test
public void handleRefreshIntent_packageReplaced() {
CredentialProviderInfo cpi = createCredentialProviderInfo();
CredentialManagerPreferenceController controller =
createControllerWithServices(Lists.newArrayList(cpi));
String packageName = cpi.getServiceInfo().packageName;
// Create an intent with valid data.
Intent intent = new Intent(Intent.ACTION_PACKAGE_REPLACED);
intent.setData(Uri.parse("package:" + packageName));
assertThat(controller.handleRefreshIntent(intent)).isTrue();
}
@Test
public void handleRefreshIntent_packageChanged() {
CredentialProviderInfo cpi = createCredentialProviderInfo();
CredentialManagerPreferenceController controller =
createControllerWithServices(Lists.newArrayList(cpi));
String packageName = cpi.getServiceInfo().packageName;
// Create an intent with valid data.
Intent intent = new Intent(Intent.ACTION_PACKAGE_CHANGED);
intent.setData(Uri.parse("package:" + packageName));
assertThat(controller.handleRefreshIntent(intent)).isTrue();
}
@Test
public void handleRefreshIntent_badData() {
CredentialProviderInfo cpi = createCredentialProviderInfo();
CredentialManagerPreferenceController controller =
createControllerWithServices(Lists.newArrayList(cpi));
String packageName = cpi.getServiceInfo().packageName;
// Create an intent with valid data.
Intent intent = new Intent(Intent.ACTION_PACKAGE_ENABLE_ROLLBACK);
intent.setData(Uri.parse("package:" + packageName));
assertThat(controller.handleRefreshIntent(intent)).isTrue();
}
@Test
public void handleIntentWithProviderServiceInfo_handleBadIntent_missingData() {
CredentialProviderInfo cpi = createCredentialProviderInfo();
@@ -444,7 +509,8 @@ public class CredentialManagerPreferenceControllerTest {
CredentialManagerPreferenceController controller =
new CredentialManagerPreferenceController(
mContext, mCredentialsPreferenceCategory.getKey());
controller.setAvailableServices(() -> mock(Lifecycle.class), availableServices, addServiceOverride);
controller.setAvailableServices(
() -> mock(Lifecycle.class), availableServices, addServiceOverride);
controller.setDelegate(mDelegate);
return controller;
}