Create unit tests for GnssManagerService
Test: atest GnssManagerServiceTest.java
Change-Id: I9ef40a99d898119251e3ea1d353a61368313ba07
diff --git a/services/core/java/com/android/server/GnssManagerService.java b/services/core/java/com/android/server/GnssManagerService.java
index 274e2f1..cbf2a62 100644
--- a/services/core/java/com/android/server/GnssManagerService.java
+++ b/services/core/java/com/android/server/GnssManagerService.java
@@ -67,7 +67,7 @@
/** Manages Gnss providers and related Gnss functions for LocationManagerService. */
public class GnssManagerService {
- private static final String TAG = "LocationManagerService";
+ private static final String TAG = "GnssManagerService";
private static final boolean D = Log.isLoggable(TAG, Log.DEBUG);
// Providers
@@ -124,7 +124,7 @@
// Can use this constructor to inject GnssLocationProvider for testing
@VisibleForTesting
- GnssManagerService(LocationManagerService locationManagerService,
+ public GnssManagerService(LocationManagerService locationManagerService,
Context context,
GnssLocationProvider gnssLocationProvider,
LocationUsageLogger locationUsageLogger) {
@@ -719,8 +719,10 @@
* @param listener called when navigation message is received
*/
public void removeGnssNavigationMessageListener(IGnssNavigationMessageListener listener) {
- removeGnssDataListener(
- listener, mGnssNavigationMessageProvider, mGnssNavigationMessageListeners);
+ synchronized (mGnssNavigationMessageListeners) {
+ removeGnssDataListener(
+ listener, mGnssNavigationMessageProvider, mGnssNavigationMessageListeners);
+ }
}
/**
diff --git a/services/core/java/com/android/server/LocationUsageLogger.java b/services/core/java/com/android/server/LocationUsageLogger.java
index 4ca74bf..a8a3cc4 100644
--- a/services/core/java/com/android/server/LocationUsageLogger.java
+++ b/services/core/java/com/android/server/LocationUsageLogger.java
@@ -30,7 +30,7 @@
/**
* Logger for Location API usage logging.
*/
-class LocationUsageLogger {
+public class LocationUsageLogger {
private static final String TAG = "LocationUsageLogger";
private static final boolean D = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 8bf01a3..11b9ac4 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -67,6 +67,7 @@
import android.util.TimeUtils;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.location.GpsNetInitiatedHandler;
import com.android.internal.location.GpsNetInitiatedHandler.GpsNiNotification;
@@ -304,6 +305,9 @@
private final ExponentialBackOff mPsdsBackOff = new ExponentialBackOff(RETRY_INTERVAL,
MAX_RETRY_INTERVAL);
+ private static boolean sIsInitialized = false;
+ private static boolean sStaticTestOverride = false;
+
// True if we are enabled
@GuardedBy("mLock")
private boolean mGpsEnabled;
@@ -576,7 +580,15 @@
}
}
+ @VisibleForTesting
+ public static void setIsSupportedForTest(boolean override) {
+ sStaticTestOverride = override;
+ }
+
public static boolean isSupported() {
+ if (sStaticTestOverride) {
+ return true;
+ }
return native_is_supported();
}
@@ -598,6 +610,13 @@
Looper looper) {
super(context, locationProviderManager);
+ synchronized (mLock) {
+ if (!sIsInitialized) {
+ class_init_native();
+ }
+ sIsInitialized = true;
+ }
+
mLooper = looper;
// Create a wake lock
@@ -2224,10 +2243,6 @@
// preallocated to avoid memory allocation in reportNmea()
private byte[] mNmeaBuffer = new byte[120];
- static {
- class_init_native();
- }
-
private static native void class_init_native();
private static native boolean native_is_supported();
diff --git a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java b/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
index ec05c31..55e427f 100644
--- a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
+++ b/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
@@ -47,7 +47,7 @@
}
@VisibleForTesting
- GnssMeasurementsProvider(
+ public GnssMeasurementsProvider(
Context context, Handler handler, GnssMeasurementProviderNative aNative) {
super(context, handler, TAG);
mNative = aNative;
@@ -158,7 +158,7 @@
}
@VisibleForTesting
- static class GnssMeasurementProviderNative {
+ public static class GnssMeasurementProviderNative {
public boolean isMeasurementSupported() {
return native_is_measurement_supported();
}
diff --git a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java b/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
index 4c45ef6..983d1da 100644
--- a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
+++ b/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
@@ -45,7 +45,7 @@
}
@VisibleForTesting
- GnssNavigationMessageProvider(Context context, Handler handler,
+ public GnssNavigationMessageProvider(Context context, Handler handler,
GnssNavigationMessageProviderNative aNative) {
super(context, handler, TAG);
mNative = aNative;
@@ -142,7 +142,7 @@
}
@VisibleForTesting
- static class GnssNavigationMessageProviderNative {
+ public static class GnssNavigationMessageProviderNative {
public boolean isNavigationMessageSupported() {
return native_is_navigation_message_supported();
}