Loading services/backup/java/com/android/server/backup/FullBackupJob.java +5 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.app.job.JobScheduler; import android.app.job.JobService; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; import android.util.SparseArray; Loading Loading @@ -52,13 +53,15 @@ public class FullBackupJob extends JobService { JobInfo.Builder builder = new JobInfo.Builder(getJobIdForUserId(userId), sIdleService); final BackupManagerConstants constants = userBackupManagerService.getConstants(); synchronized (constants) { builder.setRequiresDeviceIdle(true) .setRequiredNetworkType(constants.getFullBackupRequiredNetworkType()) builder.setRequiredNetworkType(constants.getFullBackupRequiredNetworkType()) .setRequiresCharging(constants.getFullBackupRequireCharging()); } if (minDelay > 0) { builder.setMinimumLatency(minDelay); } if (!ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) { builder.setRequiresDeviceIdle(true); } Bundle extraInfo = new Bundle(); extraInfo.putInt(USER_ID_EXTRA_KEY, userId); Loading services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java +22 −0 Original line number Diff line number Diff line Loading @@ -19,10 +19,13 @@ package com.android.server.backup; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; import android.annotation.UserIdInt; import android.app.job.JobInfo; import android.app.job.JobScheduler; import android.content.Context; import android.content.pm.PackageManager; import android.os.Handler; import android.os.UserHandle; import android.platform.test.annotations.Presubmit; Loading Loading @@ -86,6 +89,25 @@ public class FullBackupJobTest { assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserTwoId))).isNotNull(); } @Test public void testSchedule_notWatch_requiresDeviceIdle() { shadowOf(mContext.getPackageManager()) .setSystemFeature(PackageManager.FEATURE_WATCH, false); FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); JobInfo pendingJob = mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId)); assertThat(pendingJob.isRequireDeviceIdle()).isTrue(); } @Test public void testSchedule_isWatch_doesNotRequireDeviceIdle() { shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WATCH, true); FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); JobInfo pendingJob = mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId)); assertThat(pendingJob.isRequireDeviceIdle()).isFalse(); } @Test public void testCancel_afterCancelling_jobDoesntExist() { FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); Loading Loading
services/backup/java/com/android/server/backup/FullBackupJob.java +5 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.app.job.JobScheduler; import android.app.job.JobService; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; import android.util.SparseArray; Loading Loading @@ -52,13 +53,15 @@ public class FullBackupJob extends JobService { JobInfo.Builder builder = new JobInfo.Builder(getJobIdForUserId(userId), sIdleService); final BackupManagerConstants constants = userBackupManagerService.getConstants(); synchronized (constants) { builder.setRequiresDeviceIdle(true) .setRequiredNetworkType(constants.getFullBackupRequiredNetworkType()) builder.setRequiredNetworkType(constants.getFullBackupRequiredNetworkType()) .setRequiresCharging(constants.getFullBackupRequireCharging()); } if (minDelay > 0) { builder.setMinimumLatency(minDelay); } if (!ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) { builder.setRequiresDeviceIdle(true); } Bundle extraInfo = new Bundle(); extraInfo.putInt(USER_ID_EXTRA_KEY, userId); Loading
services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java +22 −0 Original line number Diff line number Diff line Loading @@ -19,10 +19,13 @@ package com.android.server.backup; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; import android.annotation.UserIdInt; import android.app.job.JobInfo; import android.app.job.JobScheduler; import android.content.Context; import android.content.pm.PackageManager; import android.os.Handler; import android.os.UserHandle; import android.platform.test.annotations.Presubmit; Loading Loading @@ -86,6 +89,25 @@ public class FullBackupJobTest { assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserTwoId))).isNotNull(); } @Test public void testSchedule_notWatch_requiresDeviceIdle() { shadowOf(mContext.getPackageManager()) .setSystemFeature(PackageManager.FEATURE_WATCH, false); FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); JobInfo pendingJob = mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId)); assertThat(pendingJob.isRequireDeviceIdle()).isTrue(); } @Test public void testSchedule_isWatch_doesNotRequireDeviceIdle() { shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WATCH, true); FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); JobInfo pendingJob = mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId)); assertThat(pendingJob.isRequireDeviceIdle()).isFalse(); } @Test public void testCancel_afterCancelling_jobDoesntExist() { FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); Loading