Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ android_library { "androidx.preference_preference", "androidx.recyclerview_recyclerview", "androidx.legacy_legacy-preference-v14", "SettingsLibActivityEmbedding", ], proto: { type: "nano", Loading AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ <activity android:name=".search.SearchActivity" android:exported="true" android:theme="@style/Theme.Settings.NoActionBar"> android:theme="@style/Theme.Settings.NoActionBar" android:windowSoftInputMode="adjustResize"> <intent-filter priority="-1"> <action android:name="com.android.settings.action.SETTINGS_SEARCH" /> <action android:name="android.settings.APP_SEARCH_SETTINGS" /> Loading src/com/android/settings/intelligence/search/IntentSearchViewHolder.java +9 −3 Original line number Diff line number Diff line Loading @@ -16,13 +16,16 @@ */ package com.android.settings.intelligence.search; import static com.android.settings.intelligence.search.indexing.DatabaseIndexingUtils.SEARCH_RESULT_TRAMPOLINE_ACTION; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import androidx.annotation.VisibleForTesting; import android.util.Log; import android.view.View; import androidx.annotation.VisibleForTesting; import com.android.settings.intelligence.nano.SettingsIntelligenceLogProto; import java.util.List; Loading Loading @@ -59,8 +62,11 @@ public class IntentSearchViewHolder extends SearchViewHolder { final Intent intent = result.payload.getIntent(); // Use app user id to support work profile use case. if (result instanceof AppSearchResult) { AppSearchResult appResult = (AppSearchResult) result; fragment.getActivity().startActivity(intent); if (SEARCH_RESULT_TRAMPOLINE_ACTION.equals(intent.getAction())) { fragment.startActivityForResult(intent, REQUEST_CODE_NO_OP); } else { fragment.startActivity(intent); } } else { final PackageManager pm = fragment.getActivity().getPackageManager(); final List<ResolveInfo> info = pm.queryIntentActivities(intent, 0 /* flags */); Loading src/com/android/settings/intelligence/search/SearchFragment.java +1 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,7 @@ public class SearchFragment extends Fragment implements SearchView.OnQueryTextLi } public void onSearchResultClicked(SearchViewHolder resultViewHolder, SearchResult result) { hideKeyboard(); logSearchResultClicked(resultViewHolder, result); mSearchFeatureProvider.searchResultClicked(getContext(), mQuery, result); mSavedQueryController.saveQuery(mQuery); Loading src/com/android/settings/intelligence/search/indexing/DatabaseIndexingManager.java +39 −11 Original line number Diff line number Diff line Loading @@ -16,13 +16,13 @@ package com.android.settings.intelligence.search.indexing; import static com.android.settings.intelligence.search.query.DatabaseResultTask.SELECT_COLUMNS; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_AUTHORITY; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_PACKAGE; import static com.android.settings.intelligence.search.SearchFeatureProvider.DEBUG; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.CLASS_NAME; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_AUTHORITY; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_ENTRIES; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_KEY_REF; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_PACKAGE; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_TITLE; Loading @@ -35,8 +35,9 @@ import static com.android.settings.intelligence.search.indexing.IndexDatabaseHel import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.PAYLOAD; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.SCREEN_TITLE; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.TOP_LEVEL_MENU_KEY; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX; import static com.android.settings.intelligence.search.SearchFeatureProvider.DEBUG; import static com.android.settings.intelligence.search.query.DatabaseResultTask.SELECT_COLUMNS; import android.content.ContentValues; import android.content.Context; Loading @@ -47,13 +48,15 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.os.AsyncTask; import android.provider.SearchIndexablesContract; import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.util.Pair; import androidx.annotation.VisibleForTesting; import com.android.settings.intelligence.nano.SettingsIntelligenceLogProto; import com.android.settings.intelligence.overlay.FeatureFactory; import com.android.settings.intelligence.search.sitemap.HighlightableMenu; import com.android.settings.intelligence.search.sitemap.SiteMapPair; import java.util.List; Loading Loading @@ -160,9 +163,21 @@ public class DatabaseIndexingManager { database.beginTransaction(); // Convert all Pre-index data to Index data and and insert to db. final List<IndexData> indexData = getIndexData(preIndexData); insertIndexData(database, indexData); List<IndexData> indexData = getIndexData(preIndexData); // Load SiteMap before writing index data into DB for updating payload insertSiteMapData(database, getSiteMapPairs(indexData, preIndexData.getSiteMapPairs())); // Flag to re-init site map data in SiteMapManager. FeatureFactory.get(mContext).searchFeatureProvider() .getSiteMapManager() .setInitialized(false); // Update payload based on the site map to find the top menu entry if (HighlightableMenu.isFeatureEnabled(mContext)) { indexData = updateIndexDataPayload(mContext, indexData); } insertIndexData(database, indexData); // Only check for non-indexable key updates after initial index. // Enabled state with non-indexable keys is checked when items are first inserted. Loading @@ -178,7 +193,7 @@ public class DatabaseIndexingManager { private List<IndexData> getIndexData(PreIndexData data) { if (mConverter == null) { mConverter = getIndexDataConverter(mContext); mConverter = getIndexDataConverter(); } return mConverter.convertPreIndexDataToIndexData(data); } Loading @@ -186,7 +201,7 @@ public class DatabaseIndexingManager { private List<SiteMapPair> getSiteMapPairs(List<IndexData> indexData, List<Pair<String, String>> siteMapClassNames) { if (mConverter == null) { mConverter = getIndexDataConverter(mContext); mConverter = getIndexDataConverter(); } return mConverter.convertSiteMapPairs(indexData, siteMapClassNames); } Loading @@ -201,6 +216,13 @@ public class DatabaseIndexingManager { } } private List<IndexData> updateIndexDataPayload(Context context, List<IndexData> indexData) { if (mConverter == null) { mConverter = getIndexDataConverter(); } return mConverter.updateIndexDataPayload(context, indexData); } /** * Inserts all of the entries in {@param indexData} into the {@param database} * as Search Data and as part of the Information Hierarchy. Loading Loading @@ -232,6 +254,7 @@ public class DatabaseIndexingManager { values.put(DATA_KEY_REF, dataRow.key); values.put(PAYLOAD_TYPE, dataRow.payloadType); values.put(PAYLOAD, dataRow.payload); values.put(TOP_LEVEL_MENU_KEY, dataRow.topLevelMenuKey); database.replaceOrThrow(TABLE_PREFS_INDEX, null, values); } Loading Loading @@ -316,8 +339,13 @@ 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() { return new IndexDataConverter(); } @Deprecated protected IndexDataConverter getIndexDataConverter(Context context) { return new IndexDataConverter(context); return getIndexDataConverter(); } public class IndexingTask extends AsyncTask<Void, Void, Void> { Loading Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ android_library { "androidx.preference_preference", "androidx.recyclerview_recyclerview", "androidx.legacy_legacy-preference-v14", "SettingsLibActivityEmbedding", ], proto: { type: "nano", Loading
AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ <activity android:name=".search.SearchActivity" android:exported="true" android:theme="@style/Theme.Settings.NoActionBar"> android:theme="@style/Theme.Settings.NoActionBar" android:windowSoftInputMode="adjustResize"> <intent-filter priority="-1"> <action android:name="com.android.settings.action.SETTINGS_SEARCH" /> <action android:name="android.settings.APP_SEARCH_SETTINGS" /> Loading
src/com/android/settings/intelligence/search/IntentSearchViewHolder.java +9 −3 Original line number Diff line number Diff line Loading @@ -16,13 +16,16 @@ */ package com.android.settings.intelligence.search; import static com.android.settings.intelligence.search.indexing.DatabaseIndexingUtils.SEARCH_RESULT_TRAMPOLINE_ACTION; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import androidx.annotation.VisibleForTesting; import android.util.Log; import android.view.View; import androidx.annotation.VisibleForTesting; import com.android.settings.intelligence.nano.SettingsIntelligenceLogProto; import java.util.List; Loading Loading @@ -59,8 +62,11 @@ public class IntentSearchViewHolder extends SearchViewHolder { final Intent intent = result.payload.getIntent(); // Use app user id to support work profile use case. if (result instanceof AppSearchResult) { AppSearchResult appResult = (AppSearchResult) result; fragment.getActivity().startActivity(intent); if (SEARCH_RESULT_TRAMPOLINE_ACTION.equals(intent.getAction())) { fragment.startActivityForResult(intent, REQUEST_CODE_NO_OP); } else { fragment.startActivity(intent); } } else { final PackageManager pm = fragment.getActivity().getPackageManager(); final List<ResolveInfo> info = pm.queryIntentActivities(intent, 0 /* flags */); Loading
src/com/android/settings/intelligence/search/SearchFragment.java +1 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,7 @@ public class SearchFragment extends Fragment implements SearchView.OnQueryTextLi } public void onSearchResultClicked(SearchViewHolder resultViewHolder, SearchResult result) { hideKeyboard(); logSearchResultClicked(resultViewHolder, result); mSearchFeatureProvider.searchResultClicked(getContext(), mQuery, result); mSavedQueryController.saveQuery(mQuery); Loading
src/com/android/settings/intelligence/search/indexing/DatabaseIndexingManager.java +39 −11 Original line number Diff line number Diff line Loading @@ -16,13 +16,13 @@ package com.android.settings.intelligence.search.indexing; import static com.android.settings.intelligence.search.query.DatabaseResultTask.SELECT_COLUMNS; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_AUTHORITY; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_PACKAGE; import static com.android.settings.intelligence.search.SearchFeatureProvider.DEBUG; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.CLASS_NAME; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_AUTHORITY; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_ENTRIES; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_KEY_REF; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_PACKAGE; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.DATA_TITLE; Loading @@ -35,8 +35,9 @@ import static com.android.settings.intelligence.search.indexing.IndexDatabaseHel import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.PAYLOAD; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.SCREEN_TITLE; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.IndexColumns.TOP_LEVEL_MENU_KEY; import static com.android.settings.intelligence.search.indexing.IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX; import static com.android.settings.intelligence.search.SearchFeatureProvider.DEBUG; import static com.android.settings.intelligence.search.query.DatabaseResultTask.SELECT_COLUMNS; import android.content.ContentValues; import android.content.Context; Loading @@ -47,13 +48,15 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.os.AsyncTask; import android.provider.SearchIndexablesContract; import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.util.Pair; import androidx.annotation.VisibleForTesting; import com.android.settings.intelligence.nano.SettingsIntelligenceLogProto; import com.android.settings.intelligence.overlay.FeatureFactory; import com.android.settings.intelligence.search.sitemap.HighlightableMenu; import com.android.settings.intelligence.search.sitemap.SiteMapPair; import java.util.List; Loading Loading @@ -160,9 +163,21 @@ public class DatabaseIndexingManager { database.beginTransaction(); // Convert all Pre-index data to Index data and and insert to db. final List<IndexData> indexData = getIndexData(preIndexData); insertIndexData(database, indexData); List<IndexData> indexData = getIndexData(preIndexData); // Load SiteMap before writing index data into DB for updating payload insertSiteMapData(database, getSiteMapPairs(indexData, preIndexData.getSiteMapPairs())); // Flag to re-init site map data in SiteMapManager. FeatureFactory.get(mContext).searchFeatureProvider() .getSiteMapManager() .setInitialized(false); // Update payload based on the site map to find the top menu entry if (HighlightableMenu.isFeatureEnabled(mContext)) { indexData = updateIndexDataPayload(mContext, indexData); } insertIndexData(database, indexData); // Only check for non-indexable key updates after initial index. // Enabled state with non-indexable keys is checked when items are first inserted. Loading @@ -178,7 +193,7 @@ public class DatabaseIndexingManager { private List<IndexData> getIndexData(PreIndexData data) { if (mConverter == null) { mConverter = getIndexDataConverter(mContext); mConverter = getIndexDataConverter(); } return mConverter.convertPreIndexDataToIndexData(data); } Loading @@ -186,7 +201,7 @@ public class DatabaseIndexingManager { private List<SiteMapPair> getSiteMapPairs(List<IndexData> indexData, List<Pair<String, String>> siteMapClassNames) { if (mConverter == null) { mConverter = getIndexDataConverter(mContext); mConverter = getIndexDataConverter(); } return mConverter.convertSiteMapPairs(indexData, siteMapClassNames); } Loading @@ -201,6 +216,13 @@ public class DatabaseIndexingManager { } } private List<IndexData> updateIndexDataPayload(Context context, List<IndexData> indexData) { if (mConverter == null) { mConverter = getIndexDataConverter(); } return mConverter.updateIndexDataPayload(context, indexData); } /** * Inserts all of the entries in {@param indexData} into the {@param database} * as Search Data and as part of the Information Hierarchy. Loading Loading @@ -232,6 +254,7 @@ public class DatabaseIndexingManager { values.put(DATA_KEY_REF, dataRow.key); values.put(PAYLOAD_TYPE, dataRow.payloadType); values.put(PAYLOAD, dataRow.payload); values.put(TOP_LEVEL_MENU_KEY, dataRow.topLevelMenuKey); database.replaceOrThrow(TABLE_PREFS_INDEX, null, values); } Loading Loading @@ -316,8 +339,13 @@ 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() { return new IndexDataConverter(); } @Deprecated protected IndexDataConverter getIndexDataConverter(Context context) { return new IndexDataConverter(context); return getIndexDataConverter(); } public class IndexingTask extends AsyncTask<Void, Void, Void> { Loading