From 7dd9c3b6b803c896db9a12cf5047cb4ee6527a53 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Thu, 17 Mar 2022 00:34:09 +0000 Subject: [PATCH] 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 --- .../android/server/pm/ShortcutPackage.java | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index 8921fee6c8e0a..3c0377ddaa11e 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -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 mShareTargets = new ArrayList<>(0); - /** - * All external packages that have gained access to the shortcuts from this package - */ - private final Map 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 future = new AndroidFuture<>(); session.setSchema( schemaBuilder.build(), mExecutor, mShortcutUser.mExecutor, result -> {