Merge "[Settings] Avoid NPE if BT device is changed by framework." into udc-dev
This commit is contained in:
@@ -56,6 +56,9 @@ import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowEntityHeaderController.class, ShadowDeviceConfig.class})
|
||||
public class AdvancedBluetoothDetailsHeaderControllerTest {
|
||||
@@ -380,40 +383,68 @@ public class AdvancedBluetoothDetailsHeaderControllerTest {
|
||||
SettingsUIDeviceConfig.BT_ADVANCED_HEADER_ENABLED, "true", true);
|
||||
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
|
||||
.thenReturn("true".getBytes());
|
||||
Set<CachedBluetoothDevice> cacheBluetoothDevices = new HashSet<>();
|
||||
when(mCachedDevice.getMemberDevice()).thenReturn(cacheBluetoothDevices);
|
||||
|
||||
mController.onStart();
|
||||
|
||||
verify(mCachedDevice).registerCallback(mController);
|
||||
verify(mBluetoothAdapter).addOnMetadataChangedListener(mBluetoothDevice,
|
||||
mContext.getMainExecutor(), mController.mMetadataListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_isRegisterCallback_unregisterCallback() {
|
||||
mController.mIsRegisterCallback = true;
|
||||
|
||||
mController.onStop();
|
||||
|
||||
verify(mBluetoothAdapter).removeOnMetadataChangedListener(mBluetoothDevice,
|
||||
mController.mMetadataListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStart_notAvailable_registerCallback() {
|
||||
public void onStart_notAvailable_notNeedToRegisterCallback() {
|
||||
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
|
||||
.thenReturn("false".getBytes());
|
||||
|
||||
mController.onStart();
|
||||
|
||||
verify(mCachedDevice, never()).registerCallback(mController);
|
||||
verify(mBluetoothAdapter, never()).addOnMetadataChangedListener(mBluetoothDevice,
|
||||
mContext.getMainExecutor(), mController.mMetadataListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_notRegisterCallback_unregisterCallback() {
|
||||
mController.mIsRegisterCallback = false;
|
||||
public void onStart_isAvailableButNoBluetoothDevice_notNeedToRegisterCallback() {
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SETTINGS_UI,
|
||||
SettingsUIDeviceConfig.BT_ADVANCED_HEADER_ENABLED, "true", true);
|
||||
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
|
||||
.thenReturn("true".getBytes());
|
||||
when(mCachedDevice.getDevice()).thenReturn(null);
|
||||
Set<CachedBluetoothDevice> cacheBluetoothDevices = new HashSet<>();
|
||||
when(mCachedDevice.getMemberDevice()).thenReturn(cacheBluetoothDevices);
|
||||
|
||||
mController.onStart();
|
||||
|
||||
verify(mCachedDevice, never()).registerCallback(mController);
|
||||
verify(mBluetoothAdapter, never()).addOnMetadataChangedListener(mBluetoothDevice,
|
||||
mContext.getMainExecutor(), mController.mMetadataListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_availableAndHasBluetoothDevice_unregisterCallback() {
|
||||
onStart_isAvailable_registerCallback();
|
||||
|
||||
mController.onStop();
|
||||
|
||||
verify(mCachedDevice).unregisterCallback(mController);
|
||||
verify(mBluetoothAdapter).removeOnMetadataChangedListener(mBluetoothDevice,
|
||||
mController.mMetadataListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_noBluetoothDevice_noNeedToUnregisterCallback() {
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SETTINGS_UI,
|
||||
SettingsUIDeviceConfig.BT_ADVANCED_HEADER_ENABLED, "true", true);
|
||||
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
|
||||
.thenReturn("true".getBytes());
|
||||
when(mCachedDevice.getDevice()).thenReturn(null);
|
||||
|
||||
mController.onStart();
|
||||
mController.onStop();
|
||||
|
||||
verify(mCachedDevice, never()).unregisterCallback(mController);
|
||||
verify(mBluetoothAdapter, never()).removeOnMetadataChangedListener(mBluetoothDevice,
|
||||
mController.mMetadataListener);
|
||||
}
|
||||
|
Reference in New Issue
Block a user