diff --git a/res/xml/language_and_input.xml b/res/xml/language_and_input.xml index 95628efabfc..e9c9737fefc 100644 --- a/res/xml/language_and_input.xml +++ b/res/xml/language_and_input.xml @@ -83,8 +83,7 @@ + android:summary="@string/vibrate_input_devices_summary" /> diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml index f5705bb8356..b0aff02747a 100644 --- a/res/xml/sound_settings.xml +++ b/res/xml/sound_settings.xml @@ -90,7 +90,6 @@ diff --git a/src/com/android/settings/inputmethod/GameControllerPreferenceController.java b/src/com/android/settings/inputmethod/GameControllerPreferenceController.java index f7bc143e81d..6a0e853d454 100644 --- a/src/com/android/settings/inputmethod/GameControllerPreferenceController.java +++ b/src/com/android/settings/inputmethod/GameControllerPreferenceController.java @@ -19,6 +19,7 @@ package com.android.settings.inputmethod; import android.content.Context; import android.hardware.input.InputManager; import android.provider.Settings; +import android.support.annotation.VisibleForTesting; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; @@ -31,11 +32,14 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; +import java.util.List; + public class GameControllerPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, InputManager.InputDeviceListener, LifecycleObserver, OnResume, OnPause { - public static final String PREF_KEY = "vibrate_input_devices"; + @VisibleForTesting + static final String PREF_KEY = "vibrate_input_devices"; private static final String CATEGORY_KEY = "game_controller_settings_category"; private final InputManager mIm; @@ -105,6 +109,14 @@ public class GameControllerPreferenceController extends AbstractPreferenceContro Settings.System.VIBRATE_INPUT_DEVICES, 1) > 0); } + @Override + public void updateNonIndexableKeys(List keys) { + if (!isAvailable()) { + keys.add(CATEGORY_KEY); + keys.add(PREF_KEY); + } + } + @Override public void onInputDeviceAdded(int deviceId) { updateGameControllers(); diff --git a/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java index 7d803f4df1c..2716fc38554 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java @@ -16,12 +16,17 @@ package com.android.settings.inputmethod; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import android.content.Context; import android.hardware.input.InputManager; import android.view.InputDevice; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; @@ -31,10 +36,9 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @@ -105,4 +109,18 @@ public class GameControllerPreferenceControllerTest { assertThat(mController.isAvailable()).isFalse(); } + + @Test + public void updateNonIndexableKeys_shouldIncludeCategoryAndPrefKeys() { + when(mInputManager.getInputDeviceIds()).thenReturn(new int[]{}); + + + final List nonIndexables = new ArrayList<>(); + mController.updateNonIndexableKeys(nonIndexables); + + assertThat(mController.isAvailable()).isFalse(); + assertThat(nonIndexables).containsExactlyElementsIn(Arrays.asList( + GameControllerPreferenceController.PREF_KEY, + mController.getPreferenceKey())); + } }