diff options
10 files changed, 15 insertions, 364 deletions
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt index 04b33b18dce4..08b47059ae5c 100644 --- a/config/boot-image-profile.txt +++ b/config/boot-image-profile.txt @@ -15605,7 +15605,6 @@ HSPLandroid/app/admin/IDevicePolicyManager;->getLockTaskFeatures(Landroid/conten HSPLandroid/app/admin/IDevicePolicyManager;->getLockTaskPackages(Landroid/content/ComponentName;)[Ljava/lang/String; HSPLandroid/app/admin/IDevicePolicyManager;->getLongSupportMessage(Landroid/content/ComponentName;)Ljava/lang/CharSequence; HSPLandroid/app/admin/IDevicePolicyManager;->getLongSupportMessageForUser(Landroid/content/ComponentName;I)Ljava/lang/CharSequence; -HSPLandroid/app/admin/IDevicePolicyManager;->getMandatoryBackupTransport()Landroid/content/ComponentName; HSPLandroid/app/admin/IDevicePolicyManager;->getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)I HSPLandroid/app/admin/IDevicePolicyManager;->getMaximumTimeToLock(Landroid/content/ComponentName;IZ)J HSPLandroid/app/admin/IDevicePolicyManager;->getMeteredDataDisabledPackages(Landroid/content/ComponentName;)Ljava/util/List; @@ -15747,7 +15746,6 @@ HSPLandroid/app/admin/IDevicePolicyManager;->setLockTaskFeatures(Landroid/conten HSPLandroid/app/admin/IDevicePolicyManager;->setLockTaskPackages(Landroid/content/ComponentName;[Ljava/lang/String;)V HSPLandroid/app/admin/IDevicePolicyManager;->setLogoutEnabled(Landroid/content/ComponentName;Z)V HSPLandroid/app/admin/IDevicePolicyManager;->setLongSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V -HSPLandroid/app/admin/IDevicePolicyManager;->setMandatoryBackupTransport(Landroid/content/ComponentName;Landroid/content/ComponentName;)Z HSPLandroid/app/admin/IDevicePolicyManager;->setMasterVolumeMuted(Landroid/content/ComponentName;Z)V HSPLandroid/app/admin/IDevicePolicyManager;->setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)V HSPLandroid/app/admin/IDevicePolicyManager;->setMaximumTimeToLock(Landroid/content/ComponentName;JZ)V diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index d1ecf1ee8a79..bd7a2ddb5af8 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -1183,14 +1183,6 @@ public class DevicePolicyManager { public static final String POLICY_DISABLE_SCREEN_CAPTURE = "policy_disable_screen_capture"; /** - * Constant to indicate the feature of mandatory backups. Used as argument to - * {@link #createAdminSupportIntent(String)}. - * @see #setMandatoryBackupTransport(ComponentName, ComponentName) - * @hide - */ - public static final String POLICY_MANDATORY_BACKUPS = "policy_mandatory_backups"; - - /** * Constant to indicate the feature of suspending app. Use it as the value of * {@link #EXTRA_RESTRICTION}. * @hide @@ -1200,8 +1192,7 @@ public class DevicePolicyManager { /** * A String indicating a specific restricted feature. Can be a user restriction from the * {@link UserManager}, e.g. {@link UserManager#DISALLOW_ADJUST_VOLUME}, or one of the values - * {@link #POLICY_DISABLE_CAMERA}, {@link #POLICY_DISABLE_SCREEN_CAPTURE} or - * {@link #POLICY_MANDATORY_BACKUPS}. + * {@link #POLICY_DISABLE_CAMERA} or {@link #POLICY_DISABLE_SCREEN_CAPTURE}. * @see #createAdminSupportIntent(String) * @hide */ @@ -6919,7 +6910,7 @@ public class DevicePolicyManager { * @param restriction Indicates for which feature the dialog should be displayed. Can be a * user restriction from {@link UserManager}, e.g. * {@link UserManager#DISALLOW_ADJUST_VOLUME}, or one of the constants - * {@link #POLICY_DISABLE_CAMERA}, {@link #POLICY_DISABLE_SCREEN_CAPTURE}. + * {@link #POLICY_DISABLE_CAMERA} or {@link #POLICY_DISABLE_SCREEN_CAPTURE}. * @return Intent An intent to be used to start the dialog-activity if the restriction is * set by an admin, or null if the restriction does not exist or no admin set it. */ @@ -8917,55 +8908,6 @@ public class DevicePolicyManager { } /** - * Makes backups mandatory and enforces the usage of the specified backup transport. - * - * <p>When a {@code null} backup transport is specified, backups are made optional again. - * <p>Only device owner can call this method. - * <p>If backups were disabled and a non-null backup transport {@link ComponentName} is - * specified, backups will be enabled. - * <p> If the backup service is disabled after the mandatory backup transport has been set, the - * mandatory backup transport is cleared. - * - * <p>NOTE: The method shouldn't be called on the main thread. - * - * @param admin admin Which {@link DeviceAdminReceiver} this request is associated with. - * @param backupTransportComponent The backup transport layer to be used for mandatory backups. - * @return {@code true} if the backup transport was successfully set; {@code false} otherwise. - * @throws SecurityException if {@code admin} is not a device owner. - * @hide - */ - @WorkerThread - public boolean setMandatoryBackupTransport( - @NonNull ComponentName admin, - @Nullable ComponentName backupTransportComponent) { - throwIfParentInstance("setMandatoryBackupTransport"); - try { - return mService.setMandatoryBackupTransport(admin, backupTransportComponent); - } catch (RemoteException re) { - throw re.rethrowFromSystemServer(); - } - } - - /** - * Returns the backup transport which has to be used for backups if backups are mandatory or - * {@code null} if backups are not mandatory. - * - * @return a {@link ComponentName} of the backup transport layer to be used if backups are - * mandatory or {@code null} if backups are not mandatory. - * @hide - */ - @UnsupportedAppUsage - public ComponentName getMandatoryBackupTransport() { - throwIfParentInstance("getMandatoryBackupTransport"); - try { - return mService.getMandatoryBackupTransport(); - } catch (RemoteException re) { - throw re.rethrowFromSystemServer(); - } - } - - - /** * Called by a device owner to control the network logging feature. * * <p> Network logs contain DNS lookup and connect() library call events. The following library diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index 6a5f3deb0476..35ea250828aa 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -362,8 +362,6 @@ interface IDevicePolicyManager { void setBackupServiceEnabled(in ComponentName admin, boolean enabled); boolean isBackupServiceEnabled(in ComponentName admin); - boolean setMandatoryBackupTransport(in ComponentName admin, in ComponentName backupTransportComponent); - ComponentName getMandatoryBackupTransport(); void setNetworkLoggingEnabled(in ComponentName admin, boolean enabled); boolean isNetworkLoggingEnabled(in ComponentName admin); diff --git a/core/java/android/app/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl index 1c55d8add45b..3e2074837b8e 100644 --- a/core/java/android/app/backup/IBackupManager.aidl +++ b/core/java/android/app/backup/IBackupManager.aidl @@ -299,8 +299,7 @@ interface IBackupManager { * * @param transport ComponentName of the service hosting the transport. This is different from * the transport's name that is returned by {@link BackupTransport#name()}. - * @param listener A listener object to get a callback on the transport being selected. It may - * be {@code null}. + * @param listener A listener object to get a callback on the transport being selected. */ void selectBackupTransportAsync(in ComponentName transport, ISelectBackupTransportCallback listener); diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index c26ac17c0c0e..1b97926d39fb 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -698,8 +698,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { @GuardedBy("mQueueLock") private ArrayList<FullBackupEntry> mFullBackupQueue; - private BackupPolicyEnforcer mBackupPolicyEnforcer; - // Utility: build a new random integer token. The low bits are the ordinal of the // operation for near-time uniqueness, and the upper bits are random for app- // side unpredictability. @@ -899,8 +897,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { // Power management mWakelock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*backup*"); - - mBackupPolicyEnforcer = new BackupPolicyEnforcer(context); } private void initPackageTracking() { @@ -2827,10 +2823,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { public void setBackupEnabled(boolean enable) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, "setBackupEnabled"); - if (!enable && mBackupPolicyEnforcer.getMandatoryBackupTransport() != null) { - Slog.w(TAG, "Cannot disable backups when the mandatory backups policy is active."); - return; - } Slog.i(TAG, "Backup enabled => " + enable); @@ -3085,12 +3077,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.BACKUP, "selectBackupTransport"); - if (!isAllowedByMandatoryBackupTransportPolicy(transportName)) { - // Don't change the transport if it is not allowed. - Slog.w(TAG, "Failed to select transport - disallowed by device owner policy."); - return mTransportManager.getCurrentTransportName(); - } - final long oldId = Binder.clearCallingIdentity(); try { String previousTransportName = mTransportManager.selectTransport(transportName); @@ -3105,20 +3091,10 @@ public class BackupManagerService implements BackupManagerServiceInterface { @Override public void selectBackupTransportAsync( - ComponentName transportComponent, @Nullable ISelectBackupTransportCallback listener) { + ComponentName transportComponent, ISelectBackupTransportCallback listener) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.BACKUP, "selectBackupTransportAsync"); - if (!isAllowedByMandatoryBackupTransportPolicy(transportComponent)) { - try { - if (listener != null) { - Slog.w(TAG, "Failed to select transport - disallowed by device owner policy."); - listener.onFailure(BackupManager.ERROR_BACKUP_NOT_ALLOWED); - } - } catch (RemoteException e) { - Slog.e(TAG, "ISelectBackupTransportCallback listener not available"); - } - return; - } + final long oldId = Binder.clearCallingIdentity(); try { String transportString = transportComponent.flattenToShortString(); @@ -3140,12 +3116,10 @@ public class BackupManagerService implements BackupManagerServiceInterface { } try { - if (listener != null) { - if (transportName != null) { - listener.onSuccess(transportName); - } else { - listener.onFailure(result); - } + if (transportName != null) { + listener.onSuccess(transportName); + } else { + listener.onFailure(result); } } catch (RemoteException e) { Slog.e(TAG, "ISelectBackupTransportCallback listener not available"); @@ -3156,38 +3130,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { } } - /** - * Returns if the specified transport can be set as the current transport without violating the - * mandatory backup transport policy. - */ - private boolean isAllowedByMandatoryBackupTransportPolicy(String transportName) { - ComponentName mandatoryBackupTransport = mBackupPolicyEnforcer.getMandatoryBackupTransport(); - if (mandatoryBackupTransport == null) { - return true; - } - final String mandatoryBackupTransportName; - try { - mandatoryBackupTransportName = - mTransportManager.getTransportName(mandatoryBackupTransport); - } catch (TransportNotRegisteredException e) { - Slog.e(TAG, "mandatory backup transport not registered!"); - return false; - } - return TextUtils.equals(mandatoryBackupTransportName, transportName); - } - - /** - * Returns if the specified transport can be set as the current transport without violating the - * mandatory backup transport policy. - */ - private boolean isAllowedByMandatoryBackupTransportPolicy(ComponentName transport) { - ComponentName mandatoryBackupTransport = mBackupPolicyEnforcer.getMandatoryBackupTransport(); - if (mandatoryBackupTransport == null) { - return true; - } - return mandatoryBackupTransport.equals(transport); - } - private void updateStateForTransport(String newTransportName) { // Publish the name change Settings.Secure.putString(mContext.getContentResolver(), diff --git a/services/backup/java/com/android/server/backup/BackupPolicyEnforcer.java b/services/backup/java/com/android/server/backup/BackupPolicyEnforcer.java deleted file mode 100644 index 158084a4be21..000000000000 --- a/services/backup/java/com/android/server/backup/BackupPolicyEnforcer.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.server.backup; - -import android.app.admin.DevicePolicyManager; -import android.content.ComponentName; -import android.content.Context; - -import com.android.internal.annotations.VisibleForTesting; - -/** - * A helper class to decouple this service from {@link DevicePolicyManager} in order to improve - * testability. - */ -@VisibleForTesting -public class BackupPolicyEnforcer { - private DevicePolicyManager mDevicePolicyManager; - - public BackupPolicyEnforcer(Context context) { - mDevicePolicyManager = - (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); - } - - public ComponentName getMandatoryBackupTransport() { - return mDevicePolicyManager.getMandatoryBackupTransport(); - } -} diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index a1132d7dcde7..0ca0835765bf 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -114,7 +114,6 @@ import android.app.admin.SecurityLog.SecurityEvent; import android.app.admin.SystemUpdateInfo; import android.app.admin.SystemUpdatePolicy; import android.app.backup.IBackupManager; -import android.app.backup.ISelectBackupTransportCallback; import android.app.trust.TrustManager; import android.app.usage.UsageStatsManagerInternal; import android.content.BroadcastReceiver; @@ -262,7 +261,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Set; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; @@ -895,7 +893,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private static final String ATTR_LAST_NETWORK_LOGGING_NOTIFICATION = "last-notification"; private static final String ATTR_NUM_NETWORK_LOGGING_NOTIFICATIONS = "num-notifications"; private static final String TAG_IS_LOGOUT_ENABLED = "is_logout_enabled"; - private static final String TAG_MANDATORY_BACKUP_TRANSPORT = "mandatory_backup_transport"; private static final String TAG_START_USER_SESSION_MESSAGE = "start_user_session_message"; private static final String TAG_END_USER_SESSION_MESSAGE = "end_user_session_message"; private static final String TAG_METERED_DATA_DISABLED_PACKAGES @@ -1016,10 +1013,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // Default title of confirm credentials screen String organizationName = null; - // The component name of the backup transport which has to be used if backups are mandatory - // or null if backups are not mandatory. - ComponentName mandatoryBackupTransport = null; - // Message for user switcher String startUserSessionMessage = null; String endUserSessionMessage = null; @@ -1283,11 +1276,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { out.attribute(null, ATTR_VALUE, Boolean.toString(isLogoutEnabled)); out.endTag(null, TAG_IS_LOGOUT_ENABLED); } - if (mandatoryBackupTransport != null) { - out.startTag(null, TAG_MANDATORY_BACKUP_TRANSPORT); - out.attribute(null, ATTR_VALUE, mandatoryBackupTransport.flattenToString()); - out.endTag(null, TAG_MANDATORY_BACKUP_TRANSPORT); - } if (startUserSessionMessage != null) { out.startTag(null, TAG_START_USER_SESSION_MESSAGE); out.text(startUserSessionMessage); @@ -1476,9 +1464,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } else if (TAG_IS_LOGOUT_ENABLED.equals(tag)) { isLogoutEnabled = Boolean.parseBoolean( parser.getAttributeValue(null, ATTR_VALUE)); - } else if (TAG_MANDATORY_BACKUP_TRANSPORT.equals(tag)) { - mandatoryBackupTransport = ComponentName.unflattenFromString( - parser.getAttributeValue(null, ATTR_VALUE)); } else if (TAG_START_USER_SESSION_MESSAGE.equals(tag)) { type = parser.next(); if (type == XmlPullParser.TEXT) { @@ -10538,8 +10523,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final int userId = UserHandle.getUserId(uid); Intent intent = null; if (DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction) || - DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction) || - DevicePolicyManager.POLICY_MANDATORY_BACKUPS.equals(restriction)) { + DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction)) { synchronized (getLockObject()) { final DevicePolicyData policy = getUserData(userId); final int N = policy.mAdminList.size(); @@ -10548,9 +10532,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if ((admin.disableCamera && DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction)) || (admin.disableScreenCapture && DevicePolicyManager - .POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction)) || - (admin.mandatoryBackupTransport != null && DevicePolicyManager - .POLICY_MANDATORY_BACKUPS.equals(restriction))) { + .POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction))) { intent = createShowAdminSupportIntent(admin.info.getComponent(), userId); break; } @@ -11960,12 +11942,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } Preconditions.checkNotNull(admin); synchronized (getLockObject()) { - ActiveAdmin activeAdmin = getActiveAdminForCallerLocked( - admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER); - if (!enabled) { - activeAdmin.mandatoryBackupTransport = null; - saveSettingsLocked(UserHandle.USER_SYSTEM); - } + getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER); } final long ident = mInjector.binderClearCallingIdentity(); @@ -12000,87 +11977,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } @Override - public boolean setMandatoryBackupTransport( - ComponentName admin, - ComponentName backupTransportComponent) { - if (!mHasFeature) { - return false; - } - Preconditions.checkNotNull(admin); - enforceDeviceOwner(admin); - - final int callingUid = mInjector.binderGetCallingUid(); - final AtomicBoolean success = new AtomicBoolean(false); - final CountDownLatch countDownLatch = new CountDownLatch(1); - final ISelectBackupTransportCallback selectBackupTransportCallbackInternal = - new ISelectBackupTransportCallback.Stub() { - public void onSuccess(String transportName) { - saveMandatoryBackupTransport(admin, callingUid, backupTransportComponent); - success.set(true); - countDownLatch.countDown(); - } - - public void onFailure(int reason) { - countDownLatch.countDown(); - } - }; - final long identity = mInjector.binderClearCallingIdentity(); - try { - IBackupManager ibm = mInjector.getIBackupManager(); - if (ibm != null && backupTransportComponent != null) { - if (!ibm.isBackupServiceActive(UserHandle.USER_SYSTEM)) { - ibm.setBackupServiceActive(UserHandle.USER_SYSTEM, true); - } - ibm.selectBackupTransportAsync( - backupTransportComponent, selectBackupTransportCallbackInternal); - countDownLatch.await(); - if (success.get()) { - ibm.setBackupEnabled(true); - } - } else if (backupTransportComponent == null) { - saveMandatoryBackupTransport(admin, callingUid, backupTransportComponent); - success.set(true); - } - } catch (RemoteException e) { - throw new IllegalStateException("Failed to set mandatory backup transport.", e); - } catch (InterruptedException e) { - throw new IllegalStateException("Failed to set mandatory backup transport.", e); - } finally { - mInjector.binderRestoreCallingIdentity(identity); - } - return success.get(); - } - - private void saveMandatoryBackupTransport( - ComponentName admin, int callingUid, ComponentName backupTransportComponent) { - synchronized (getLockObject()) { - ActiveAdmin activeAdmin = - getActiveAdminWithPolicyForUidLocked( - admin, - DeviceAdminInfo.USES_POLICY_DEVICE_OWNER, - callingUid); - if (!Objects.equals(backupTransportComponent, - activeAdmin.mandatoryBackupTransport)) { - activeAdmin.mandatoryBackupTransport = - backupTransportComponent; - saveSettingsLocked(UserHandle.USER_SYSTEM); - } - } - } - - @Override - public ComponentName getMandatoryBackupTransport() { - if (!mHasFeature) { - return null; - } - synchronized (getLockObject()) { - ActiveAdmin activeAdmin = getDeviceOwnerAdminLocked(); - return activeAdmin == null ? null : activeAdmin.mandatoryBackupTransport; - } - } - - - @Override public boolean bindDeviceAdminServiceAsUser( @NonNull ComponentName admin, @NonNull IApplicationThread caller, @Nullable IBinder activtiyToken, @NonNull Intent serviceIntent, diff --git a/services/robotests/src/com/android/server/backup/BackupManagerServiceTest.java b/services/robotests/src/com/android/server/backup/BackupManagerServiceTest.java index 91a8857a3de0..57ebbfcf8dd6 100644 --- a/services/robotests/src/com/android/server/backup/BackupManagerServiceTest.java +++ b/services/robotests/src/com/android/server/backup/BackupManagerServiceTest.java @@ -52,7 +52,6 @@ import com.android.server.backup.transport.TransportNotRegisteredException; import com.android.server.testing.FrameworkRobolectricTestRunner; import com.android.server.testing.SystemLoaderPackages; import com.android.server.testing.shadows.ShadowAppBackupUtils; -import com.android.server.testing.shadows.ShadowBackupPolicyEnforcer; import com.android.server.testing.shadows.ShadowBinder; import com.android.server.testing.shadows.ShadowKeyValueBackupJob; import com.android.server.testing.shadows.ShadowKeyValueBackupTask; @@ -73,10 +72,7 @@ import org.robolectric.shadows.ShadowPackageManager; import org.robolectric.shadows.ShadowSettings; @RunWith(FrameworkRobolectricTestRunner.class) -@Config( - manifest = Config.NONE, - sdk = 26, - shadows = {ShadowAppBackupUtils.class, ShadowBackupPolicyEnforcer.class}) +@Config(manifest = Config.NONE, sdk = 26, shadows = {ShadowAppBackupUtils.class}) @SystemLoaderPackages({"com.android.server.backup"}) @Presubmit public class BackupManagerServiceTest { @@ -118,15 +114,12 @@ public class BackupManagerServiceTest { mBaseStateDir = new File(cacheDir, "base_state"); // Corresponds to /cache/backup_stage mDataDir = new File(cacheDir, "data"); - - ShadowBackupPolicyEnforcer.setMandatoryBackupTransport(null); } @After public void tearDown() throws Exception { mBackupThread.quit(); ShadowAppBackupUtils.reset(); - ShadowBackupPolicyEnforcer.setMandatoryBackupTransport(null); } /* Tests for destination string */ @@ -252,7 +245,6 @@ public class BackupManagerServiceTest { private ComponentName mNewTransportComponent; private TransportData mNewTransport; private TransportMock mNewTransportMock; - private ComponentName mOldTransportComponent; private TransportData mOldTransport; private TransportMock mOldTransportMock; @@ -260,7 +252,6 @@ public class BackupManagerServiceTest { mNewTransport = backupTransport(); mNewTransportComponent = mNewTransport.getTransportComponent(); mOldTransport = d2dTransport(); - mOldTransportComponent = mOldTransport.getTransportComponent(); List<TransportMock> transportMocks = setUpTransports(mTransportManager, mNewTransport, mOldTransport, localTransport()); mNewTransportMock = transportMocks.get(0); @@ -314,42 +305,6 @@ public class BackupManagerServiceTest { } @Test - public void testSelectBackupTransportAsync_whenMandatoryTransport() throws Exception { - setUpForSelectTransport(); - ShadowBackupPolicyEnforcer.setMandatoryBackupTransport(mNewTransportComponent); - mShadowContext.grantPermissions(android.Manifest.permission.BACKUP); - when(mTransportManager.registerAndSelectTransport(eq(mNewTransportComponent))) - .thenReturn(BackupManager.SUCCESS); - ISelectBackupTransportCallback callback = mock(ISelectBackupTransportCallback.class); - BackupManagerService backupManagerService = createInitializedBackupManagerService(); - - backupManagerService.selectBackupTransportAsync(mNewTransportComponent, callback); - - mShadowBackupLooper.runToEndOfTasks(); - assertThat(getSettingsTransport()).isEqualTo(mNewTransport.transportName); - verify(callback).onSuccess(eq(mNewTransport.transportName)); - verify(mTransportManager) - .disposeOfTransportClient(eq(mNewTransportMock.transportClient), any()); - } - - @Test - public void testSelectBackupTransportAsync_whenOtherThanMandatoryTransport() throws Exception { - setUpForSelectTransport(); - ShadowBackupPolicyEnforcer.setMandatoryBackupTransport(mOldTransportComponent); - mShadowContext.grantPermissions(android.Manifest.permission.BACKUP); - when(mTransportManager.registerAndSelectTransport(eq(mNewTransportComponent))) - .thenReturn(BackupManager.SUCCESS); - ISelectBackupTransportCallback callback = mock(ISelectBackupTransportCallback.class); - BackupManagerService backupManagerService = createInitializedBackupManagerService(); - - backupManagerService.selectBackupTransportAsync(mNewTransportComponent, callback); - - mShadowBackupLooper.runToEndOfTasks(); - assertThat(getSettingsTransport()).isNotEqualTo(mNewTransport.transportName); - verify(callback).onFailure(eq(BackupManager.ERROR_BACKUP_NOT_ALLOWED)); - } - - @Test public void testSelectBackupTransportAsync_whenRegistrationFails() throws Exception { setUpForSelectTransport(); mShadowContext.grantPermissions(android.Manifest.permission.BACKUP); diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowBackupPolicyEnforcer.java b/services/robotests/src/com/android/server/testing/shadows/ShadowBackupPolicyEnforcer.java deleted file mode 100644 index e76b9d124add..000000000000 --- a/services/robotests/src/com/android/server/testing/shadows/ShadowBackupPolicyEnforcer.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.server.testing.shadows; - -import android.annotation.Nullable; -import android.content.ComponentName; - -import com.android.server.backup.BackupPolicyEnforcer; - -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; - -@Implements(BackupPolicyEnforcer.class) -public class ShadowBackupPolicyEnforcer { - @Nullable private static ComponentName sMandatoryBackupTransport; - - public static void setMandatoryBackupTransport( - @Nullable ComponentName backupTransportComponent) { - sMandatoryBackupTransport = backupTransportComponent; - } - - @Implementation - @Nullable - public ComponentName getMandatoryBackupTransport() { - return sMandatoryBackupTransport; - } -} diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java index d94a5f34517f..16b127c714cc 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java @@ -57,7 +57,6 @@ import android.app.admin.DeviceAdminReceiver; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.PasswordMetrics; -import android.app.backup.ISelectBackupTransportCallback; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Intent; @@ -2251,8 +2250,8 @@ public class DevicePolicyManagerTest extends DpmTestBase { assertEquals(UserManager.DISALLOW_ADJUST_VOLUME, intent.getStringExtra(DevicePolicyManager.EXTRA_RESTRICTION)); - // Try with POLICY_DISABLE_CAMERA, POLICY_DISABLE_SCREEN_CAPTURE and - // POLICY_MANDATORY_BACKUPS, which are not user restrictions + // Try with POLICY_DISABLE_CAMERA and POLICY_DISABLE_SCREEN_CAPTURE, which are not + // user restrictions // Camera is not disabled intent = dpm.createAdminSupportIntent(DevicePolicyManager.POLICY_DISABLE_CAMERA); @@ -2276,34 +2275,6 @@ public class DevicePolicyManagerTest extends DpmTestBase { assertEquals(DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE, intent.getStringExtra(DevicePolicyManager.EXTRA_RESTRICTION)); - // Make the backup transport selection succeed - doAnswer(new Answer<Void>() { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - ISelectBackupTransportCallback callback = - (ISelectBackupTransportCallback) invocation.getArguments()[1]; - if (callback != null) { - callback.onSuccess(""); - } - return null; - } - }).when(getServices().ibackupManager).selectBackupTransportAsync( - any(ComponentName.class), any(ISelectBackupTransportCallback.class)); - - - // Backups are not mandatory - intent = dpm.createAdminSupportIntent(DevicePolicyManager.POLICY_MANDATORY_BACKUPS); - assertNull(intent); - - // Backups are mandatory - ComponentName transportComponent = ComponentName.unflattenFromString( - "android/com.android.internal.backup.LocalTransport"); - dpm.setMandatoryBackupTransport(admin1, transportComponent); - intent = dpm.createAdminSupportIntent(DevicePolicyManager.POLICY_MANDATORY_BACKUPS); - assertNotNull(intent); - assertEquals(DevicePolicyManager.POLICY_MANDATORY_BACKUPS, - intent.getStringExtra(DevicePolicyManager.EXTRA_RESTRICTION)); - // Same checks for different user mContext.binder.callingUid = DpmMockContext.CALLER_UID; // Camera should be disabled by device owner |