summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/app/src/com/android/bluetooth/btservice/AdapterService.java20
-rw-r--r--android/app/tests/unit/AndroidTest.xml4
-rw-r--r--android/app/tests/unit/src/com/android/bluetooth/TestUtils.java39
3 files changed, 29 insertions, 34 deletions
diff --git a/android/app/src/com/android/bluetooth/btservice/AdapterService.java b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
index 0def33ca1c..f84cc69ff4 100644
--- a/android/app/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
@@ -283,17 +283,29 @@ public class AdapterService extends Service {
return sAdapterService;
}
- private static synchronized void setAdapterService(AdapterService instance) {
- Log.d(TAG, "setAdapterService() - trying to set service to " + instance);
+ /** Allow test to set an AdapterService to be return by AdapterService.getAdapterService() */
+ @VisibleForTesting
+ public static synchronized void setAdapterService(AdapterService instance) {
if (instance == null) {
+ Log.e(TAG, "setAdapterService() - instance is null");
return;
}
+ Log.d(TAG, "setAdapterService() - set service to " + instance);
sAdapterService = instance;
}
- private static synchronized void clearAdapterService(AdapterService current) {
- if (sAdapterService == current) {
+ /** Clear test Adapter service. See {@code setAdapterService} */
+ @VisibleForTesting
+ public static synchronized void clearAdapterService(AdapterService instance) {
+ if (sAdapterService == instance) {
+ Log.d(TAG, "clearAdapterService() - This adapter was cleared " + instance);
sAdapterService = null;
+ } else {
+ Log.d(
+ TAG,
+ "clearAdapterService() - incorrect cleared adapter."
+ + (" Instance=" + instance)
+ + (" vs sAdapterService=" + sAdapterService));
}
}
diff --git a/android/app/tests/unit/AndroidTest.xml b/android/app/tests/unit/AndroidTest.xml
index 37bd75b6eb..212b245d6e 100644
--- a/android/app/tests/unit/AndroidTest.xml
+++ b/android/app/tests/unit/AndroidTest.xml
@@ -30,6 +30,10 @@
<option name="run-command" value="settings put global ble_scan_always_enabled 0" />
<option name="run-command" value="cmd bluetooth_manager disable" />
<option name="run-command" value="cmd bluetooth_manager wait-for-state:STATE_OFF" />
+ <option name="run-command" value="settings put global satellite_mode_radios bluetooth" />
+ <option name="run-command" value="settings put global satellite_mode_enabled 1" />
+ <option name="teardown-command" value="settings delete global satellite_mode_radios" />
+ <option name="teardown-command" value="settings put global satellite_mode_enabled 0" />
<option name="teardown-command" value="cmd bluetooth_manager enable" />
<option name="teardown-command" value="cmd bluetooth_manager wait-for-state:STATE_ON" />
<option name="teardown-command" value="settings put global ble_scan_always_enabled 1" />
diff --git a/android/app/tests/unit/src/com/android/bluetooth/TestUtils.java b/android/app/tests/unit/src/com/android/bluetooth/TestUtils.java
index 913444f682..d605ef2f8e 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/TestUtils.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/TestUtils.java
@@ -52,8 +52,6 @@ import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
@@ -94,49 +92,30 @@ public class TestUtils {
/**
* Set the return value of {@link AdapterService#getAdapterService()} to a test specified value
*
- * @param adapterService the designated {@link AdapterService} in test, must not be null, can
- * be mocked or spied
- * @throws NoSuchMethodException when setAdapterService method is not found
- * @throws IllegalAccessException when setAdapterService method cannot be accessed
- * @throws InvocationTargetException when setAdapterService method cannot be invoked, which
- * should never happen since setAdapterService is a static
- * method
+ * @param adapterService the designated {@link AdapterService} in test, must not be null, can be
+ * mocked or spied
*/
- public static void setAdapterService(AdapterService adapterService)
- throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+ public static void setAdapterService(AdapterService adapterService) {
Assert.assertNull("AdapterService.getAdapterService() must be null before setting another"
+ " AdapterService", AdapterService.getAdapterService());
Assert.assertNotNull("Adapter service should not be null", adapterService);
// We cannot mock AdapterService.getAdapterService() with Mockito.
- // Hence we need to use reflection to call a private method to
- // initialize properly the AdapterService.sAdapterService field.
- Method method =
- AdapterService.class.getDeclaredMethod("setAdapterService", AdapterService.class);
- method.setAccessible(true);
- method.invoke(null, adapterService);
+ // Hence we need to set AdapterService.sAdapterService field.
+ AdapterService.setAdapterService(adapterService);
}
/**
* Clear the return value of {@link AdapterService#getAdapterService()} to null
*
- * @param adapterService the {@link AdapterService} used when calling
- * {@link TestUtils#setAdapterService(AdapterService)}
- * @throws NoSuchMethodException when clearAdapterService method is not found
- * @throws IllegalAccessException when clearAdapterService method cannot be accessed
- * @throws InvocationTargetException when clearAdappterService method cannot be invoked,
- * which should never happen since clearAdapterService is a
- * static method
+ * @param adapterService the {@link AdapterService} used when calling {@link
+ * TestUtils#setAdapterService(AdapterService)}
*/
- public static void clearAdapterService(AdapterService adapterService)
- throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+ public static void clearAdapterService(AdapterService adapterService) {
Assert.assertSame("AdapterService.getAdapterService() must return the same object as the"
+ " supplied adapterService in this method", adapterService,
AdapterService.getAdapterService());
Assert.assertNotNull("Adapter service should not be null", adapterService);
- Method method =
- AdapterService.class.getDeclaredMethod("clearAdapterService", AdapterService.class);
- method.setAccessible(true);
- method.invoke(null, adapterService);
+ AdapterService.clearAdapterService(adapterService);
}
/** Helper function to mock getSystemService calls */