Loading src/com/android/settings/intelligence/search/car/CarSearchFeatureProviderImpl.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; } } Loading src/com/android/settings/intelligence/search/indexing/DatabaseIndexingManager.java +10 −2 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading @@ -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); } } Loading Loading @@ -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 Loading src/com/android/settings/intelligence/search/indexing/IndexData.java +16 −3 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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 Loading src/com/android/settings/intelligence/search/indexing/IndexDataConverter.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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(); } } } src/com/android/settings/intelligence/search/indexing/car/CarDatabaseIndexingManager.java 0 → 100644 +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
src/com/android/settings/intelligence/search/car/CarSearchFeatureProviderImpl.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; } } Loading
src/com/android/settings/intelligence/search/indexing/DatabaseIndexingManager.java +10 −2 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading @@ -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); } } Loading Loading @@ -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 Loading
src/com/android/settings/intelligence/search/indexing/IndexData.java +16 −3 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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 Loading
src/com/android/settings/intelligence/search/indexing/IndexDataConverter.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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(); } } }
src/com/android/settings/intelligence/search/indexing/car/CarDatabaseIndexingManager.java 0 → 100644 +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); } }