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

Commit 66037ac4 authored by Xin Li's avatar Xin Li
Browse files

Merge Android 14

Bug: 298295554
Merged-In: I113e998ac78012d1ad6d24a0855d9612c9f33bda
Change-Id: I6a1dfb47a4bb95ffad5d0b747705cd683b3cf826
parents 0220695d 416e2147
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ android_library {
        "androidx.preference_preference",
        "androidx.recyclerview_recyclerview",
        "androidx.legacy_legacy-preference-v14",
        "SettingsLibActivityEmbedding",
    ],
    proto: {
        type: "nano",
+2 −1
Original line number Diff line number Diff line
@@ -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" />
+9 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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 */);
+1 −0
Original line number Diff line number Diff line
@@ -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);
+39 −11
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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.
@@ -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);
    }
@@ -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);
    }
@@ -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.
@@ -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);
        }
@@ -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