diff options
author | Xin Li <delphij@google.com> | 2017-11-14 12:31:11 -0800 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2017-11-14 12:31:11 -0800 |
commit | 220871a697290529278ed16db508eda8e12f3fc7 (patch) | |
tree | bc13101b63c6fe39a9d92706ecb7ded7f98f5a9c /services/print | |
parent | 802f191b2b84a1b1b82c7f6f3268846084b35dfb (diff) | |
parent | 98e12851336b7db16e583f9afac63ecc97465980 (diff) |
Merge commit '98e12851336b7db16e583f9afac63ecc97465980' from
oc-mr1-dev-plus-aosp-without-vendor into stage-aosp-master.
Change-Id: Ia7b8da4a00d215160e4a4fa40f6044208d1297b7
Merged-In: I19846d2a3ee27aecbae2367a74ee49082eea154d
Diffstat (limited to 'services/print')
-rw-r--r-- | services/print/java/com/android/server/print/PrintManagerService.java | 30 | ||||
-rw-r--r-- | services/print/java/com/android/server/print/RemotePrintSpooler.java | 2 |
2 files changed, 26 insertions, 6 deletions
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java index 3ec83800557a..5121c29d688d 100644 --- a/services/print/java/com/android/server/print/PrintManagerService.java +++ b/services/print/java/com/android/server/print/PrintManagerService.java @@ -263,6 +263,8 @@ public final class PrintManagerService extends SystemService { Preconditions.checkFlagsArgument(selectionFlags, PrintManager.DISABLED_SERVICES | PrintManager.ENABLED_SERVICES); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICES, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -316,6 +318,8 @@ public final class PrintManagerService extends SystemService { @Override public List<RecommendationInfo> getPrintServiceRecommendations(int userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -538,6 +542,8 @@ public final class PrintManagerService extends SystemService { int userId) throws RemoteException { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PRINT_SERVICES, + null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -560,6 +566,8 @@ public final class PrintManagerService extends SystemService { int userId) { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PRINT_SERVICES, + null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -583,6 +591,8 @@ public final class PrintManagerService extends SystemService { throws RemoteException { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -605,6 +615,8 @@ public final class PrintManagerService extends SystemService { IRecommendationsChangeListener listener, int userId) { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -724,14 +736,18 @@ public final class PrintManagerService extends SystemService { UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false, false /* enforceUserUnlockingOrUnlocked */); + boolean prunePrintServices = false; synchronized (mLock) { if (hadPrintService(userState, packageName) || hasPrintService(packageName)) { userState.updateIfNeededLocked(); + prunePrintServices = true; } } - userState.prunePrintServices(); + if (prunePrintServices) { + userState.prunePrintServices(); + } } @Override @@ -740,13 +756,17 @@ public final class PrintManagerService extends SystemService { UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false, false /* enforceUserUnlockingOrUnlocked */); + boolean prunePrintServices = false; synchronized (mLock) { if (hadPrintService(userState, packageName)) { userState.updateIfNeededLocked(); + prunePrintServices = true; } } - userState.prunePrintServices(); + if (prunePrintServices) { + userState.prunePrintServices(); + } } @Override @@ -888,12 +908,12 @@ public final class PrintManagerService extends SystemService { private int resolveCallingAppEnforcingPermissions(int appId) { final int callingUid = Binder.getCallingUid(); - if (callingUid == 0 || callingUid == Process.SYSTEM_UID - || callingUid == Process.SHELL_UID) { + if (callingUid == 0) { return appId; } final int callingAppId = UserHandle.getAppId(callingUid); - if (appId == callingAppId) { + if (appId == callingAppId || callingAppId == Process.SHELL_UID + || callingAppId == Process.SYSTEM_UID) { return appId; } if (mContext.checkCallingPermission( diff --git a/services/print/java/com/android/server/print/RemotePrintSpooler.java b/services/print/java/com/android/server/print/RemotePrintSpooler.java index f4c9c86fda2a..abd2244959cf 100644 --- a/services/print/java/com/android/server/print/RemotePrintSpooler.java +++ b/services/print/java/com/android/server/print/RemotePrintSpooler.java @@ -72,7 +72,7 @@ final class RemotePrintSpooler { private static final boolean DEBUG = false; private static final long BIND_SPOOLER_SERVICE_TIMEOUT = - ("eng".equals(Build.TYPE)) ? 120000 : 10000; + (Build.IS_ENG) ? 120000 : 10000; private final Object mLock = new Object(); |