From b60d2cbb5bb5319b52f30aed6ca071f1faa57b44 Mon Sep 17 00:00:00 2001 From: Ben Lin Date: Mon, 18 Dec 2017 17:55:40 -0800 Subject: [PATCH] Add ability to show/hide default_home preference. This adds a new boolean flag, config_show_default_home, which when set to false will hide the default_home preference item. Bug: 62378256 Test: make RunSettingsRoboTests ROBOTEST_FILTER=DefaultHomePreferenceControllerTest Change-Id: Ibbf17ebb76b61fc8b2eac84016e3d874ca15a513 --- res/values/bools.xml | 3 +++ .../DefaultHomePreferenceController.java | 3 ++- tests/robotests/res/values-mcc999/config.xml | 1 + .../applications/DefaultAppSettingsTest.java | 11 +++++------ .../DefaultHomePreferenceControllerTest.java | 13 ++++++++++--- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/res/values/bools.xml b/res/values/bools.xml index c8836300253..4c1c9c2755d 100644 --- a/res/values/bools.xml +++ b/res/values/bools.xml @@ -54,4 +54,7 @@ true + + + true diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java index 94aa6089b07..fa6ddff6e17 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java +++ b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java @@ -24,6 +24,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import com.android.settings.R; import com.android.settingslib.wrapper.PackageManagerWrapper; import java.util.ArrayList; @@ -53,7 +54,7 @@ public class DefaultHomePreferenceController extends DefaultAppPreferenceControl @Override public boolean isAvailable() { - return true; + return mContext.getResources().getBoolean(R.bool.config_show_default_home); } @Override diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml index b327446aed1..f8f59f1db21 100644 --- a/tests/robotests/res/values-mcc999/config.xml +++ b/tests/robotests/res/values-mcc999/config.xml @@ -22,4 +22,5 @@ false false false + false diff --git a/tests/robotests/src/com/android/settings/applications/DefaultAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/DefaultAppSettingsTest.java index 9441707a4b4..f1c94964f17 100644 --- a/tests/robotests/src/com/android/settings/applications/DefaultAppSettingsTest.java +++ b/tests/robotests/src/com/android/settings/applications/DefaultAppSettingsTest.java @@ -147,20 +147,19 @@ public class DefaultAppSettingsTest { @Test public void testNonIndexableKeys_existInXmlLayout() { final Context context = spy(RuntimeEnvironment.application); - final Context mockContext = mock(Context.class); - when(mockContext.getApplicationContext()).thenReturn(mockContext); + when(context.getApplicationContext()).thenReturn(context); final UserManager userManager = mock(UserManager.class, RETURNS_DEEP_STUBS); - when(mockContext.getSystemService(Context.USER_SERVICE)) + when(context.getSystemService(Context.USER_SERVICE)) .thenReturn(userManager); when(userManager.getUserInfo(anyInt()).isRestricted()).thenReturn(true); - when(mockContext.getSystemService(Context.TELEPHONY_SERVICE)) + when(context.getSystemService(Context.TELEPHONY_SERVICE)) .thenReturn(mock(TelephonyManager.class)); - when(mockContext.getPackageManager()) + when(context.getPackageManager()) .thenReturn(mock(PackageManager.class)); final List niks = DefaultAppSettings.SEARCH_INDEX_DATA_PROVIDER - .getNonIndexableKeys(mockContext); + .getNonIndexableKeys(context); final int xmlId = (new DefaultAppSettings()).getPreferenceScreenResId(); diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java index 8a8cc2900a6..ad1a1cbaf4c 100644 --- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java @@ -45,6 +45,7 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; +import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; import java.util.Arrays; @@ -54,18 +55,18 @@ import java.util.Arrays; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class DefaultHomePreferenceControllerTest { - @Mock - private Context mContext; @Mock private UserManager mUserManager; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PackageManagerWrapper mPackageManager; + private Context mContext; private DefaultHomePreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mController = spy(new DefaultHomePreferenceController(mContext)); @@ -73,10 +74,16 @@ public class DefaultHomePreferenceControllerTest { } @Test - public void isAlwaysAvailable() { + public void testDefaultHome_byDefault_shouldBeShown() { assertThat(mController.isAvailable()).isTrue(); } + @Test + @Config(qualifiers = "mcc999") + public void testDefaultHome_ifDisabled_shouldNotBeShown() { + assertThat(mController.isAvailable()).isFalse(); + } + @Test public void getDefaultApp_shouldGetDefaultBrowserPackage() { assertThat(mController.getDefaultAppInfo()).isNotNull();