Move IME related seach landing pages to its fragments

This CL moves the code building index of IMEs from
InputMethodAndLanguageSettings to VirtualKeyboardFragment and
AvailableVirtualKeyboardFragment, so that a search landing page of IME
becomes one of the fragment correctly depending on the IME state.

Bug: 32643633
Test: Manually installing/uninstalling AOSP LatinIME.apk while
      Settings app is/isn't running, then search AOSP and verify the
      landing page is correctly determined by the IME's enable state.
Test: Update robolectric DynamicIndexableContentMonitorTest
Change-Id: Ie44f358c2d3919fc864f4f88e6229293113823dd
This commit is contained in:
Tadashi G. Takaoka
2017-01-10 15:47:19 +09:00
parent 7bbc632bfb
commit e776821a8d
6 changed files with 103 additions and 49 deletions

View File

@@ -26,10 +26,15 @@ import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.Preconditions;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.search.SearchIndexableRaw;
import java.text.Collator;
import java.util.ArrayList;
@@ -37,7 +42,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public final class VirtualKeyboardFragment extends SettingsPreferenceFragment {
public final class VirtualKeyboardFragment extends SettingsPreferenceFragment implements Indexable {
private static final String ADD_VIRTUAL_KEYBOARD_SCREEN = "add_virtual_keyboard_screen";
private static final Drawable NO_ICON = new ColorDrawable(Color.TRANSPARENT);
@@ -117,4 +122,16 @@ public final class VirtualKeyboardFragment extends SettingsPreferenceFragment {
mAddVirtualKeyboardScreen.setOrder(N);
getPreferenceScreen().addPreference(mAddVirtualKeyboardScreen);
}
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
final InputMethodManager imm = context.getSystemService(InputMethodManager.class);
final List<InputMethodInfo> enabledInputMethods = imm.getEnabledInputMethodList();
final String screenTitle = context.getString(R.string.virtual_keyboard_category);
return AvailableVirtualKeyboardFragment
.buildSearchIndexOfInputMethods(context, enabledInputMethods, screenTitle);
}
};
}