From 04f5967c9533b91774d283961a62f202b7a1fa8e Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 28 Jun 2017 12:08:55 -0700 Subject: [PATCH] Bluetooth: Use string in remote device summary * Use String in connected device summary instead of resource id * This allows dynamic strings to be built by CachedBluetoothDevice such as ones involve battery level percentages Bug: 35874078 Test: make, unit test, test with Bluetooth devices Change-Id: I583eac73280ca17387b215a4e7095e27de399998 --- .../BluetoothDetailsHeaderController.java | 5 ++-- .../bluetooth/BluetoothDevicePreference.java | 10 ++----- .../BluetoothDetailsControllerTestBase.java | 12 ++++----- .../BluetoothDetailsHeaderControllerTest.java | 27 ++++++++++++------- ...luetoothDetailsProfilesControllerTest.java | 2 +- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java index 74f95fe1f98..f459c6f11a5 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java @@ -53,12 +53,11 @@ public class BluetoothDetailsHeaderController extends BluetoothDetailsController protected void setHeaderProperties() { Pair pair = Utils.getBtClassDrawableWithDescription (mContext.getResources(), mCachedDevice); - int summaryResourceId = mCachedDevice.getConnectionSummary(); + String summaryText = mCachedDevice.getConnectionSummary(); mHeaderController.setLabel(mCachedDevice.getName()); mHeaderController.setIcon(mContext.getDrawable(pair.first)); mHeaderController.setIconContentDescription(pair.second); - mHeaderController.setSummary( - summaryResourceId > 0 ? mContext.getString(summaryResourceId) : null); + mHeaderController.setSummary(summaryText); } @Override diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java index 8281d76d670..a216400d8d1 100644 --- a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java +++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java @@ -117,14 +117,8 @@ public final class BluetoothDevicePreference extends GearPreference implements * any preference info has changed from the previous value. */ setTitle(mCachedDevice.getName()); - - int summaryResId = mCachedDevice.getConnectionSummary(); - if (summaryResId != 0) { - setSummary(summaryResId); - } else { - setSummary(null); // empty summary for unpaired devices - } - + // Null check is done at the framework + setSummary(mCachedDevice.getConnectionSummary()); Pair pair = Utils.getBtClassDrawableWithDescription(mResources, mCachedDevice); diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java index 73c4eb7b438..3b8db046579 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java @@ -76,7 +76,7 @@ public class BluetoothDetailsControllerTestBase { private String address; private int majorDeviceClass; private boolean connected; - private int connectionSummary; + private String connectionSummary; public DeviceConfig setName(String newValue) { this.name = newValue; @@ -97,8 +97,8 @@ public class BluetoothDetailsControllerTestBase { this.connected = newValue; return this; } - public DeviceConfig setConnectionSummary(int newValue) { - this.connectionSummary = newValue; + public DeviceConfig setConnectionSummary(String connectionSummary) { + this.connectionSummary = connectionSummary; return this; } @@ -118,18 +118,18 @@ public class BluetoothDetailsControllerTestBase { return connected; } - public int getConnectionSummary() { + public String getConnectionSummary() { return connectionSummary; } } - protected static DeviceConfig makeDefaultDeviceConfig() { + protected DeviceConfig makeDefaultDeviceConfig() { return new DeviceConfig() .setName("Mock Device") .setAddress("B4:B0:34:B5:3B:1B") .setMajorDeviceClass(BluetoothClass.Device.Major.AUDIO_VIDEO) .setConnected(true) - .setConnectionSummary(R.string.bluetooth_connected); + .setConnectionSummary(mContext.getString(R.string.bluetooth_connected)); } /** diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java index 7e9a0b68ca3..d99ed43c3e9 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java @@ -16,6 +16,8 @@ package com.android.settings.bluetooth; +import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.spy; @@ -23,7 +25,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.graphics.drawable.Drawable; -import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.applications.LayoutPreference; @@ -33,7 +34,6 @@ import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.shadow.SettingsShadowBluetoothDevice; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.widget.EntityHeaderController; -import com.android.settingslib.bluetooth.LocalBluetoothProfile; import org.junit.After; import org.junit.Test; @@ -43,8 +43,6 @@ import org.mockito.InOrder; import org.mockito.Mock; import org.robolectric.annotation.Config; -import java.util.ArrayList; - @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows={SettingsShadowBluetoothDevice.class, ShadowEntityHeaderController.class}) @@ -73,6 +71,15 @@ public class BluetoothDetailsHeaderControllerTest extends BluetoothDetailsContro ShadowEntityHeaderController.reset(); } + /** + * Test to verify the current test context object works so that we are not checking null + * against null + */ + @Test + public void testContextMock() { + assertThat(mContext.getString(R.string.bluetooth_connected)).isEqualTo("Connected"); + } + @Test public void header() { showScreen(mController); @@ -86,17 +93,19 @@ public class BluetoothDetailsHeaderControllerTest extends BluetoothDetailsContro @Test public void connectionStatusChangesWhileScreenOpen() { - ArrayList profiles = new ArrayList<>(); InOrder inOrder = inOrder(mHeaderController); - when(mCachedDevice.getConnectionSummary()).thenReturn(R.string.bluetooth_connected); + when(mCachedDevice.getConnectionSummary()).thenReturn( + mContext.getString(R.string.bluetooth_connected)); showScreen(mController); - inOrder.verify(mHeaderController).setSummary(mContext.getString(R.string.bluetooth_connected)); + inOrder.verify(mHeaderController).setSummary( + mContext.getString(R.string.bluetooth_connected)); - when(mCachedDevice.getConnectionSummary()).thenReturn(0); + when(mCachedDevice.getConnectionSummary()).thenReturn(null); mController.onDeviceAttributesChanged(); inOrder.verify(mHeaderController).setSummary((CharSequence) null); - when(mCachedDevice.getConnectionSummary()).thenReturn(R.string.bluetooth_connecting); + when(mCachedDevice.getConnectionSummary()).thenReturn( + mContext.getString(R.string.bluetooth_connecting)); mController.onDeviceAttributesChanged(); inOrder.verify(mHeaderController).setSummary( mContext.getString(R.string.bluetooth_connecting)); diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java index e888d055a78..445e4e37417 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java @@ -276,7 +276,7 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont @Test public void disconnectedDeviceOneProfile() { - setupDevice(makeDefaultDeviceConfig().setConnected(false).setConnectionSummary(0)); + setupDevice(makeDefaultDeviceConfig().setConnected(false).setConnectionSummary(null)); addFakeProfile(R.string.bluetooth_profile_a2dp, true); showScreen(mController); verifyProfileSwitchTitles(getProfileSwitches(true));