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(); }