diff --git a/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java b/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java index b10d06c9b55..130138c376f 100644 --- a/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java @@ -93,7 +93,8 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle @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 17b7a2299af..7d5eb318026 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 @@ public class AppActionButtonPreferenceControllerTest { private DevicePolicyManagerWrapper mDevicePolicyManager; @Mock private AppInfoDashboardFragment mFragment; + @Mock + private ApplicationInfo mAppInfo; private Context mContext; private AppActionButtonPreferenceController mController; @@ -96,6 +98,25 @@ public class AppActionButtonPreferenceControllerTest { 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