Only show app action button if it is not instant app.
- for instant app, we are showing another set of buttons, and hence the
regular app action buttons should be not be available.
Change-Id: I53f2a10921451c281166e123671c088ab87b2b0d
Fixes: 71919219
Test: make RunSettingsRoboTests
diff --git a/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java b/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java
index b10d06c..130138c 100644
--- a/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java
@@ -93,7 +93,8 @@
@Override
public int getAvailabilityStatus() {
- return AVAILABLE;
+ return AppUtils.isInstant(mParent.getPackageInfo().applicationInfo)
+ ? DISABLED_FOR_USER : AVAILABLE;
}
@Override
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceControllerTest.java
index 17b7a22..7d5eb31 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceControllerTest.java
@@ -79,6 +79,8 @@
private DevicePolicyManagerWrapper mDevicePolicyManager;
@Mock
private AppInfoDashboardFragment mFragment;
+ @Mock
+ private ApplicationInfo mAppInfo;
private Context mContext;
private AppActionButtonPreferenceController mController;
@@ -96,6 +98,25 @@
ReflectionHelpers.setField(mController, "mApplicationFeatureProvider",
mFeatureFactory.applicationFeatureProvider);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+ final PackageInfo packageInfo = mock(PackageInfo.class);
+ packageInfo.applicationInfo = mAppInfo;
+ when(mFragment.getPackageInfo()).thenReturn(packageInfo);
+ }
+
+ @Test
+ public void getAvailabilityStatus_notInstantApp_shouldReturnAvailable() {
+ ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
+ (InstantAppDataProvider) (i -> false));
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(mController.AVAILABLE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_isInstantApp_shouldReturnDisabled() {
+ ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
+ (InstantAppDataProvider) (i -> true));
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(mController.DISABLED_FOR_USER);
}
@Test