Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a20e068d authored by Matthew Fritze's avatar Matthew Fritze Committed by android-build-merger
Browse files

Merge "Only add icons to settings items with icons" into oc-dev am: ec005731

am: ab13b378

Change-Id: I7194c8f3a1e17cc7b44548f97b0eabb51d4f6616
parents 74dd8bd3 ab13b378
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -34,6 +34,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;
@@ -527,8 +528,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);
@@ -722,7 +721,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;
@@ -732,10 +730,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;
@@ -786,6 +785,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;
@@ -855,7 +855,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) {
@@ -883,7 +882,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)
@@ -909,7 +908,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);
+2 −4
Original line number Diff line number Diff line
@@ -72,11 +72,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);
+11 −11
Original line number Diff line number Diff line
@@ -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.
     */
@@ -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;
    }

+18 −5
Original line number Diff line number Diff line
@@ -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";
@@ -394,7 +395,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
@@ -451,7 +452,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
@@ -508,7 +509,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
@@ -530,6 +531,18 @@ public class DatabaseIndexingManagerTest {
        assertThat(unmarshalledPayload).isInstanceOf(ResultPayload.class);
    }

    @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

@@ -580,7 +593,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
@@ -648,7 +661,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
+15 −7
Original line number Diff line number Diff line
@@ -78,7 +78,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();
@@ -86,8 +86,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();

@@ -105,6 +105,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()
@@ -151,15 +159,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 ResultPayload(
                        new Intent().setComponent(new ComponentName("pkg", "class"))))
                .addBreadcrumbs(new ArrayList<>())
                .addIcon(mIcon);
                .addIcon(icon);

        return builder.build();
    }