From 0d7854aa43c7d8debc8daf1390625803fb56e9ba Mon Sep 17 00:00:00 2001 From: Jesse Evans Date: Mon, 1 May 2017 11:12:52 -0700 Subject: [PATCH] Hides app buttons for instant apps Hides the app buttons when the app is an instant app. Added a todo to remove this functionality when instant apps are properly supported by this controller. Test: make RunSettingsRoboTests Bug: 37313605 Change-Id: I3fca106a8e72c41b626e1182f5ba1089b90e8e2a --- .../AppButtonsPreferenceController.java | 4 ++- .../AppButtonsPreferenceControllerTest.java | 31 ++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java index f7cb19103d5..49a01793d94 100644 --- a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java +++ b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java @@ -60,6 +60,7 @@ import com.android.settings.core.lifecycle.events.OnResume; import com.android.settings.enterprise.DevicePolicyManagerWrapper; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; import java.util.ArrayList; @@ -155,7 +156,8 @@ public class AppButtonsPreferenceController extends PreferenceController impleme @Override public boolean isAvailable() { - return mAppEntry != null; + // TODO(b/37313605): Re-enable once this controller supports instant apps + return mAppEntry != null && !AppUtils.isInstant(mAppEntry.info); } @Override diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java index 85b4f81bb84..a341d8361d7 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java @@ -19,8 +19,8 @@ package com.android.settings.fuelgauge; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; @@ -48,7 +48,9 @@ import com.android.settings.TestConfig; import com.android.settings.core.lifecycle.Lifecycle; import com.android.settings.enterprise.DevicePolicyManagerWrapper; import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; +import com.android.settingslib.applications.instantapps.InstantAppDataProvider; import org.junit.Before; import org.junit.Test; @@ -61,6 +63,7 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @@ -188,6 +191,32 @@ public class AppButtonsPreferenceControllerTest { verify(mUninstallButton).setEnabled(false); } + @Test + public void testIsAvailable_nonInstantApp() throws Exception { + mController.mAppEntry = mAppEntry; + ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider", + new InstantAppDataProvider() { + @Override + public boolean isInstantApp(ApplicationInfo info) { + return false; + } + }); + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void testIsAvailable_instantApp() throws Exception { + mController.mAppEntry = mAppEntry; + ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider", + new InstantAppDataProvider() { + @Override + public boolean isInstantApp(ApplicationInfo info) { + return true; + } + }); + assertThat(mController.isAvailable()).isFalse(); + } + @Test public void testUpdateUninstallButton_isDeviceAdminApp_setButtonDisable() { doReturn(true).when(mController).handleDisableable(any());