diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0ec17dc012a..defb65fcff8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13286,11 +13286,11 @@
Don\u2019t allow
- Ultra-WideBand (UWB)
+ Ultra-Wideband (UWB)
Helps identify the relative position of nearby devices that have UWB
- Turn off Airplane mode to use UWB.
+ Turn off airplane mode to use UWB
diff --git a/src/com/android/settings/uwb/UwbPreferenceController.java b/src/com/android/settings/uwb/UwbPreferenceController.java
index daadb63b8dd..15979b510cf 100644
--- a/src/com/android/settings/uwb/UwbPreferenceController.java
+++ b/src/com/android/settings/uwb/UwbPreferenceController.java
@@ -52,8 +52,6 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
@VisibleForTesting
private final BroadcastReceiver mAirplaneModeChangedReceiver;
private final Executor mExecutor;
- private boolean mIsChecked = true;
- boolean mRegisteredAdapterStateCallback = false;
private Preference mPreference;
public UwbPreferenceController(Context context, String key) {
@@ -94,26 +92,26 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
@Override
public boolean isChecked() {
- //TODO(b/186075119): Update toggle state by assigning to the real value by default.
- return mIsChecked;
+ int state = mUwbManager.getAdapterState();
+ return state == STATE_ENABLED_ACTIVE || state == STATE_ENABLED_INACTIVE;
}
@Override
public boolean setChecked(boolean isChecked) {
- mIsChecked = isChecked;
- mUwbManager.setUwbEnabled(isChecked);
+ mAirplaneModeOn = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
+ if (isUwbSupportedOnDevice()) {
+ if (mAirplaneModeOn) {
+ mUwbManager.setUwbEnabled(false);
+ } else {
+ mUwbManager.setUwbEnabled(isChecked);
+ }
+ }
return true;
}
@Override
public void onStateChanged(int state, int reason) {
- // Only update toggle state from service the first time. Otherwise toggle state is
- // changed from controller. For example, UWB is disabled if airplane mode is on but we do
- // not want to change the preference for the user in this case.
- if (!mRegisteredAdapterStateCallback) {
- mIsChecked = state == STATE_ENABLED_ACTIVE || state == STATE_ENABLED_INACTIVE;
- mRegisteredAdapterStateCallback = true;
- }
}
/** Called when activity starts being displayed to user. */
@@ -143,16 +141,7 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
@Override
public void updateState(Preference preference) {
super.updateState(preference);
- mAirplaneModeOn = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
preference.setEnabled(!mAirplaneModeOn);
- if (isUwbSupportedOnDevice()) {
- if (mAirplaneModeOn) {
- mUwbManager.setUwbEnabled(false);
- } else {
- mUwbManager.setUwbEnabled(mIsChecked);
- }
- }
refreshSummary(preference);
}
diff --git a/tests/robotests/src/com/android/settings/uwb/UwbPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/uwb/UwbPreferenceControllerTest.java
index 00dc4dff4ae..7370aa1b7a5 100644
--- a/tests/robotests/src/com/android/settings/uwb/UwbPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/uwb/UwbPreferenceControllerTest.java
@@ -94,55 +94,15 @@ public class UwbPreferenceControllerTest {
}
@Test
- public void onStateChanged_stateNotRegistered_shouldUpdate() {
- mController.mRegisteredAdapterStateCallback = false;
- mController.onStateChanged(UwbManager.AdapterStateCallback.STATE_DISABLED,
- UwbManager.AdapterStateCallback.STATE_CHANGED_REASON_SYSTEM_POLICY);
-
- assertThat(mController.isChecked()).isFalse();
- }
-
- @Test
- public void onStateChanged_stateRegistered_shouldNotUpdate() {
- mController.mRegisteredAdapterStateCallback = true;
- mController.onStateChanged(UwbManager.AdapterStateCallback.STATE_ENABLED_INACTIVE,
- UwbManager.AdapterStateCallback.STATE_CHANGED_REASON_SYSTEM_POLICY);
-
- assertThat(mController.isChecked()).isTrue();
- }
-
- @Test
- public void isChecked_uwbEnabledInactive_shouldReturnTrue() {
- doReturn(mPackageManager).when(mContext).getPackageManager();
- doReturn(true).when(mPackageManager)
- .hasSystemFeature(PackageManager.FEATURE_UWB);
- mController.mRegisteredAdapterStateCallback = false;
- mController.onStateChanged(UwbManager.AdapterStateCallback.STATE_ENABLED_INACTIVE,
- UwbManager.AdapterStateCallback.STATE_CHANGED_REASON_SYSTEM_POLICY);
-
- assertThat(mController.isChecked()).isTrue();
- }
-
- @Test
- public void isChecked_uwbEnabledActive_shouldReturnTrue() {
- doReturn(mPackageManager).when(mContext).getPackageManager();
- doReturn(true).when(mPackageManager)
- .hasSystemFeature(PackageManager.FEATURE_UWB);
- mController.mRegisteredAdapterStateCallback = false;
- mController.onStateChanged(UwbManager.AdapterStateCallback.STATE_ENABLED_ACTIVE,
- UwbManager.AdapterStateCallback.STATE_CHANGED_REASON_SYSTEM_POLICY);
+ public void isChecked_uwbEnabled_shouldReturnTrue() {
+ doReturn(mController.STATE_ENABLED_ACTIVE).when(mUwbManager).getAdapterState();
assertThat(mController.isChecked()).isTrue();
}
@Test
public void isChecked_uwbDisabled_shouldReturnFalse() {
- doReturn(mPackageManager).when(mContext).getPackageManager();
- doReturn(true).when(mPackageManager)
- .hasSystemFeature(PackageManager.FEATURE_UWB);
- mController.mRegisteredAdapterStateCallback = false;
- mController.onStateChanged(UwbManager.AdapterStateCallback.STATE_DISABLED,
- UwbManager.AdapterStateCallback.STATE_CHANGED_REASON_SYSTEM_POLICY);
+ doReturn(mController.STATE_DISABLED).when(mUwbManager).getAdapterState();
assertThat(mController.isChecked()).isFalse();
}