From 2886705fa51bde09d6a40123614c185cecbce1cf Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Fri, 6 May 2022 12:57:01 -0700 Subject: [PATCH] Don't bootloop if GNSS is unavailable. Bug: 231740141 Test: build and flash a "car" device without GNSS Change-Id: I0891812f6c83fb1f000d5aeccf5f6b9d2e197dc3 --- .../android/server/timedetector/GnssTimeUpdateService.java | 5 +++++ .../server/timedetector/GnssTimeUpdateServiceTest.java | 3 +++ 2 files changed, 8 insertions(+) diff --git a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java index fb75ae1609cdb..129810c3265c8 100644 --- a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java +++ b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java @@ -116,6 +116,11 @@ public final class GnssTimeUpdateService extends Binder { Log.d(TAG, "requestGnssTimeUpdates()"); } + if (!mLocationManager.hasProvider(LocationManager.GPS_PROVIDER)) { + Log.e(TAG, "GPS provider does not exist on this device"); + return; + } + // Location Listener triggers onLocationChanged() when GNSS data is available, so // that the getGnssTimeMillis() function doesn't need to be continuously polled. mLocationListener = new LocationListener() { diff --git a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java index 8ac6dfb6d960e..aad5cd65c4f7f 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java @@ -85,6 +85,9 @@ public final class GnssTimeUpdateServiceTest { when(mMockContext.getSystemService(AlarmManager.class)) .thenReturn(mMockAlarmManager); + when(mMockLocationManager.hasProvider(LocationManager.GPS_PROVIDER)) + .thenReturn(true); + LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal); mGnssTimeUpdateService =