UwbManagerTest: Add a helper method for uwb toggle change

Bug: 209028991
Test: atest UwbManagerTest
Change-Id: Ia4f4ecba3fe6070d6214c849bb8d4ded355d920a
diff --git a/tests/uwb/src/android/uwb/cts/UwbManagerTest.java b/tests/uwb/src/android/uwb/cts/UwbManagerTest.java
index 8447ece..489da9d 100644
--- a/tests/uwb/src/android/uwb/cts/UwbManagerTest.java
+++ b/tests/uwb/src/android/uwb/cts/UwbManagerTest.java
@@ -74,7 +74,7 @@
     private String mDefaultChipId;
 
     @Before
-    public void setup() {
+    public void setup() throws Exception {
         mUwbManager = mContext.getSystemService(UwbManager.class);
         assumeTrue(UwbTestUtils.isUwbSupported(mContext));
         assertThat(mUwbManager).isNotNull();
@@ -82,12 +82,30 @@
         // Ensure UWB is toggled on.
         ShellIdentityUtils.invokeWithShellPermissions(() -> {
             if (!mUwbManager.isUwbEnabled()) {
-                mUwbManager.setUwbEnabled(true);
+                try {
+                    setUwbEnabledAndWaitForCompletion(true);
+                } catch (Exception e) {
+                    fail("Exception while processing UWB toggle " + e);
+                }
             }
             mDefaultChipId = mUwbManager.getDefaultChipId();
         });
     }
 
+    // Should be invoked with shell permissions.
+    private void setUwbEnabledAndWaitForCompletion(boolean enabled) throws Exception {
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        int adapterState = enabled ? STATE_ENABLED_INACTIVE : STATE_DISABLED;
+        AdapterStateCallback adapterStateCallback =
+                new AdapterStateCallback(countDownLatch, adapterState);
+        mUwbManager.registerAdapterStateCallback(
+                Executors.newSingleThreadExecutor(), adapterStateCallback);
+        mUwbManager.setUwbEnabled(enabled);
+        assertThat(countDownLatch.await(2, TimeUnit.SECONDS)).isTrue();
+        assertThat(mUwbManager.isUwbEnabled()).isEqualTo(enabled);
+        assertThat(adapterStateCallback.state).isEqualTo(adapterState);
+    }
+
     @Test
     public void testGetSpecificationInfo() {
         UiAutomation uiAutomation = getInstrumentation().getUiAutomation();
@@ -521,22 +539,13 @@
     @Test
     public void testUwbStateToggle() throws Exception {
         UiAutomation uiAutomation = getInstrumentation().getUiAutomation();
-        CountDownLatch countDownLatch = new CountDownLatch(1);
-        AdapterStateCallback adapterStateCallback =
-                new AdapterStateCallback(countDownLatch, STATE_DISABLED);
         try {
             // Needs UWB_PRIVILEGED permission which is held by shell.
             uiAutomation.adoptShellPermissionIdentity();
-            mUwbManager.registerAdapterStateCallback(
-                    Executors.newSingleThreadExecutor(), adapterStateCallback);
             assertThat(mUwbManager.isUwbEnabled()).isTrue();
             assertThat(mUwbManager.getAdapterState()).isEqualTo(STATE_ENABLED_INACTIVE);
             // Toggle the state
-            mUwbManager.setUwbEnabled(false);
-            // Wait for the on start failed callback.
-            assertThat(countDownLatch.await(1, TimeUnit.SECONDS)).isTrue();
-            assertThat(mUwbManager.isUwbEnabled()).isFalse();
-            assertThat(adapterStateCallback.state).isEqualTo(STATE_DISABLED);
+            setUwbEnabledAndWaitForCompletion(false);
             assertThat(mUwbManager.getAdapterState()).isEqualTo(STATE_DISABLED);
         } finally {
             uiAutomation.dropShellPermissionIdentity();