Fix search indexing for game controller "use vibrator"

Change-Id: I34848a58b5ac4cdf58c7dd5f40677b78e764f2dc
Fix: 64035933
Test: robotests
This commit is contained in:
Fan Zhang
2017-07-26 14:50:35 -07:00
parent 975d9a18f1
commit 0d64577205
4 changed files with 37 additions and 9 deletions

View File

@@ -83,8 +83,7 @@
<SwitchPreference <SwitchPreference
android:key="vibrate_input_devices" android:key="vibrate_input_devices"
android:title="@string/vibrate_input_devices" android:title="@string/vibrate_input_devices"
android:summaryOn="@string/vibrate_input_devices_summary" android:summary="@string/vibrate_input_devices_summary" />
android:summaryOff="@string/vibrate_input_devices_summary"/>
</PreferenceCategory> </PreferenceCategory>

View File

@@ -90,7 +90,6 @@
<!-- Other sounds --> <!-- Other sounds -->
<PreferenceCategory <PreferenceCategory
android:key="other_sound_preferecence_category"
android:title="@string/other_sound_category_preference_title" android:title="@string/other_sound_category_preference_title"
android:order="-50"> android:order="-50">

View File

@@ -19,6 +19,7 @@ package com.android.settings.inputmethod;
import android.content.Context; import android.content.Context;
import android.hardware.input.InputManager; import android.hardware.input.InputManager;
import android.provider.Settings; import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.SwitchPreference; import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen; 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.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnResume;
import java.util.List;
public class GameControllerPreferenceController extends AbstractPreferenceController public class GameControllerPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, InputManager.InputDeviceListener, LifecycleObserver, implements PreferenceControllerMixin, InputManager.InputDeviceListener, LifecycleObserver,
OnResume, OnPause { 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 static final String CATEGORY_KEY = "game_controller_settings_category";
private final InputManager mIm; private final InputManager mIm;
@@ -105,6 +109,14 @@ public class GameControllerPreferenceController extends AbstractPreferenceContro
Settings.System.VIBRATE_INPUT_DEVICES, 1) > 0); Settings.System.VIBRATE_INPUT_DEVICES, 1) > 0);
} }
@Override
public void updateNonIndexableKeys(List<String> keys) {
if (!isAvailable()) {
keys.add(CATEGORY_KEY);
keys.add(PREF_KEY);
}
}
@Override @Override
public void onInputDeviceAdded(int deviceId) { public void onInputDeviceAdded(int deviceId) {
updateGameControllers(); updateGameControllers();

View File

@@ -16,12 +16,17 @@
package com.android.settings.inputmethod; 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.content.Context;
import android.hardware.input.InputManager; import android.hardware.input.InputManager;
import android.view.InputDevice; import android.view.InputDevice;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -31,10 +36,9 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat; import java.util.ArrayList;
import static org.mockito.Mockito.never; import java.util.Arrays;
import static org.mockito.Mockito.verify; import java.util.List;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -105,4 +109,18 @@ public class GameControllerPreferenceControllerTest {
assertThat(mController.isAvailable()).isFalse(); assertThat(mController.isAvailable()).isFalse();
} }
@Test
public void updateNonIndexableKeys_shouldIncludeCategoryAndPrefKeys() {
when(mInputManager.getInputDeviceIds()).thenReturn(new int[]{});
final List<String> nonIndexables = new ArrayList<>();
mController.updateNonIndexableKeys(nonIndexables);
assertThat(mController.isAvailable()).isFalse();
assertThat(nonIndexables).containsExactlyElementsIn(Arrays.asList(
GameControllerPreferenceController.PREF_KEY,
mController.getPreferenceKey()));
}
} }