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

Commit 4d11ea05 authored by Alex Stetson's avatar Alex Stetson Committed by Automerger Merge Worker
Browse files

Merge "Customize actionless car intents" into rvc-dev am: 6a335a15

Change-Id: I6aec56172a9ac6b925311b8370584c5d54fa3c05
parents 0b904634 6a335a15
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ import com.android.settings.intelligence.search.SearchResultLoader;
import com.android.settings.intelligence.search.indexing.DatabaseIndexingManager;
import com.android.settings.intelligence.search.indexing.DatabaseIndexingManager;
import com.android.settings.intelligence.search.indexing.IndexData;
import com.android.settings.intelligence.search.indexing.IndexData;
import com.android.settings.intelligence.search.indexing.IndexingCallback;
import com.android.settings.intelligence.search.indexing.IndexingCallback;
import com.android.settings.intelligence.search.indexing.car.CarDatabaseIndexingManager;
import com.android.settings.intelligence.search.query.DatabaseResultTask;
import com.android.settings.intelligence.search.query.DatabaseResultTask;
import com.android.settings.intelligence.search.query.InstalledAppResultTask;
import com.android.settings.intelligence.search.query.InstalledAppResultTask;
import com.android.settings.intelligence.search.query.SearchQueryTask;
import com.android.settings.intelligence.search.query.SearchQueryTask;
@@ -49,7 +50,7 @@ public class CarSearchFeatureProviderImpl implements SearchFeatureProvider {
    private static final String TAG = "CarSearchFeatureProvider";
    private static final String TAG = "CarSearchFeatureProvider";
    private static final long SMART_SEARCH_RANKING_TIMEOUT = 300L;
    private static final long SMART_SEARCH_RANKING_TIMEOUT = 300L;


    private DatabaseIndexingManager mDatabaseIndexingManager;
    private CarDatabaseIndexingManager mDatabaseIndexingManager;
    private ExecutorService mExecutorService;
    private ExecutorService mExecutorService;
    private SiteMapManager mSiteMapManager;
    private SiteMapManager mSiteMapManager;


@@ -75,7 +76,8 @@ public class CarSearchFeatureProviderImpl implements SearchFeatureProvider {
    @Override
    @Override
    public DatabaseIndexingManager getIndexingManager(Context context) {
    public DatabaseIndexingManager getIndexingManager(Context context) {
        if (mDatabaseIndexingManager == null) {
        if (mDatabaseIndexingManager == null) {
            mDatabaseIndexingManager = new DatabaseIndexingManager(context.getApplicationContext());
            mDatabaseIndexingManager = new CarDatabaseIndexingManager(
                    context.getApplicationContext());
        }
        }
        return mDatabaseIndexingManager;
        return mDatabaseIndexingManager;
    }
    }
+10 −2
Original line number Original line Diff line number Diff line
@@ -178,7 +178,7 @@ public class DatabaseIndexingManager {


    private List<IndexData> getIndexData(PreIndexData data) {
    private List<IndexData> getIndexData(PreIndexData data) {
        if (mConverter == null) {
        if (mConverter == null) {
            mConverter = new IndexDataConverter(mContext);
            mConverter = getIndexDataConverter(mContext);
        }
        }
        return mConverter.convertPreIndexDataToIndexData(data);
        return mConverter.convertPreIndexDataToIndexData(data);
    }
    }
@@ -186,7 +186,7 @@ public class DatabaseIndexingManager {
    private List<SiteMapPair> getSiteMapPairs(List<IndexData> indexData,
    private List<SiteMapPair> getSiteMapPairs(List<IndexData> indexData,
            List<Pair<String, String>> siteMapClassNames) {
            List<Pair<String, String>> siteMapClassNames) {
        if (mConverter == null) {
        if (mConverter == null) {
            mConverter = new IndexDataConverter(mContext);
            mConverter = getIndexDataConverter(mContext);
        }
        }
        return mConverter.convertSiteMapPairs(indexData, siteMapClassNames);
        return mConverter.convertSiteMapPairs(indexData, siteMapClassNames);
    }
    }
@@ -312,6 +312,14 @@ public class DatabaseIndexingManager {
        }
        }
    }
    }


    /**
     * Protected method to get a new IndexDataConverter instance. This method can be overridden
     * in subclasses to substitute in a custom IndexDataConverter.
     */
    protected IndexDataConverter getIndexDataConverter(Context context) {
        return new IndexDataConverter(context);
    }

    public class IndexingTask extends AsyncTask<Void, Void, Void> {
    public class IndexingTask extends AsyncTask<Void, Void, Void> {


        @VisibleForTesting
        @VisibleForTesting
+16 −3
Original line number Original line Diff line number Diff line
@@ -68,7 +68,7 @@ public class IndexData {
    private static final Pattern REMOVE_DIACRITICALS_PATTERN
    private static final Pattern REMOVE_DIACRITICALS_PATTERN
            = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
            = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");


    private IndexData(Builder builder) {
    protected IndexData(Builder builder) {
        locale = Locale.getDefault().toString();
        locale = Locale.getDefault().toString();
        updatedTitle = normalizeHyphen(builder.mTitle);
        updatedTitle = normalizeHyphen(builder.mTitle);
        updatedSummaryOn = normalizeHyphen(builder.mSummaryOn);
        updatedSummaryOn = normalizeHyphen(builder.mSummaryOn);
@@ -186,6 +186,18 @@ public class IndexData {
            return mKey;
            return mKey;
        }
        }


        public String getIntentAction() {
            return mIntentAction;
        }

        public String getIntentTargetPackage() {
            return mIntentTargetPackage;
        }

        public String getIntentTargetClass() {
            return mIntentTargetClass;
        }

        public Builder setSummaryOn(String summaryOn) {
        public Builder setSummaryOn(String summaryOn) {
            mSummaryOn = summaryOn;
            mSummaryOn = summaryOn;
            return this;
            return this;
@@ -290,9 +302,10 @@ public class IndexData {
        }
        }


        /**
        /**
         * Adds Intent payload to builder.
         * Builds Intent payload for the builder.
         * This protected method that can be overridden in a subclass for custom intents.
         */
         */
        private Intent buildIntent(Context context) {
        protected Intent buildIntent(Context context) {
            final Intent intent;
            final Intent intent;


            // TODO REFACTOR (b/62807132) With inline results re-add proper intent support
            // TODO REFACTOR (b/62807132) With inline results re-add proper intent support
+7 −3
Original line number Original line Diff line number Diff line
@@ -165,7 +165,7 @@ public class IndexDataConverter {
        // A row is enabled if it does not show up as an nonIndexableKey
        // A row is enabled if it does not show up as an nonIndexableKey
        boolean enabled = !(nonIndexableKeys != null && nonIndexableKeys.contains(raw.key));
        boolean enabled = !(nonIndexableKeys != null && nonIndexableKeys.contains(raw.key));


        final IndexData.Builder builder = new IndexData.Builder();
        final IndexData.Builder builder = getIndexDataBuilder();
        builder.setTitle(raw.title)
        builder.setTitle(raw.title)
                .setSummaryOn(raw.summaryOn)
                .setSummaryOn(raw.summaryOn)
                .setEntries(raw.entries)
                .setEntries(raw.entries)
@@ -244,7 +244,7 @@ public class IndexDataConverter {
            headerKeywords = XmlParserUtils.getDataKeywords(context, attrs);
            headerKeywords = XmlParserUtils.getDataKeywords(context, attrs);
            enabled = !nonIndexableKeys.contains(headerKey);
            enabled = !nonIndexableKeys.contains(headerKey);
            // TODO: Set payload type for header results
            // TODO: Set payload type for header results
            IndexData.Builder headerBuilder = new IndexData.Builder();
            IndexData.Builder headerBuilder = getIndexDataBuilder();
            headerBuilder.setTitle(headerTitle)
            headerBuilder.setTitle(headerTitle)
                    .setSummaryOn(headerSummary)
                    .setSummaryOn(headerSummary)
                    .setScreenTitle(screenTitle)
                    .setScreenTitle(screenTitle)
@@ -286,7 +286,7 @@ public class IndexDataConverter {
                    isHeaderUnique = false;
                    isHeaderUnique = false;
                }
                }


                builder = new IndexData.Builder();
                builder = getIndexDataBuilder();
                builder.setTitle(title)
                builder.setTitle(title)
                        .setKeywords(keywords)
                        .setKeywords(keywords)
                        .setClassName(sir.className)
                        .setClassName(sir.className)
@@ -365,4 +365,8 @@ public class IndexDataConverter {
        final Set<String> result = nonIndexableKeys.get(authority);
        final Set<String> result = nonIndexableKeys.get(authority);
        return result != null ? result : new ArraySet<>();
        return result != null ? result : new ArraySet<>();
    }
    }

    protected IndexData.Builder getIndexDataBuilder() {
        return new IndexData.Builder();
    }
}
}
+39 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.intelligence.search.indexing.car;

import android.content.Context;

import com.android.settings.intelligence.search.indexing.DatabaseIndexingManager;
import com.android.settings.intelligence.search.indexing.IndexDataConverter;
import com.android.settings.intelligence.search.indexing.PreIndexData;

/**
 * Car extension to {@link DatabaseIndexingManager} to use {@link CarIndexDataConverter} for
 * converting {@link PreIndexData} into {@link CarIndexData}.
 */
public class CarDatabaseIndexingManager extends DatabaseIndexingManager {

    public CarDatabaseIndexingManager(Context context) {
        super(context);
    }

    @Override
    protected IndexDataConverter getIndexDataConverter(Context context) {
        return new CarIndexDataConverter(context);
    }
}
Loading