aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSoonil Nagarkar <sooniln@google.com>2024-04-15 12:41:14 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-15 12:41:56 -0700
commit2720630fde3f4e3d17a3b3c55e8f05fada5b950b (patch)
tree9dea6f00cd77d03aaf60382fe68d697c1f174c17
parentc0c8e9869dcfeaa08b33d8ff2119e7b92ffd5006 (diff)
downloadrobolectric-2720630fde3f4e3d17a3b3c55e8f05fada5b950b.tar.gz
Fix ShadowLocationManager time comparison.
ShadowLocationManager should be using elapsed realtime not system time for comparisons. PiperOrigin-RevId: 625049478
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowLocationManagerTest.java4
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocationManager.java4
2 files changed, 5 insertions, 3 deletions
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowLocationManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowLocationManagerTest.java
index e9e51f909..2c7bb282f 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowLocationManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowLocationManagerTest.java
@@ -1224,9 +1224,9 @@ public class ShadowLocationManagerTest {
@Test
public void testSimulateLocation_FastestInterval() {
Location loc1 = createLocation(MY_PROVIDER);
- loc1.setTime(1);
+ loc1.setElapsedRealtimeNanos(1000000);
Location loc2 = createLocation(MY_PROVIDER);
- loc2.setTime(10);
+ loc2.setElapsedRealtimeNanos(10000000);
TestLocationListener myListener = new TestLocationListener();
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocationManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocationManager.java
index d33e639c6..02d6b1776 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocationManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocationManager.java
@@ -1968,7 +1968,9 @@ public class ShadowLocationManager {
ArrayList<Location> deliverableLocations = new ArrayList<>(locations.length);
for (Location location : locations) {
if (lastDeliveredLocation != null) {
- if (location.getTime() - lastDeliveredLocation.getTime()
+ if (NANOSECONDS.toMillis(
+ location.getElapsedRealtimeNanos()
+ - lastDeliveredLocation.getElapsedRealtimeNanos())
< request.getMinUpdateIntervalMillis()) {
Log.w(TAG, "location rejected for simulated delivery - too fast");
continue;