diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java index f8950325904..373d9296f29 100644 --- a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java +++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java @@ -175,7 +175,7 @@ public final class BluetoothDevicePreference extends GearPreference { mHideSecondTarget = hideSecondTarget; } - private void onPreferenceAttributesChanged() { + void onPreferenceAttributesChanged() { ThreadUtils.postOnBackgroundThread(() -> { final Pair pair = BluetoothUtils.getBtRainbowDrawableWithDescription(getContext(), mCachedDevice); diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java index 8cb698faaf4..d65500be27a 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java @@ -317,4 +317,13 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback, } return device.getBondState() == BluetoothDevice.BOND_BONDED && device.isConnected(); } + + /** + * Update the attributes of {@link Preference}. + */ + public void refreshPreference() { + for (Preference preference : mPreferenceMap.values()) { + ((BluetoothDevicePreference) preference).onPreferenceAttributesChanged(); + } + } } diff --git a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java index d895154aac0..ec122dfd506 100644 --- a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java @@ -68,6 +68,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle } mBluetoothDeviceUpdater.registerCallback(); mLocalBluetoothManager.getEventManager().registerCallback(this); + mBluetoothDeviceUpdater.refreshPreference(); } @Override diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java index 957737a118f..8cec9a68221 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java @@ -61,6 +61,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController mBluetoothDeviceUpdater.registerCallback(); mConnectedUsbDeviceUpdater.registerCallback(); mConnectedDockUpdater.registerCallback(); + mBluetoothDeviceUpdater.refreshPreference(); } @Override diff --git a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java index a7bae3b863e..4a29485cfff 100644 --- a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java +++ b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java @@ -111,6 +111,7 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc mBluetoothDeviceUpdater.registerCallback(); mSavedDockUpdater.registerCallback(); mContext.registerReceiver(mReceiver, mIntentFilter); + mBluetoothDeviceUpdater.refreshPreference(); } @Override diff --git a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java index 062fa2db792..df721f18bcd 100644 --- a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java @@ -63,6 +63,7 @@ public class SavedDeviceGroupController extends BasePreferenceController public void onStart() { mBluetoothDeviceUpdater.registerCallback(); mSavedDockUpdater.registerCallback(); + mBluetoothDeviceUpdater.refreshPreference(); } @Override diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java index fcc7f51b7ec..e0a61fedc87 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java @@ -58,6 +58,7 @@ public class BluetoothDeviceUpdaterTest { private static final String MAC_ADDRESS = "04:52:C7:0B:D8:3C"; private static final String SUB_MAC_ADDRESS = "05:52:C7:0B:D8:3C"; + private static final String TEST_NAME = "test_name"; @Mock private DashboardFragment mDashboardFragment; @@ -256,4 +257,15 @@ public class BluetoothDeviceUpdaterTest { verify(mDevicePreferenceCallback).onDeviceRemoved(mPreference); assertThat(mBluetoothDeviceUpdater.mPreferenceMap.containsKey(mBluetoothDevice)).isFalse(); } + + @Test + public void havePreference_refreshPreference() { + mBluetoothDeviceUpdater.mPreferenceMap.put(mBluetoothDevice, mPreference); + mPreference.setTitle("fake_name"); + + when(mCachedBluetoothDevice.getName()).thenReturn(TEST_NAME); + mBluetoothDeviceUpdater.refreshPreference(); + + assertThat(mPreference.getTitle()).isEqualTo(TEST_NAME); + } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java index ad630ffd2c9..da1c4930d81 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java @@ -157,9 +157,11 @@ public class AvailableMediaDeviceGroupControllerTest { public void testRegister() { // register the callback in onStart() mAvailableMediaDeviceGroupController.onStart(); + verify(mAvailableMediaBluetoothDeviceUpdater).registerCallback(); verify(mLocalBluetoothManager.getEventManager()).registerCallback( any(BluetoothCallback.class)); + verify(mAvailableMediaBluetoothDeviceUpdater).refreshPreference(); } @Test diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java index 946d639e909..4c857133b68 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java @@ -139,9 +139,11 @@ public class ConnectedDeviceGroupControllerTest { public void onStart_shouldRegisterUpdaters() { // register the callback in onStart() mConnectedDeviceGroupController.onStart(); + verify(mConnectedBluetoothDeviceUpdater).registerCallback(); verify(mConnectedUsbDeviceUpdater).registerCallback(); verify(mConnectedDockUpdater).registerCallback(); + verify(mConnectedBluetoothDeviceUpdater).refreshPreference(); } @Test diff --git a/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java index 420b1a464f0..0e033658afe 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java @@ -147,13 +147,16 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { public void callbackCanRegisterAndUnregister() { // register the callback in onStart() mPreConnectedDeviceController.onStart(); + verify(mBluetoothDeviceUpdater).registerCallback(); verify(mDockUpdater).registerCallback(); verify(mContext).registerReceiver(mPreConnectedDeviceController.mReceiver, mPreConnectedDeviceController.mIntentFilter); + verify(mBluetoothDeviceUpdater).refreshPreference(); // unregister the callback in onStop() mPreConnectedDeviceController.onStop(); + verify(mBluetoothDeviceUpdater).unregisterCallback(); verify(mDockUpdater).unregisterCallback(); verify(mContext).unregisterReceiver(mPreConnectedDeviceController.mReceiver); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java index 6c6cf472c18..d2c44f938e4 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java @@ -79,8 +79,10 @@ public class SavedDeviceGroupControllerTest { public void testRegister() { // register the callback in onStart() mSavedDeviceGroupController.onStart(); + verify(mBluetoothDeviceUpdater).registerCallback(); verify(mSavedDockUpdater).registerCallback(); + verify(mBluetoothDeviceUpdater).refreshPreference(); } @Test