diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java index fb6cd56d534..1795c07a892 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java @@ -65,12 +65,10 @@ public class BluetoothDetailsHeaderController extends BluetoothDetailsController .getBtClassDrawableWithDescription(mContext, mCachedDevice, mContext.getResources().getFraction(R.fraction.bt_battery_scale_fraction, 1, 1)); String summaryText = mCachedDevice.getConnectionSummary(); - // If both the hearing aids are connected, two battery status should be shown. - final String pairDeviceSummary = mDeviceManager - .getHearingAidPairDeviceSummary(mCachedDevice); - if (pairDeviceSummary != null) { - mHeaderController.setSecondSummary(pairDeviceSummary); - } + // If both the hearing aids are connected, two device status should be shown. + // If Second Summary is unavailable, to set it to null. + mHeaderController.setSecondSummary( + mDeviceManager.getSubDeviceSummary(mCachedDevice)); mHeaderController.setLabel(mCachedDevice.getName()); mHeaderController.setIcon(pair.first); mHeaderController.setIconContentDescription(pair.second); diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java b/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java index 71a415de7fc..987dbe4f050 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java @@ -51,6 +51,8 @@ public class BluetoothDetailsMacAddressController extends BluetoothDetailsContro @Override protected void refresh() { + mFooterPreference.setTitle(mContext.getString( + R.string.bluetooth_device_mac_address, mCachedDevice.getAddress())); } @Override diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java index cac4565bddb..a1ce4a63d74 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java @@ -230,9 +230,19 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback, */ protected void removePreference(CachedBluetoothDevice cachedDevice) { final BluetoothDevice device = cachedDevice.getDevice(); + final CachedBluetoothDevice subCachedDevice = cachedDevice.getSubDevice(); if (mPreferenceMap.containsKey(device)) { mDevicePreferenceCallback.onDeviceRemoved(mPreferenceMap.get(device)); mPreferenceMap.remove(device); + } else if (subCachedDevice != null) { + // When doing remove, to check if preference maps to sub device. + // This would happen when connection state is changed in detail page that there is no + // callback from SettingsLib. + final BluetoothDevice subDevice = subCachedDevice.getDevice(); + if (mPreferenceMap.containsKey(subDevice)) { + mDevicePreferenceCallback.onDeviceRemoved(mPreferenceMap.get(subDevice)); + mPreferenceMap.remove(subDevice); + } } } diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java index 3f19ccb8497..0430e0f4e5b 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java @@ -72,7 +72,7 @@ public class BluetoothDetailsHeaderControllerTest extends BluetoothDetailsContro FakeFeatureFactory.setupForTest(); ShadowEntityHeaderController.setUseMock(mHeaderController); when(mBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager); - when(mCachedDeviceManager.getHearingAidPairDeviceSummary(mCachedDevice)).thenReturn("abc"); + when(mCachedDeviceManager.getSubDeviceSummary(mCachedDevice)).thenReturn("abc"); mController = new BluetoothDetailsHeaderController(mContext, mFragment, mCachedDevice, mLifecycle, mBluetoothManager); diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java index 4ede9477995..19e3bfbd439 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceUpdaterTest.java @@ -63,8 +63,12 @@ public class BluetoothDeviceUpdaterTest { @Mock private CachedBluetoothDevice mCachedBluetoothDevice; @Mock + private CachedBluetoothDevice mSubCachedBluetoothDevice; + @Mock private BluetoothDevice mBluetoothDevice; @Mock + private BluetoothDevice mSubBluetoothDevice; + @Mock private SettingsActivity mSettingsActivity; @Mock private LocalBluetoothManager mLocalManager; @@ -86,6 +90,7 @@ public class BluetoothDeviceUpdaterTest { mCachedDevices.add(mCachedBluetoothDevice); doReturn(mContext).when(mDashboardFragment).getContext(); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); + when(mSubCachedBluetoothDevice.getDevice()).thenReturn(mSubBluetoothDevice); when(mLocalManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager); when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mCachedDevices); @@ -146,6 +151,20 @@ public class BluetoothDeviceUpdaterTest { verify(mDevicePreferenceCallback, never()).onDeviceRemoved(any(Preference.class)); } + @Test + public void testRemovePreference_subDeviceExist_removePreference() { + when(mCachedBluetoothDevice.getSubDevice()).thenReturn(mSubCachedBluetoothDevice); + mBluetoothDeviceUpdater.mPreferenceMap.put(mSubBluetoothDevice, mPreference); + + assertThat(mBluetoothDeviceUpdater.mPreferenceMap. + containsKey(mSubBluetoothDevice)).isTrue(); + mBluetoothDeviceUpdater.removePreference(mCachedBluetoothDevice); + + verify(mDevicePreferenceCallback).onDeviceRemoved(mPreference); + assertThat(mBluetoothDeviceUpdater.mPreferenceMap. + containsKey(mSubBluetoothDevice)).isFalse(); + } + @Test public void testDeviceProfilesListener_click_startBluetoothDeviceDetailPage() { doReturn(mSettingsActivity).when(mDashboardFragment).getContext();