Merge "Allowlist alarm-clock alarms from pre-S apps for FGS" into tm-qpr-dev am: c0d0ca8881 am: 507d6165e3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19373715

Change-Id: I54a101d6ae5f9895e98d31a89644aa33db03e27b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Suprabh Shukla
2022-07-21 22:42:34 +00:00
committed by Automerger Merge Worker
2 changed files with 12 additions and 3 deletions

View File

@@ -2848,7 +2848,11 @@ public class AlarmManagerService extends SystemService {
} else {
needsPermission = false;
lowerQuota = allowWhileIdle;
idleOptions = allowWhileIdle ? mOptsWithFgs.toBundle() : null;
idleOptions = (allowWhileIdle || (alarmClock != null))
// This avoids exceptions on existing alarms when the app upgrades to
// target S. Note that FGS from pre-S apps isn't restricted anyway.
? mOptsWithFgs.toBundle()
: null;
if (exact) {
exactAllowReason = EXACT_ALLOW_REASON_COMPAT;
}

View File

@@ -2355,10 +2355,15 @@ public class AlarmManagerServiceTest {
mBinder.set(TEST_CALLING_PACKAGE, RTC_WAKEUP, 1234, WINDOW_EXACT, 0, 0,
alarmPi, null, null, null, alarmClock);
final ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
verify(mService).setImpl(eq(RTC_WAKEUP), eq(1234L), eq(WINDOW_EXACT), eq(0L),
eq(alarmPi), isNull(), isNull(), eq(FLAG_STANDALONE | FLAG_WAKE_FROM_IDLE),
isNull(), eq(alarmClock), eq(TEST_CALLING_UID), eq(TEST_CALLING_PACKAGE), isNull(),
eq(EXACT_ALLOW_REASON_COMPAT));
isNull(), eq(alarmClock), eq(TEST_CALLING_UID), eq(TEST_CALLING_PACKAGE),
bundleCaptor.capture(), eq(EXACT_ALLOW_REASON_COMPAT));
final BroadcastOptions idleOptions = new BroadcastOptions(bundleCaptor.getValue());
final int type = idleOptions.getTemporaryAppAllowlistType();
assertEquals(TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, type);
}
@Test