From 40b3108808c1e149b983d1fae6c7acaee580d8e0 Mon Sep 17 00:00:00 2001 From: Bagus Maulana Date: Wed, 8 Mar 2023 17:13:10 +0000 Subject: [PATCH] Remove idle requirement for full backup on Wear Bug: 269323514 Test: atest BackupFrameworksServicesRoboTests Change-Id: I2793f9afaa17f5fe62af5831d522328d23e4d62a (cherry picked from commit ef459c38bbacbbee80bd4df6bf737558593598c9) --- .../android/server/backup/FullBackupJob.java | 7 ++++-- .../server/backup/FullBackupJobTest.java | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/services/backup/java/com/android/server/backup/FullBackupJob.java b/services/backup/java/com/android/server/backup/FullBackupJob.java index fe0e1c6b6fcb4..de33698c9d226 100644 --- a/services/backup/java/com/android/server/backup/FullBackupJob.java +++ b/services/backup/java/com/android/server/backup/FullBackupJob.java @@ -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); diff --git a/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java b/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java index c8797e25b7407..da0adb55c0736 100644 --- a/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java +++ b/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java @@ -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);