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

Commit 16f9b32d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Speed up search indexing."

parents bf498bf2 95985848
Loading
Loading
Loading
Loading
+29 −19
Original line number Diff line number Diff line
@@ -26,18 +26,18 @@ import static android.provider.SearchIndexablesContract.RawData.COLUMN_KEYWORDS;
import static android.provider.SearchIndexablesContract.RawData.COLUMN_RANK;
import static android.provider.SearchIndexablesContract.RawData.COLUMN_TITLE;

import static com.android.packageinstaller.permission.model.PermissionGroups.getAllPermissionGroups;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.provider.SearchIndexablesProvider;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.packageinstaller.permission.model.PermissionGroup;
import com.android.packageinstaller.permission.utils.Utils;
import com.android.permissioncontroller.R;

import java.io.FileInputStream;
@@ -48,7 +48,8 @@ import java.util.List;
import java.util.UUID;

public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider {
    private static final String OS_PKG = "android";
    private static final String LOG_TAG = PermissionSearchIndexablesProvider.class.getSimpleName();

    private static final String EXTRA_SETTINGS_SEARCH_KEY = ":settings:fragment_args_key";

    public static final String ACTION_MANAGE_PERMISSION_APPS =
@@ -73,25 +74,25 @@ public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider
    public Cursor queryRawData(String[] projection) {
        String password = getPassword(getContext());

        List<PermissionGroup> permissionGroups = getAllPermissionGroups(getContext(), null, false);
        PackageManager pm = getContext().getPackageManager();

        List<String> permissionGroupNames = Utils.getPlatformPermissionGroups();
        MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);

        int numPermissionGroups = permissionGroups.size();
        int numPermissionGroups = permissionGroupNames.size();
        for (int i = 0; i < numPermissionGroups; i++) {
            PermissionGroup group = permissionGroups.get(i);
            String groupName = permissionGroupNames.get(i);

            if (OS_PKG.equals(group.getDeclaringPackage())) {
                CharSequence label = group.getLabel();
            CharSequence label = getPermissionGroupLabel(groupName, pm);

            cursor.newRow().add(COLUMN_RANK, 0)
                    .add(COLUMN_TITLE, label)
                    .add(COLUMN_KEYWORDS, label + ", "
                            + getContext().getString(R.string.permission_search_keyword))
                    .add(COLUMN_KEY, password + getContext().getPackageName()
                                + "," + group.getName())
                            + "," + groupName)
                    .add(COLUMN_INTENT_ACTION, ACTION_MANAGE_PERMISSION_APPS);
        }
        }

        cursor.newRow().add(COLUMN_RANK, 0)
                .add(COLUMN_TITLE, getContext().getString(R.string.permission_usage_title))
@@ -103,6 +104,15 @@ public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider
        return cursor;
    }

    private CharSequence getPermissionGroupLabel(String groupName, PackageManager pm) {
        try {
            return pm.getPermissionGroupInfo(groupName, 0).loadLabel(pm);
        } catch (PackageManager.NameNotFoundException e) {
            Log.w(LOG_TAG, "Cannot find group label for " + groupName, e);
        }
        return null;
    }

    @Override
    public Cursor queryNonIndexableKeys(String[] projection) {
        return new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS);
+9 −0
Original line number Diff line number Diff line
@@ -395,6 +395,15 @@ public final class Utils {
        return PLATFORM_PERMISSION_GROUPS.containsKey(name);
    }

    /**
     * Get the names of the platform permission groups.
     *
     * @return the names of the platform permission groups.
     */
    public static List<String> getPlatformPermissionGroups() {
        return new ArrayList<>(PLATFORM_PERMISSION_GROUPS.keySet());
    }

    /**
     * Should UI show this permission.
     *