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

Commit 7dd9c3b6 authored by Pinyao Ting's avatar Pinyao Ting
Browse files

Permission to access shortcuts in AppSearch to Launcher and Assistant

Adopts permission based visibility api to make shortcuts persisted in
AppSearch visible to the apps that has the role Home and Assistant.

Bug: 224835051
Test: manual
Change-Id: Ice9c1c056d56cbd12ae95ee9a11a8329f4a4c1d0
parent 8b50a568
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.app.appsearch.AppSearchManager;
import android.app.appsearch.AppSearchResult;
import android.app.appsearch.AppSearchSession;
import android.app.appsearch.GetByDocumentIdRequest;
import android.app.appsearch.PackageIdentifier;
import android.app.appsearch.PutDocumentsRequest;
import android.app.appsearch.RemoveByDocumentIdRequest;
import android.app.appsearch.ReportUsageRequest;
@@ -180,11 +179,6 @@ class ShortcutPackage extends ShortcutPackageItem {
     */
    private final ArrayList<ShareTargetInfo> mShareTargets = new ArrayList<>(0);

    /**
     * All external packages that have gained access to the shortcuts from this package
     */
    private final Map<String, PackageIdentifier> mPackageIdentifiers = new ArrayMap<>(0);

    /**
     * # of times the package has called rate-limited APIs.
     */
@@ -2313,14 +2307,15 @@ class ShortcutPackage extends ShortcutPackageItem {
        }
        SetSchemaRequest.Builder schemaBuilder = new SetSchemaRequest.Builder()
                .addSchemas(AppSearchShortcutPerson.SCHEMA, AppSearchShortcutInfo.SCHEMA)
                .setForceOverride(true);
        for (PackageIdentifier pi : mPackageIdentifiers.values()) {
            schemaBuilder = schemaBuilder
                    .setSchemaTypeVisibilityForPackage(
                            AppSearchShortcutPerson.SCHEMA_TYPE, true, pi)
                    .setSchemaTypeVisibilityForPackage(
                            AppSearchShortcutInfo.SCHEMA_TYPE, true, pi);
        }
                .setForceOverride(true)
                .addRequiredPermissionsForSchemaTypeVisibility(AppSearchShortcutInfo.SCHEMA_TYPE,
                        Collections.singleton(SetSchemaRequest.READ_HOME_APP_SEARCH_DATA))
                .addRequiredPermissionsForSchemaTypeVisibility(AppSearchShortcutInfo.SCHEMA_TYPE,
                        Collections.singleton(SetSchemaRequest.READ_ASSISTANT_APP_SEARCH_DATA))
                .addRequiredPermissionsForSchemaTypeVisibility(AppSearchShortcutPerson.SCHEMA_TYPE,
                        Collections.singleton(SetSchemaRequest.READ_HOME_APP_SEARCH_DATA))
                .addRequiredPermissionsForSchemaTypeVisibility(AppSearchShortcutPerson.SCHEMA_TYPE,
                        Collections.singleton(SetSchemaRequest.READ_ASSISTANT_APP_SEARCH_DATA));
        final AndroidFuture<AppSearchSession> future = new AndroidFuture<>();
        session.setSchema(
                schemaBuilder.build(), mExecutor, mShortcutUser.mExecutor, result -> {