summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kate Montgomery <katemontgomery@google.com> 2021-07-16 20:36:18 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-16 20:36:18 +0000
commit831f52e0d5ec5332b19f313a75cc07e128bb52a9 (patch)
tree1ba841efd141e11a671e7c6b77a0e89ffc777e8d
parent91ec11ddadfbe7330838068640dc2d3dd21403ea (diff)
parent314b35644b59a4d2f1dfa44afc9e7a2cd85da6fd (diff)
Merge "Do not specify a workSource when setting a delayed alarm so that the alarm can still wake the device up when the device is idle as the AlarmManager.FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED flag indicates." into sc-dev
-rw-r--r--services/core/java/com/android/server/location/injector/AlarmHelper.java1
-rw-r--r--services/core/java/com/android/server/location/provider/LocationProviderManager.java18
2 files changed, 15 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/location/injector/AlarmHelper.java b/services/core/java/com/android/server/location/injector/AlarmHelper.java
index f3fb9c84273b..91a1042d9625 100644
--- a/services/core/java/com/android/server/location/injector/AlarmHelper.java
+++ b/services/core/java/com/android/server/location/injector/AlarmHelper.java
@@ -33,7 +33,6 @@ public abstract class AlarmHelper {
WorkSource workSource) {
// helps ensure that we're not wasting system resources by setting alarms in the past/now
Preconditions.checkArgument(delayMs > 0);
- Preconditions.checkArgument(workSource != null);
setDelayedAlarmInternal(delayMs, listener, workSource);
}
diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
index 8c9068daed9b..8955c288391f 100644
--- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java
+++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
@@ -735,8 +735,12 @@ public class LocationProviderManager extends
if (mExpirationRealtimeMs <= registerTimeMs) {
onAlarm();
} else if (mExpirationRealtimeMs < Long.MAX_VALUE) {
+ // Set WorkSource to null in order to ensure the alarm wakes up the device even when
+ // it is idle. Do this when the cost of waking up the device is less than the power
+ // cost of not performing the actions set off by the alarm, such as unregistering a
+ // location request.
mAlarmHelper.setDelayedAlarm(mExpirationRealtimeMs - registerTimeMs, this,
- getRequest().getWorkSource());
+ null);
}
// start listening for provider enabled/disabled events
@@ -1122,8 +1126,12 @@ public class LocationProviderManager extends
if (mExpirationRealtimeMs <= registerTimeMs) {
onAlarm();
} else if (mExpirationRealtimeMs < Long.MAX_VALUE) {
+ // Set WorkSource to null in order to ensure the alarm wakes up the device even when
+ // it is idle. Do this when the cost of waking up the device is less than the power
+ // cost of not performing the actions set off by the alarm, such as unregistering a
+ // location request.
mAlarmHelper.setDelayedAlarm(mExpirationRealtimeMs - registerTimeMs, this,
- getRequest().getWorkSource());
+ null);
}
}
@@ -1995,7 +2003,11 @@ public class LocationProviderManager extends
}
}
};
- mAlarmHelper.setDelayedAlarm(delayMs, mDelayedRegister, newRequest.getWorkSource());
+ // Set WorkSource to null in order to ensure the alarm wakes up the device even when it
+ // is idle. Do this when the cost of waking up the device is less than the power cost of
+ // not performing the actions set off by the alarm, such as unregistering a location
+ // request.
+ mAlarmHelper.setDelayedAlarm(delayMs, mDelayedRegister, null);
}
return true;