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