Merge "Remove idle requirement for full backup on Wear"

This commit is contained in:
Bagus Maulana
2023-03-20 15:59:39 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 2 deletions

View File

@@ -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;
@@ -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);

View File

@@ -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;
@@ -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);