Loading src/com/android/settings/search2/DatabaseIndexingManager.java +5 −7 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.Build; import android.provider.SearchIndexableData; import android.provider.SearchIndexableResource; import android.provider.SearchIndexablesContract; import android.support.annotation.DrawableRes; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.AttributeSet; Loading Loading @@ -525,8 +526,6 @@ public class DatabaseIndexingManager { final int count = cursor.getCount(); if (count > 0) { while (cursor.moveToNext()) { final int providerRank = cursor.getInt(COLUMN_INDEX_XML_RES_RANK); // TODO remove provider rank final int xmlResId = cursor.getInt(COLUMN_INDEX_XML_RES_RESID); final String className = cursor.getString(COLUMN_INDEX_XML_RES_CLASS_NAME); Loading Loading @@ -720,7 +719,6 @@ public class DatabaseIndexingManager { final AttributeSet attrs = Xml.asAttributeSet(parser); final String screenTitle = XmlParserUtils.getDataTitle(context, attrs); String key = XmlParserUtils.getDataKey(context, attrs); String title; Loading @@ -730,10 +728,11 @@ public class DatabaseIndexingManager { String keywords; String headerKeywords; String childFragment; @DrawableRes int iconResId; ResultPayload payload; boolean enabled; final String fragmentName = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; final String intentAction = sir.intentAction; final String intentTargetPackage = sir.intentTargetPackage; Loading Loading @@ -784,6 +783,7 @@ public class DatabaseIndexingManager { key = XmlParserUtils.getDataKey(context, attrs); enabled = ! nonIndexableKeys.contains(key); keywords = XmlParserUtils.getDataKeywords(context, attrs); iconResId = XmlParserUtils.getDataIcon(context, attrs); if (isHeaderUnique && TextUtils.equals(headerTitle, title)) { isHeaderUnique = false; Loading Loading @@ -853,7 +853,6 @@ public class DatabaseIndexingManager { List<String> nonIndexableKeys) { final String className = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; if (provider == null) { Loading Loading @@ -881,7 +880,7 @@ public class DatabaseIndexingManager { .setEntries(raw.entries) .setClassName(className) .setScreenTitle(raw.screenTitle) .setIconResId(iconResId) .setIconResId(raw.iconResId) .setRank(rank) .setIntentAction(raw.intentAction) .setIntentTargetPackage(raw.intentTargetPackage) Loading @@ -907,7 +906,6 @@ public class DatabaseIndexingManager { continue; } item.iconResId = (item.iconResId == 0) ? iconResId : item.iconResId; item.className = (TextUtils.isEmpty(item.className)) ? className : item.className; indexFromResource(database, localeStr, item, nonIndexableKeys); Loading src/com/android/settings/search2/SearchViewHolder.java +2 −4 Original line number Diff line number Diff line Loading @@ -69,11 +69,9 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { AppSearchResult appResult = (AppSearchResult) result; PackageManager pm = fragment.getActivity().getPackageManager(); iconView.setImageDrawable(appResult.info.loadIcon(pm)); } else if (result.icon != null) { iconView.setImageDrawable(result.icon); // TODO set color of icon } else { iconView.setBackgroundResource(R.drawable.empty_icon); // Valid even when result.icon is null. iconView.setImageDrawable(result.icon); } bindBreadcrumbView(result); Loading src/com/android/settings/search2/XmlParserUtils.java +11 −11 Original line number Diff line number Diff line Loading @@ -71,6 +71,14 @@ public class XmlParserUtils { return getData(context, attrs, R.styleable.Preference, R.styleable.Preference_keywords); } public static int getDataIcon(Context context, AttributeSet attrs) { final TypedArray ta = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Preference); final int dataIcon = ta.getResourceId(com.android.internal.R.styleable.Icon_icon, 0); ta.recycle(); return dataIcon; } /** * Returns the fragment name if this preference launches a child fragment. */ Loading @@ -80,17 +88,9 @@ public class XmlParserUtils { } private static String getData(Context context, AttributeSet set, int[] attrs, int resId) { final TypedArray sa = context.obtainStyledAttributes(set, attrs); final TypedValue tv = sa.peekValue(resId); CharSequence data = null; if (tv != null && tv.type == TypedValue.TYPE_STRING) { if (tv.resourceId != 0) { data = context.getText(tv.resourceId); } else { data = tv.string; } } final TypedArray ta = context.obtainStyledAttributes(set, attrs); String data = ta.getString(resId); ta.recycle(); return (data != null) ? data.toString() : null; } Loading tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java +15 −7 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ public class IntentSearchViewHolderTest { } @Test public void testConstructor_MembersNotNull() { public void testConstructor_membersNotNull() { assertThat(mHolder.titleView).isNotNull(); assertThat(mHolder.summaryView).isNotNull(); assertThat(mHolder.iconView).isNotNull(); Loading @@ -90,8 +90,8 @@ public class IntentSearchViewHolderTest { } @Test public void testBindViewElements_AllUpdated() { SearchResult result = getSearchResult(); public void testBindViewElements_allUpdated() { SearchResult result = getSearchResult(TITLE, SUMMARY, mIcon); mHolder.onBind(mFragment, result); mHolder.itemView.performClick(); Loading @@ -109,6 +109,14 @@ public class IntentSearchViewHolderTest { any(Pair.class)); } @Test public void testBindViewIcon_nullIcon_imageDrawableIsNull() { final SearchResult result = getSearchResult(TITLE, SUMMARY, null); mHolder.onBind(mFragment, result); assertThat(mHolder.iconView.getDrawable()).isNull(); } @Test public void testBindViewElements_emptySummary_hideSummaryView() { final SearchResult result = new Builder() Loading Loading @@ -155,15 +163,15 @@ public class IntentSearchViewHolderTest { assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.GONE); } private SearchResult getSearchResult() { private SearchResult getSearchResult(String title, String summary, Drawable icon) { Builder builder = new Builder(); builder.addTitle(TITLE) .addSummary(SUMMARY) builder.addTitle(title) .addSummary(summary) .addRank(1) .addPayload(new IntentPayload( new Intent().setComponent(new ComponentName("pkg", "class")))) .addBreadcrumbs(new ArrayList<>()) .addIcon(mIcon); .addIcon(icon); return builder.build(); } Loading tests/robotests/src/com/android/settings/search2/DatabaseIndexingManagerTest.java +18 −5 Original line number Diff line number Diff line Loading @@ -99,6 +99,7 @@ public class DatabaseIndexingManagerTest { private final String screenTitle = "screen title"; private final String className = "class name"; private final int iconResId = 0xff; private final int noIcon = 0; private final String action = "action"; private final String targetPackage = "target package"; private final String targetClass = "target class"; Loading Loading @@ -388,7 +389,7 @@ public class DatabaseIndexingManagerTest { // Class Name assertThat(cursor.getString(11)).isEqualTo(className); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isEqualTo(action); // Target Package Loading Loading @@ -442,7 +443,7 @@ public class DatabaseIndexingManagerTest { // Class Name assertThat(cursor.getString(11)).isEqualTo(className); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isEqualTo(action); // Target Package Loading Loading @@ -496,7 +497,7 @@ public class DatabaseIndexingManagerTest { // Class Name assertThat(cursor.getString(11)).isEqualTo(className); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isEqualTo(action); // Target Package Loading @@ -515,6 +516,18 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getBlob(20)).isNull(); } @Test public void testAddResource_iconAddedFromXml() { SearchIndexableResource resource = getFakeResource(R.xml.connected_devices); mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<>()); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null); cursor.moveToPosition(0); // Icon assertThat(cursor.getInt(12)).isNotEqualTo(noIcon); } // Tests for the flow: IndexOneResource -> IndexFromProvider -> IndexFromResource -> // UpdateOneRowWithFilteredData -> UpdateOneRow Loading Loading @@ -565,7 +578,7 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getString(11)) .isEqualTo("com.android.settings.display.ScreenZoomSettings"); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isNull(); // Target Package Loading Loading @@ -630,7 +643,7 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getString(11)) .isEqualTo("com.android.settings.display.ScreenZoomSettings"); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isNull(); // Target Package Loading Loading
src/com/android/settings/search2/DatabaseIndexingManager.java +5 −7 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.Build; import android.provider.SearchIndexableData; import android.provider.SearchIndexableResource; import android.provider.SearchIndexablesContract; import android.support.annotation.DrawableRes; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.AttributeSet; Loading Loading @@ -525,8 +526,6 @@ public class DatabaseIndexingManager { final int count = cursor.getCount(); if (count > 0) { while (cursor.moveToNext()) { final int providerRank = cursor.getInt(COLUMN_INDEX_XML_RES_RANK); // TODO remove provider rank final int xmlResId = cursor.getInt(COLUMN_INDEX_XML_RES_RESID); final String className = cursor.getString(COLUMN_INDEX_XML_RES_CLASS_NAME); Loading Loading @@ -720,7 +719,6 @@ public class DatabaseIndexingManager { final AttributeSet attrs = Xml.asAttributeSet(parser); final String screenTitle = XmlParserUtils.getDataTitle(context, attrs); String key = XmlParserUtils.getDataKey(context, attrs); String title; Loading @@ -730,10 +728,11 @@ public class DatabaseIndexingManager { String keywords; String headerKeywords; String childFragment; @DrawableRes int iconResId; ResultPayload payload; boolean enabled; final String fragmentName = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; final String intentAction = sir.intentAction; final String intentTargetPackage = sir.intentTargetPackage; Loading Loading @@ -784,6 +783,7 @@ public class DatabaseIndexingManager { key = XmlParserUtils.getDataKey(context, attrs); enabled = ! nonIndexableKeys.contains(key); keywords = XmlParserUtils.getDataKeywords(context, attrs); iconResId = XmlParserUtils.getDataIcon(context, attrs); if (isHeaderUnique && TextUtils.equals(headerTitle, title)) { isHeaderUnique = false; Loading Loading @@ -853,7 +853,6 @@ public class DatabaseIndexingManager { List<String> nonIndexableKeys) { final String className = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; if (provider == null) { Loading Loading @@ -881,7 +880,7 @@ public class DatabaseIndexingManager { .setEntries(raw.entries) .setClassName(className) .setScreenTitle(raw.screenTitle) .setIconResId(iconResId) .setIconResId(raw.iconResId) .setRank(rank) .setIntentAction(raw.intentAction) .setIntentTargetPackage(raw.intentTargetPackage) Loading @@ -907,7 +906,6 @@ public class DatabaseIndexingManager { continue; } item.iconResId = (item.iconResId == 0) ? iconResId : item.iconResId; item.className = (TextUtils.isEmpty(item.className)) ? className : item.className; indexFromResource(database, localeStr, item, nonIndexableKeys); Loading
src/com/android/settings/search2/SearchViewHolder.java +2 −4 Original line number Diff line number Diff line Loading @@ -69,11 +69,9 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { AppSearchResult appResult = (AppSearchResult) result; PackageManager pm = fragment.getActivity().getPackageManager(); iconView.setImageDrawable(appResult.info.loadIcon(pm)); } else if (result.icon != null) { iconView.setImageDrawable(result.icon); // TODO set color of icon } else { iconView.setBackgroundResource(R.drawable.empty_icon); // Valid even when result.icon is null. iconView.setImageDrawable(result.icon); } bindBreadcrumbView(result); Loading
src/com/android/settings/search2/XmlParserUtils.java +11 −11 Original line number Diff line number Diff line Loading @@ -71,6 +71,14 @@ public class XmlParserUtils { return getData(context, attrs, R.styleable.Preference, R.styleable.Preference_keywords); } public static int getDataIcon(Context context, AttributeSet attrs) { final TypedArray ta = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Preference); final int dataIcon = ta.getResourceId(com.android.internal.R.styleable.Icon_icon, 0); ta.recycle(); return dataIcon; } /** * Returns the fragment name if this preference launches a child fragment. */ Loading @@ -80,17 +88,9 @@ public class XmlParserUtils { } private static String getData(Context context, AttributeSet set, int[] attrs, int resId) { final TypedArray sa = context.obtainStyledAttributes(set, attrs); final TypedValue tv = sa.peekValue(resId); CharSequence data = null; if (tv != null && tv.type == TypedValue.TYPE_STRING) { if (tv.resourceId != 0) { data = context.getText(tv.resourceId); } else { data = tv.string; } } final TypedArray ta = context.obtainStyledAttributes(set, attrs); String data = ta.getString(resId); ta.recycle(); return (data != null) ? data.toString() : null; } Loading
tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java +15 −7 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ public class IntentSearchViewHolderTest { } @Test public void testConstructor_MembersNotNull() { public void testConstructor_membersNotNull() { assertThat(mHolder.titleView).isNotNull(); assertThat(mHolder.summaryView).isNotNull(); assertThat(mHolder.iconView).isNotNull(); Loading @@ -90,8 +90,8 @@ public class IntentSearchViewHolderTest { } @Test public void testBindViewElements_AllUpdated() { SearchResult result = getSearchResult(); public void testBindViewElements_allUpdated() { SearchResult result = getSearchResult(TITLE, SUMMARY, mIcon); mHolder.onBind(mFragment, result); mHolder.itemView.performClick(); Loading @@ -109,6 +109,14 @@ public class IntentSearchViewHolderTest { any(Pair.class)); } @Test public void testBindViewIcon_nullIcon_imageDrawableIsNull() { final SearchResult result = getSearchResult(TITLE, SUMMARY, null); mHolder.onBind(mFragment, result); assertThat(mHolder.iconView.getDrawable()).isNull(); } @Test public void testBindViewElements_emptySummary_hideSummaryView() { final SearchResult result = new Builder() Loading Loading @@ -155,15 +163,15 @@ public class IntentSearchViewHolderTest { assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.GONE); } private SearchResult getSearchResult() { private SearchResult getSearchResult(String title, String summary, Drawable icon) { Builder builder = new Builder(); builder.addTitle(TITLE) .addSummary(SUMMARY) builder.addTitle(title) .addSummary(summary) .addRank(1) .addPayload(new IntentPayload( new Intent().setComponent(new ComponentName("pkg", "class")))) .addBreadcrumbs(new ArrayList<>()) .addIcon(mIcon); .addIcon(icon); return builder.build(); } Loading
tests/robotests/src/com/android/settings/search2/DatabaseIndexingManagerTest.java +18 −5 Original line number Diff line number Diff line Loading @@ -99,6 +99,7 @@ public class DatabaseIndexingManagerTest { private final String screenTitle = "screen title"; private final String className = "class name"; private final int iconResId = 0xff; private final int noIcon = 0; private final String action = "action"; private final String targetPackage = "target package"; private final String targetClass = "target class"; Loading Loading @@ -388,7 +389,7 @@ public class DatabaseIndexingManagerTest { // Class Name assertThat(cursor.getString(11)).isEqualTo(className); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isEqualTo(action); // Target Package Loading Loading @@ -442,7 +443,7 @@ public class DatabaseIndexingManagerTest { // Class Name assertThat(cursor.getString(11)).isEqualTo(className); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isEqualTo(action); // Target Package Loading Loading @@ -496,7 +497,7 @@ public class DatabaseIndexingManagerTest { // Class Name assertThat(cursor.getString(11)).isEqualTo(className); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isEqualTo(action); // Target Package Loading @@ -515,6 +516,18 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getBlob(20)).isNull(); } @Test public void testAddResource_iconAddedFromXml() { SearchIndexableResource resource = getFakeResource(R.xml.connected_devices); mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<>()); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null); cursor.moveToPosition(0); // Icon assertThat(cursor.getInt(12)).isNotEqualTo(noIcon); } // Tests for the flow: IndexOneResource -> IndexFromProvider -> IndexFromResource -> // UpdateOneRowWithFilteredData -> UpdateOneRow Loading Loading @@ -565,7 +578,7 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getString(11)) .isEqualTo("com.android.settings.display.ScreenZoomSettings"); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isNull(); // Target Package Loading Loading @@ -630,7 +643,7 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getString(11)) .isEqualTo("com.android.settings.display.ScreenZoomSettings"); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); assertThat(cursor.getInt(12)).isEqualTo(noIcon); // Intent Action assertThat(cursor.getString(13)).isNull(); // Target Package Loading