Merge "Disable AssistGestureSetting search if not supported" into oc-mr1-dev
diff --git a/res/xml/assist_gesture_settings.xml b/res/xml/assist_gesture_settings.xml
index 4455655..53b6526 100644
--- a/res/xml/assist_gesture_settings.xml
+++ b/res/xml/assist_gesture_settings.xml
@@ -15,10 +15,11 @@
   limitations under the License.
   -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:app="http://schemas.android.com/apk/res-auto"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-                  android:title="@string/assist_gesture_title">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:key="gesture_assist_settings_page"
+    android:title="@string/assist_gesture_title">
 
     <com.android.settings.widget.VideoPreference
         android:key="gesture_assist_video"
@@ -28,6 +29,6 @@
     <SwitchPreference
         android:key="gesture_assist"
         android:title="@string/assist_gesture_title"
-        app:keywords="@string/keywords_assist_gesture_launch"/>
+        app:keywords="@string/keywords_assist_gesture_launch" />
 
 </PreferenceScreen>
diff --git a/src/com/android/settings/gestures/AssistGestureSettings.java b/src/com/android/settings/gestures/AssistGestureSettings.java
index cb9e473..3066baf 100644
--- a/src/com/android/settings/gestures/AssistGestureSettings.java
+++ b/src/com/android/settings/gestures/AssistGestureSettings.java
@@ -79,9 +79,17 @@
                 }
 
                 @Override
-                public List<AbstractPreferenceController> getPreferenceControllers(Context context) {
+                public List<AbstractPreferenceController> getPreferenceControllers(
+                        Context context) {
                     return buildPreferenceControllers(context, null /* lifecycle */);
                 }
+
+                @Override
+                protected boolean isPageSearchEnabled(Context context) {
+                    return new AssistGesturePreferenceController(context, null /* lifecycle */,
+                            null /* key */, false /* assistOnly */)
+                            .isAvailable();
+                }
             };
 }
 
diff --git a/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java b/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java
index 1ed030f..cfd3f52 100644
--- a/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java
@@ -17,7 +17,7 @@
 package com.android.settings.gestures;
 
 import static com.google.common.truth.Truth.assertThat;
-
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
@@ -34,6 +34,7 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
@@ -45,14 +46,12 @@
     @Mock
     private Context mContext;
     private FakeFeatureFactory mFakeFeatureFactory;
-    private AssistGestureFeatureProvider mFeatureProvider;
     private AssistGestureSettings mSettings;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mFakeFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
-        mFeatureProvider = mFakeFeatureFactory.getAssistGestureFeatureProvider();
         mSettings = new AssistGestureSettings();
     }
 
@@ -65,7 +64,7 @@
     @Test
     public void testGetPreferenceControllers_shouldAllBeCreated() {
         final List<AbstractPreferenceController> controllers =
-            mSettings.getPreferenceControllers(mContext);
+                mSettings.getPreferenceControllers(mContext);
         assertThat(controllers.isEmpty()).isFalse();
     }
 
@@ -79,5 +78,15 @@
         assertThat(indexRes).isNotNull();
         assertThat(indexRes.get(0).xmlResId).isEqualTo(mSettings.getPreferenceScreenResId());
     }
+
+    @Test
+    public void testSearchIndexProvider_noSensor_shouldDisablePageSearch() {
+        when(mFakeFeatureFactory.assistGestureFeatureProvider.isSensorAvailable(any(Context.class)))
+                .thenReturn(false);
+
+        assertThat(AssistGestureSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(
+                RuntimeEnvironment.application))
+                .contains("gesture_assist_settings_page");
+    }
 }