From 1a1f5a2118e002c4fa14efd4ab08d2a3e1e48572 Mon Sep 17 00:00:00 2001 From: Nadav Bar Date: Sun, 17 Mar 2019 16:15:14 +0200 Subject: [PATCH] Grant record audio permission to SystemCaptionsService instead of ContentCaptureService Now that we have a definition for a SystemCaptionsService we should move to use it instead of piggybacking on ContentCaptureService. This is also required to ensure that T2C will be granted audio recording permission in case it will be shipped in a different APK for OEMs. Test: Manual and DefaultPermissionGrantPolicyTest. Bug: 128622041. Change-Id: Ic0b5b21b05ff1ad200472bfc1c4eaa3c588324df --- .../app/ApplicationPackageManager.java | 4 ++-- .../android/content/pm/IPackageManager.aidl | 2 +- .../android/content/pm/PackageManager.java | 4 ++-- .../server/pm/PackageManagerService.java | 19 +++++++++---------- .../DefaultPermissionGrantPolicy.java | 10 +++++----- .../backup/testutils/IPackageManagerStub.java | 2 +- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index d3e350779c6bb..8a4c45318adb9 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -3055,9 +3055,9 @@ public class ApplicationPackageManager extends PackageManager { } @Override - public String getContentCaptureServicePackageName() { + public String getSystemCaptionsServicePackageName() { try { - return mPM.getContentCaptureServicePackageName(); + return mPM.getSystemCaptionsServicePackageName(); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index fd3529b05c35a..464e866e0b31c 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -742,7 +742,7 @@ interface IPackageManager { String getAppPredictionServicePackageName(); - String getContentCaptureServicePackageName(); + String getSystemCaptionsServicePackageName(); String getIncidentReportApproverPackageName(); diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 9037759722b28..0f37c3465af89 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -6860,9 +6860,9 @@ public abstract class PackageManager { * * @hide */ - public String getContentCaptureServicePackageName() { + public String getSystemCaptionsServicePackageName() { throw new UnsupportedOperationException( - "getContentCaptureServicePackageName not implemented in subclass"); + "getSystemCaptionsServicePackageName not implemented in subclass"); } /** diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e5b6397e863d3..eb1d4044f7188 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -160,9 +160,9 @@ import android.content.pm.InstantAppInfo; import android.content.pm.InstantAppRequest; import android.content.pm.InstrumentationInfo; import android.content.pm.IntentFilterVerificationInfo; -import android.content.pm.PackageBackwardCompatibility; import android.content.pm.KeySet; import android.content.pm.ModuleInfo; +import android.content.pm.PackageBackwardCompatibility; import android.content.pm.PackageInfo; import android.content.pm.PackageInfoLite; import android.content.pm.PackageInstaller; @@ -20124,21 +20124,20 @@ public class PackageManagerService extends IPackageManager.Stub } @Override - public String getContentCaptureServicePackageName() { - String contentCaptureServiceName = - mContext.getString(R.string.config_defaultContentCaptureService); + public String getSystemCaptionsServicePackageName() { + String flattenedSystemCaptionsServiceComponentName = + mContext.getString(R.string.config_defaultSystemCaptionsService); - if (TextUtils.isEmpty(contentCaptureServiceName)) { + if (TextUtils.isEmpty(flattenedSystemCaptionsServiceComponentName)) { return null; } - int separatorIndex = contentCaptureServiceName.indexOf("/"); - - if (separatorIndex < 0) { + ComponentName systemCaptionsServiceComponentName = + ComponentName.unflattenFromString(flattenedSystemCaptionsServiceComponentName); + if (systemCaptionsServiceComponentName == null) { return null; } - - return contentCaptureServiceName.substring(0, separatorIndex); + return systemCaptionsServiceComponentName.getPackageName(); } public String getIncidentReportApproverPackageName() { diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index f97dd3b680bb0..c5af843e32eef 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -742,11 +742,11 @@ public final class DefaultPermissionGrantPolicy { grantSystemFixedPermissionsToSystemPackage("com.android.sharedstoragebackup", userId, STORAGE_PERMISSIONS); - // Content Capture Service - String contentCaptureServicePackageName = - mContext.getPackageManager().getContentCaptureServicePackageName(); - if (!TextUtils.isEmpty(contentCaptureServicePackageName)) { - grantPermissionsToSystemPackage(contentCaptureServicePackageName, userId, + // System Captions Service + String systemCaptionsServicePackageName = + mContext.getPackageManager().getSystemCaptionsServicePackageName(); + if (!TextUtils.isEmpty(systemCaptionsServicePackageName)) { + grantPermissionsToSystemPackage(systemCaptionsServicePackageName, userId, MICROPHONE_PERMISSIONS); } diff --git a/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java b/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java index 26b122411c6bc..caf6c9cac5096 100644 --- a/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java +++ b/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java @@ -1138,7 +1138,7 @@ public class IPackageManagerStub implements IPackageManager { } @Override - public String getContentCaptureServicePackageName() throws RemoteException { + public String getSystemCaptionsServicePackageName() throws RemoteException { return null; }