diff --git a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java
index 9c344df..c022409 100644
--- a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java
+++ b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java
@@ -37,7 +37,10 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.accessibility.ListDialogPreference.OnValueChangedListener;
+import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.accessibility.AccessibilityUtils;
+import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.search.SearchIndexableRaw;
 import com.android.settingslib.widget.LayoutPreference;
 
 import java.util.ArrayList;
@@ -47,6 +50,7 @@
 /**
  * Settings fragment containing captioning properties.
  */
+@SearchIndexable
 public class CaptionPropertiesFragment extends SettingsPreferenceFragment
         implements OnPreferenceChangeListener, OnValueChangedListener {
     private static final String PREF_CAPTION_PREVIEW = "caption_preview";
@@ -420,4 +424,90 @@
 
         return true;
     }
+
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableRaw> getRawDataToIndex(Context context,
+                        boolean enabled) {
+                    final Resources res = context.getResources();
+                    final List<SearchIndexableRaw> indexRaws = new ArrayList<>();
+
+                    SearchIndexableRaw raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_SWITCH;
+                    raw.title = res.getString(R.string.accessibility_caption_master_switch_title);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_FONT_SIZE;
+                    raw.title = res.getString(R.string.captioning_text_size);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_PRESET;
+                    raw.title = res.getString(R.string.captioning_preset);
+                    indexRaws.add(raw);
+
+                    return indexRaws;
+                }
+
+                @Override
+                public List<SearchIndexableRaw> getDynamicRawDataToIndex(Context context,
+                        boolean enabled) {
+                    final ContentResolver cr = context.getContentResolver();
+                    final int preserValue = Settings.Secure.getInt(cr,
+                            Settings.Secure.ACCESSIBILITY_CAPTIONING_PRESET, 0);
+                    if (preserValue != CaptionStyle.PRESET_CUSTOM) {
+                        return null;
+                    }
+                    final Resources res = context.getResources();
+                    final List<SearchIndexableRaw> indexRaws = new ArrayList<>();
+                    SearchIndexableRaw raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_TYPEFACE;
+                    raw.title = res.getString(R.string.captioning_typeface);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_FOREGROUND_COLOR;
+                    raw.title = res.getString(R.string.captioning_foreground_color);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_FOREGROUND_OPACITY;
+                    raw.title = res.getString(R.string.captioning_foreground_opacity);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_EDGE_TYPE;
+                    raw.title = res.getString(R.string.captioning_edge_type);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_EDGE_COLOR;
+                    raw.title = res.getString(R.string.captioning_edge_color);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_BACKGROUND_COLOR;
+                    raw.title = res.getString(R.string.captioning_background_color);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_BACKGROUND_OPACITY;
+                    raw.title = res.getString(R.string.captioning_background_opacity);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_WINDOW_COLOR;
+                    raw.title = res.getString(R.string.captioning_window_color);
+                    indexRaws.add(raw);
+
+                    raw = new SearchIndexableRaw(context);
+                    raw.key = PREF_WINDOW_OPACITY;
+                    raw.title = res.getString(R.string.captioning_window_opacity);
+                    indexRaws.add(raw);
+
+                    return indexRaws;
+                }
+            };
 }
diff --git a/tests/robotests/assets/grandfather_not_implementing_index_provider b/tests/robotests/assets/grandfather_not_implementing_index_provider
index 013e596..f836e64 100644
--- a/tests/robotests/assets/grandfather_not_implementing_index_provider
+++ b/tests/robotests/assets/grandfather_not_implementing_index_provider
@@ -1,5 +1,4 @@
 com.android.settings.accessibility.AccessibilitySettingsForSetupWizard
-com.android.settings.accessibility.CaptionPropertiesFragment
 com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment
 com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment
 com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragmentForSetupWizard
