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()));
+ }
}