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
This commit is contained in:
Jesse Evans
2017-05-01 11:12:52 -07:00
parent 0ee4e7df8e
commit 0d7854aa43
2 changed files with 33 additions and 2 deletions

View File

@@ -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

View File

@@ -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());