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
This commit is contained in:
@@ -53,12 +53,11 @@ public class BluetoothDetailsHeaderController extends BluetoothDetailsController
|
|||||||
protected void setHeaderProperties() {
|
protected void setHeaderProperties() {
|
||||||
Pair<Integer, String> pair = Utils.getBtClassDrawableWithDescription
|
Pair<Integer, String> pair = Utils.getBtClassDrawableWithDescription
|
||||||
(mContext.getResources(), mCachedDevice);
|
(mContext.getResources(), mCachedDevice);
|
||||||
int summaryResourceId = mCachedDevice.getConnectionSummary();
|
String summaryText = mCachedDevice.getConnectionSummary();
|
||||||
mHeaderController.setLabel(mCachedDevice.getName());
|
mHeaderController.setLabel(mCachedDevice.getName());
|
||||||
mHeaderController.setIcon(mContext.getDrawable(pair.first));
|
mHeaderController.setIcon(mContext.getDrawable(pair.first));
|
||||||
mHeaderController.setIconContentDescription(pair.second);
|
mHeaderController.setIconContentDescription(pair.second);
|
||||||
mHeaderController.setSummary(
|
mHeaderController.setSummary(summaryText);
|
||||||
summaryResourceId > 0 ? mContext.getString(summaryResourceId) : null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -117,14 +117,8 @@ public final class BluetoothDevicePreference extends GearPreference implements
|
|||||||
* any preference info has changed from the previous value.
|
* any preference info has changed from the previous value.
|
||||||
*/
|
*/
|
||||||
setTitle(mCachedDevice.getName());
|
setTitle(mCachedDevice.getName());
|
||||||
|
// Null check is done at the framework
|
||||||
int summaryResId = mCachedDevice.getConnectionSummary();
|
setSummary(mCachedDevice.getConnectionSummary());
|
||||||
if (summaryResId != 0) {
|
|
||||||
setSummary(summaryResId);
|
|
||||||
} else {
|
|
||||||
setSummary(null); // empty summary for unpaired devices
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Pair<Integer, String> pair = Utils.getBtClassDrawableWithDescription(mResources,
|
Pair<Integer, String> pair = Utils.getBtClassDrawableWithDescription(mResources,
|
||||||
mCachedDevice);
|
mCachedDevice);
|
||||||
|
@@ -76,7 +76,7 @@ public class BluetoothDetailsControllerTestBase {
|
|||||||
private String address;
|
private String address;
|
||||||
private int majorDeviceClass;
|
private int majorDeviceClass;
|
||||||
private boolean connected;
|
private boolean connected;
|
||||||
private int connectionSummary;
|
private String connectionSummary;
|
||||||
|
|
||||||
public DeviceConfig setName(String newValue) {
|
public DeviceConfig setName(String newValue) {
|
||||||
this.name = newValue;
|
this.name = newValue;
|
||||||
@@ -97,8 +97,8 @@ public class BluetoothDetailsControllerTestBase {
|
|||||||
this.connected = newValue;
|
this.connected = newValue;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public DeviceConfig setConnectionSummary(int newValue) {
|
public DeviceConfig setConnectionSummary(String connectionSummary) {
|
||||||
this.connectionSummary = newValue;
|
this.connectionSummary = connectionSummary;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,18 +118,18 @@ public class BluetoothDetailsControllerTestBase {
|
|||||||
return connected;
|
return connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getConnectionSummary() {
|
public String getConnectionSummary() {
|
||||||
return connectionSummary;
|
return connectionSummary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static DeviceConfig makeDefaultDeviceConfig() {
|
protected DeviceConfig makeDefaultDeviceConfig() {
|
||||||
return new DeviceConfig()
|
return new DeviceConfig()
|
||||||
.setName("Mock Device")
|
.setName("Mock Device")
|
||||||
.setAddress("B4:B0:34:B5:3B:1B")
|
.setAddress("B4:B0:34:B5:3B:1B")
|
||||||
.setMajorDeviceClass(BluetoothClass.Device.Major.AUDIO_VIDEO)
|
.setMajorDeviceClass(BluetoothClass.Device.Major.AUDIO_VIDEO)
|
||||||
.setConnected(true)
|
.setConnected(true)
|
||||||
.setConnectionSummary(R.string.bluetooth_connected);
|
.setConnectionSummary(mContext.getString(R.string.bluetooth_connected));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.bluetooth;
|
package com.android.settings.bluetooth;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Mockito.inOrder;
|
import static org.mockito.Mockito.inOrder;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -23,7 +25,6 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.support.v7.preference.Preference;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
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.SettingsShadowBluetoothDevice;
|
||||||
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
||||||
import com.android.settings.widget.EntityHeaderController;
|
import com.android.settings.widget.EntityHeaderController;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -43,8 +43,6 @@ import org.mockito.InOrder;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
|
||||||
shadows={SettingsShadowBluetoothDevice.class, ShadowEntityHeaderController.class})
|
shadows={SettingsShadowBluetoothDevice.class, ShadowEntityHeaderController.class})
|
||||||
@@ -73,6 +71,15 @@ public class BluetoothDetailsHeaderControllerTest extends BluetoothDetailsContro
|
|||||||
ShadowEntityHeaderController.reset();
|
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
|
@Test
|
||||||
public void header() {
|
public void header() {
|
||||||
showScreen(mController);
|
showScreen(mController);
|
||||||
@@ -86,17 +93,19 @@ public class BluetoothDetailsHeaderControllerTest extends BluetoothDetailsContro
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void connectionStatusChangesWhileScreenOpen() {
|
public void connectionStatusChangesWhileScreenOpen() {
|
||||||
ArrayList<LocalBluetoothProfile> profiles = new ArrayList<>();
|
|
||||||
InOrder inOrder = inOrder(mHeaderController);
|
InOrder inOrder = inOrder(mHeaderController);
|
||||||
when(mCachedDevice.getConnectionSummary()).thenReturn(R.string.bluetooth_connected);
|
when(mCachedDevice.getConnectionSummary()).thenReturn(
|
||||||
|
mContext.getString(R.string.bluetooth_connected));
|
||||||
showScreen(mController);
|
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();
|
mController.onDeviceAttributesChanged();
|
||||||
inOrder.verify(mHeaderController).setSummary((CharSequence) null);
|
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();
|
mController.onDeviceAttributesChanged();
|
||||||
inOrder.verify(mHeaderController).setSummary(
|
inOrder.verify(mHeaderController).setSummary(
|
||||||
mContext.getString(R.string.bluetooth_connecting));
|
mContext.getString(R.string.bluetooth_connecting));
|
||||||
|
@@ -276,7 +276,7 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void disconnectedDeviceOneProfile() {
|
public void disconnectedDeviceOneProfile() {
|
||||||
setupDevice(makeDefaultDeviceConfig().setConnected(false).setConnectionSummary(0));
|
setupDevice(makeDefaultDeviceConfig().setConnected(false).setConnectionSummary(null));
|
||||||
addFakeProfile(R.string.bluetooth_profile_a2dp, true);
|
addFakeProfile(R.string.bluetooth_profile_a2dp, true);
|
||||||
showScreen(mController);
|
showScreen(mController);
|
||||||
verifyProfileSwitchTitles(getProfileSwitches(true));
|
verifyProfileSwitchTitles(getProfileSwitches(true));
|
||||||
|
Reference in New Issue
Block a user