From 69084b3a8d4647040ee674a01ce990ea2440a1c1 Mon Sep 17 00:00:00 2001 From: Ben Lin Date: Tue, 19 Dec 2017 14:56:52 -0800 Subject: [PATCH] Add ability to show/hide assist_and_voice_input preference. This adds a new boolean flag, config_show_assist_and_voice_input, which when set to false will hide the assist_and_voice_input preference item. Bug: 62379282 Test: make RunSettingsRoboTests ROBOTEST_FILTER=DefaultAssistPreferenceControllerTest Change-Id: I3bfc84f0fba07cd52679269daadbdcfccd205ff1 --- res/values/bools.xml | 3 +++ .../DefaultAssistPreferenceController.java | 3 ++- tests/robotests/res/values-mcc999/config.xml | 1 + .../DefaultAssistPreferenceControllerTest.java | 17 +++++++++++++---- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/res/values/bools.xml b/res/values/bools.xml index 6df9d6c180f..687d5bd1ddc 100644 --- a/res/values/bools.xml +++ b/res/values/bools.xml @@ -80,4 +80,7 @@ true + + + true diff --git a/src/com/android/settings/applications/assist/DefaultAssistPreferenceController.java b/src/com/android/settings/applications/assist/DefaultAssistPreferenceController.java index cba08c89bf0..f78548b8020 100644 --- a/src/com/android/settings/applications/assist/DefaultAssistPreferenceController.java +++ b/src/com/android/settings/applications/assist/DefaultAssistPreferenceController.java @@ -26,6 +26,7 @@ import android.service.voice.VoiceInteractionServiceInfo; import android.support.annotation.VisibleForTesting; import com.android.internal.app.AssistUtils; +import com.android.settings.R; import com.android.settings.applications.defaultapps.DefaultAppInfo; import com.android.settings.applications.defaultapps.DefaultAppPreferenceController; @@ -73,7 +74,7 @@ public class DefaultAssistPreferenceController extends DefaultAppPreferenceContr @Override public boolean isAvailable() { - return true; + return mContext.getResources().getBoolean(R.bool.config_show_assist_and_voice_input); } @Override diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml index 7ae7c1f3bcf..e10fee1e080 100644 --- a/tests/robotests/res/values-mcc999/config.xml +++ b/tests/robotests/res/values-mcc999/config.xml @@ -30,4 +30,5 @@ false false false + false diff --git a/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java index 180abbb491c..eeaba210423 100644 --- a/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java @@ -50,6 +50,7 @@ import org.junit.runner.RunWith; 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.ArrayList; @@ -61,26 +62,33 @@ public class DefaultAssistPreferenceControllerTest { private static final String TEST_KEY = "test_pref_key"; - @Mock - private Context mContext; @Mock private SearchManager mSearchManager; @Mock private PackageManager mPackageManager; + + private Context mContext; private DefaultAssistPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); mController = new DefaultAssistPreferenceController(mContext, TEST_KEY, true /* showSetting */); } @Test - public void isAlwaysAvailable() { + public void testAssistAndVoiceInput_byDefault_shouldBeShown() { assertThat(mController.isAvailable()).isTrue(); } + @Test + @Config(qualifiers = "mcc999") + public void testAssistAndVoiceInput_ifDisabled_shouldNotBeShown() { + assertThat(mController.isAvailable()).isFalse(); + } + @Test public void getPrefKey_shouldReturnKey() { assertThat(mController.getPreferenceKey()) @@ -91,7 +99,8 @@ public class DefaultAssistPreferenceControllerTest { @Config(shadows = {ShadowSecureSettings.class}) public void getDefaultAppInfo_hasDefaultAssist_shouldReturnKey() { final String flattenKey = "com.android.settings/assist"; - Settings.Secure.putString(null, Settings.Secure.ASSISTANT, flattenKey); + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.ASSISTANT, + flattenKey); DefaultAppInfo appInfo = mController.getDefaultAppInfo(); assertThat(appInfo.getKey()).isEqualTo(flattenKey);