DistanceMeasurement: stop calling NativeInterface in test
Bug: 295237486
Test: atest DistanceMeasurementManagerTest
Change-Id: Ia947cc98a5c42aa9267cb4244ad5d9cb685673bd
diff --git a/android/app/src/com/android/bluetooth/gatt/DistanceMeasurementNativeInterface.java b/android/app/src/com/android/bluetooth/gatt/DistanceMeasurementNativeInterface.java
index 43a0e18..0ea9f74 100644
--- a/android/app/src/com/android/bluetooth/gatt/DistanceMeasurementNativeInterface.java
+++ b/android/app/src/com/android/bluetooth/gatt/DistanceMeasurementNativeInterface.java
@@ -17,18 +17,24 @@
package com.android.bluetooth.gatt;
import android.bluetooth.BluetoothStatusCodes;
+import android.util.Log;
+import com.android.bluetooth.Utils;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
/**
* Distance Measurement Native Interface to/from JNI.
- *
- * @hide
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
public class DistanceMeasurementNativeInterface {
- private static DistanceMeasurementNativeInterface sInterface;
+ private static final String TAG = DistanceMeasurementNativeInterface.class.getSimpleName();
+
+ @GuardedBy("INSTANCE_LOCK")
+ private static DistanceMeasurementNativeInterface sInstance;
+
private static final Object INSTANCE_LOCK = new Object();
+
private DistanceMeasurementManager mDistanceMeasurementManager;
/**
@@ -54,11 +60,19 @@
*/
public static DistanceMeasurementNativeInterface getInstance() {
synchronized (INSTANCE_LOCK) {
- if (sInterface == null) {
- sInterface = new DistanceMeasurementNativeInterface();
+ if (sInstance == null) {
+ sInstance = new DistanceMeasurementNativeInterface();
}
+ return sInstance;
}
- return sInterface;
+ }
+
+ /** Set singleton instance. */
+ @VisibleForTesting
+ public static void setInstance(DistanceMeasurementNativeInterface instance) {
+ synchronized (INSTANCE_LOCK) {
+ sInstance = instance;
+ }
}
void init(DistanceMeasurementManager manager) {
@@ -124,7 +138,11 @@
}
static {
- classInitNative();
+ if (Utils.isInstrumentationTestMode()) {
+ Log.w(TAG, "App is instrumented. Skip loading the native");
+ } else {
+ classInitNative();
+ }
}
private static native void classInitNative();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/gatt/DistanceMeasurementManagerTest.java b/android/app/tests/unit/src/com/android/bluetooth/gatt/DistanceMeasurementManagerTest.java
index 9472b30..f1d9d34 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/gatt/DistanceMeasurementManagerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/gatt/DistanceMeasurementManagerTest.java
@@ -20,7 +20,6 @@
import static org.mockito.Mockito.after;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -30,9 +29,7 @@
import android.bluetooth.le.DistanceMeasurementMethod;
import android.bluetooth.le.DistanceMeasurementParams;
import android.bluetooth.le.DistanceMeasurementResult;
-import android.bluetooth.le.DistanceMeasurementSession;
import android.bluetooth.le.IDistanceMeasurementCallback;
-import android.os.HandlerThread;
import android.os.RemoteException;
import androidx.test.filters.SmallTest;
@@ -70,10 +67,9 @@
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
doReturn(IDENTITY_ADDRESS).when(mAdapterService).getIdentityAddress(IDENTITY_ADDRESS);
+ DistanceMeasurementNativeInterface.setInstance(mDistanceMeasurementNativeInterface);
mDistanceMeasurementManager = new DistanceMeasurementManager(mAdapterService);
mDistanceMeasurementManager.start();
- mDistanceMeasurementManager.mDistanceMeasurementNativeInterface =
- mDistanceMeasurementNativeInterface;
mUuid = UUID.randomUUID();
mDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(IDENTITY_ADDRESS);
}
@@ -81,6 +77,7 @@
@After
public void tearDown() throws Exception {
mDistanceMeasurementManager.cleanup();
+ DistanceMeasurementNativeInterface.setInstance(null);
}
@Test