summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt1
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java16
-rw-r--r--core/java/android/app/admin/DevicePolicyManagerInternal.java9
-rw-r--r--core/java/android/app/admin/IDevicePolicyManager.aidl1
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/BaseIDevicePolicyManager.java5
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java88
-rw-r--r--services/print/java/com/android/server/print/PrintManagerService.java19
7 files changed, 63 insertions, 76 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index 2ed8f90e3c7c..8678c5ede29e 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -382,7 +382,6 @@ package android.app.admin {
method public java.lang.CharSequence getDeviceOwnerOrganizationName();
method public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
method public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
- method public java.lang.CharSequence getPrintingDisabledReason();
method public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
method public java.lang.String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
method public int getUserProvisioningState();
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 95e7fe059bb9..7aa6c5cfca54 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -9286,22 +9286,6 @@ public class DevicePolicyManager {
}
/**
- * Returns error message to be displayed when printing is disabled.
- *
- * Used only by PrintService.
- * @return Localized error message.
- * @hide
- */
- @SystemApi
- public CharSequence getPrintingDisabledReason() {
- try {
- return mService.getPrintingDisabledReason();
- } catch (RemoteException re) {
- throw re.rethrowFromSystemServer();
- }
- }
-
- /**
* Called by device owner to add an override APN.
*
* @param admin which {@link DeviceAdminReceiver} this request is associated with
diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java
index 531bef014c0b..ebaf4648d80a 100644
--- a/core/java/android/app/admin/DevicePolicyManagerInternal.java
+++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java
@@ -132,4 +132,13 @@ public abstract class DevicePolicyManagerInternal {
* @param userId The user in question
*/
public abstract boolean canUserHaveUntrustedCredentialReset(@UserIdInt int userId);
+
+ /**
+ * Return text of error message if printing is disabled.
+ * Called by Print Service when printing is disabled by PO or DO when printing is attempted.
+ *
+ * @param userId The user in question
+ * @return localized error message
+ */
+ public abstract CharSequence getPrintingDisabledReasonForUser(@UserIdInt int userId);
}
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index a5ca4cf12ffa..d4f7db6b9099 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -400,7 +400,6 @@ interface IDevicePolicyManager {
void setPrintingEnabled(in ComponentName admin, boolean enabled);
boolean isPrintingEnabled();
- CharSequence getPrintingDisabledReason();
List<String> setMeteredDataDisabled(in ComponentName admin, in List<String> packageNames);
List<String> getMeteredDataDisabled(in ComponentName admin);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/BaseIDevicePolicyManager.java b/services/devicepolicy/java/com/android/server/devicepolicy/BaseIDevicePolicyManager.java
index 886747ccb435..b312f2f439d7 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/BaseIDevicePolicyManager.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/BaseIDevicePolicyManager.java
@@ -135,11 +135,6 @@ abstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub {
}
@Override
- public CharSequence getPrintingDisabledReason() {
- return null;
- }
-
- @Override
public List<String> setMeteredDataDisabled(ComponentName admin, List<String> packageNames) {
return packageNames;
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 38e2168073ea..f8e8100df90e 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -10264,6 +10264,45 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
public boolean canUserHaveUntrustedCredentialReset(@UserIdInt int userId) {
return DevicePolicyManagerService.this.canUserHaveUntrustedCredentialReset(userId);
}
+
+ @Override
+ public CharSequence getPrintingDisabledReasonForUser(@UserIdInt int userId) {
+ synchronized (DevicePolicyManagerService.this) {
+ DevicePolicyData policy = getUserData(userId);
+ if (policy.mPrintingEnabled) {
+ Log.e(LOG_TAG, "printing is enabled");
+ return null;
+ }
+ String ownerPackage = mOwners.getProfileOwnerPackage(userId);
+ if (ownerPackage == null) {
+ ownerPackage = mOwners.getDeviceOwnerPackageName();
+ }
+ PackageManager pm = mInjector.getPackageManager();
+ PackageInfo packageInfo;
+ try {
+ packageInfo = pm.getPackageInfo(ownerPackage, 0);
+ } catch (NameNotFoundException e) {
+ Log.e(LOG_TAG, "getPackageInfo error", e);
+ return null;
+ }
+ if (packageInfo == null) {
+ Log.e(LOG_TAG, "packageInfo is inexplicably null");
+ return null;
+ }
+ ApplicationInfo appInfo = packageInfo.applicationInfo;
+ if (appInfo == null) {
+ Log.e(LOG_TAG, "appInfo is inexplicably null");
+ return null;
+ }
+ CharSequence appLabel = pm.getApplicationLabel(appInfo);
+ if (appLabel == null) {
+ Log.e(LOG_TAG, "appLabel is inexplicably null");
+ return null;
+ }
+ return ((Context) ActivityThread.currentActivityThread().getSystemUiContext())
+ .getResources().getString(R.string.printing_disabled_by, appLabel);
+ }
+ }
}
private Intent createShowAdminSupportIntent(ComponentName admin, int userId) {
@@ -12495,55 +12534,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
}
- /**
- * Returns text of error message if printing is disabled.
- * Only to be called by Print Service.
- * @hide
- */
- @Override
- public CharSequence getPrintingDisabledReason() {
- if (!hasPrinting() || !mHasFeature) {
- Log.e(LOG_TAG, "no printing or no management");
- return null;
- }
- synchronized (this) {
- final int userHandle = mInjector.userHandleGetCallingUserId();
- DevicePolicyData policy = getUserData(userHandle);
- if (policy.mPrintingEnabled) {
- Log.e(LOG_TAG, "printing is enabled");
- return null;
- }
- String ownerPackage = mOwners.getProfileOwnerPackage(userHandle);
- if (ownerPackage == null) {
- ownerPackage = mOwners.getDeviceOwnerPackageName();
- }
- PackageManager pm = mInjector.getPackageManager();
- PackageInfo packageInfo;
- try {
- packageInfo = pm.getPackageInfo(ownerPackage, 0);
- } catch (NameNotFoundException e) {
- Log.e(LOG_TAG, "getPackageInfo error", e);
- return null;
- }
- if (packageInfo == null) {
- Log.e(LOG_TAG, "packageInfo is inexplicably null");
- return null;
- }
- ApplicationInfo appInfo = packageInfo.applicationInfo;
- if (appInfo == null) {
- Log.e(LOG_TAG, "appInfo is inexplicably null");
- return null;
- }
- CharSequence appLabel = pm.getApplicationLabel(appInfo);
- if (appLabel == null) {
- Log.e(LOG_TAG, "appLabel is inexplicably null");
- return null;
- }
- return ((Context) ActivityThread.currentActivityThread().getSystemUiContext())
- .getResources().getString(R.string.printing_disabled_by, appLabel);
- }
- }
-
@Override
public int addOverrideApn(@NonNull ComponentName who, @NonNull ApnSetting apnSetting) {
if (!mHasFeature) {
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
index 89a5fe1b82c7..d6cc80516485 100644
--- a/services/print/java/com/android/server/print/PrintManagerService.java
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -22,6 +22,7 @@ import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING;
import android.annotation.NonNull;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
+import android.app.admin.DevicePolicyManagerInternal;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -64,6 +65,7 @@ import com.android.internal.print.DualDumpOutputStream;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
+import com.android.server.LocalServices;
import com.android.server.SystemService;
import java.io.FileDescriptor;
@@ -113,12 +115,12 @@ public final class PrintManagerService extends SystemService {
private final SparseArray<UserState> mUserStates = new SparseArray<>();
- private final DevicePolicyManager mDpc;
+ private final DevicePolicyManager mDpm;
PrintManagerImpl(Context context) {
mContext = context;
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
- mDpc = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
+ mDpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
registerContentObservers();
registerBroadcastReceivers();
}
@@ -128,7 +130,16 @@ public final class PrintManagerService extends SystemService {
PrintAttributes attributes, String packageName, int appId, int userId) {
adapter = Preconditions.checkNotNull(adapter);
if (!isPrintingEnabled()) {
- final CharSequence disabledMessage = mDpc.getPrintingDisabledReason();
+ CharSequence disabledMessage = null;
+ DevicePolicyManagerInternal dpmi =
+ LocalServices.getService(DevicePolicyManagerInternal.class);
+ final int callingUserId = UserHandle.getCallingUserId();
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ disabledMessage = dpmi.getPrintingDisabledReasonForUser(callingUserId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
if (disabledMessage != null) {
Toast.makeText(mContext, Looper.getMainLooper(), disabledMessage,
Toast.LENGTH_LONG).show();
@@ -711,7 +722,7 @@ public final class PrintManagerService extends SystemService {
}
private boolean isPrintingEnabled() {
- return mDpc == null || mDpc.isPrintingEnabled();
+ return mDpm == null || mDpm.isPrintingEnabled();
}
private void dump(@NonNull DualDumpOutputStream dumpStream,