Skip lifecycle if controller is not available
Fixes: 129076378 Test: RunSettingsRoboTests Change-Id: If1e49785c2378ec2cf0f7d2837bc7d4c0ff915a0
This commit is contained in:
@@ -62,6 +62,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final Map<String, Bitmap> mIconCache;
|
final Map<String, Bitmap> mIconCache;
|
||||||
private CachedBluetoothDevice mCachedDevice;
|
private CachedBluetoothDevice mCachedDevice;
|
||||||
|
private BluetoothDevice mBluetoothDevice;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
BluetoothAdapter mBluetoothAdapter;
|
BluetoothAdapter mBluetoothAdapter;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -102,6 +103,9 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
|
if (!isAvailable()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
mCachedDevice.registerCallback(this::onDeviceAttributesChanged);
|
mCachedDevice.registerCallback(this::onDeviceAttributesChanged);
|
||||||
mBluetoothAdapter.registerMetadataListener(mCachedDevice.getDevice(), mMetadataListener,
|
mBluetoothAdapter.registerMetadataListener(mCachedDevice.getDevice(), mMetadataListener,
|
||||||
mHandler);
|
mHandler);
|
||||||
@@ -109,6 +113,9 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
|
if (!isAvailable()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
mCachedDevice.unregisterCallback(this::onDeviceAttributesChanged);
|
mCachedDevice.unregisterCallback(this::onDeviceAttributesChanged);
|
||||||
mBluetoothAdapter.unregisterMetadataListener(mCachedDevice.getDevice());
|
mBluetoothAdapter.unregisterMetadataListener(mCachedDevice.getDevice());
|
||||||
|
|
||||||
@@ -123,6 +130,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
|||||||
|
|
||||||
public void init(CachedBluetoothDevice cachedBluetoothDevice) {
|
public void init(CachedBluetoothDevice cachedBluetoothDevice) {
|
||||||
mCachedDevice = cachedBluetoothDevice;
|
mCachedDevice = cachedBluetoothDevice;
|
||||||
|
mBluetoothDevice = mCachedDevice.getDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.bluetooth;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -78,6 +79,7 @@ public class AdvancedBluetoothDetailsHeaderControllerTest{
|
|||||||
|
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mController = new AdvancedBluetoothDetailsHeaderController(mContext, "pref_Key");
|
mController = new AdvancedBluetoothDetailsHeaderController(mContext, "pref_Key");
|
||||||
|
when(mCachedDevice.getDevice()).thenReturn(mBluetoothDevice);
|
||||||
mController.init(mCachedDevice);
|
mController.init(mCachedDevice);
|
||||||
mLayoutPreference = new LayoutPreference(mContext,
|
mLayoutPreference = new LayoutPreference(mContext,
|
||||||
LayoutInflater.from(mContext).inflate(R.layout.advanced_bt_entity_header, null));
|
LayoutInflater.from(mContext).inflate(R.layout.advanced_bt_entity_header, null));
|
||||||
@@ -166,7 +168,10 @@ public class AdvancedBluetoothDetailsHeaderControllerTest{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onStart_registerCallback() {
|
public void onStart_isAvailable_registerCallback() {
|
||||||
|
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET))
|
||||||
|
.thenReturn("true");
|
||||||
|
|
||||||
mController.onStart();
|
mController.onStart();
|
||||||
|
|
||||||
verify(mBluetoothAdapter).registerMetadataListener(mBluetoothDevice,
|
verify(mBluetoothAdapter).registerMetadataListener(mBluetoothDevice,
|
||||||
@@ -174,12 +179,36 @@ public class AdvancedBluetoothDetailsHeaderControllerTest{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onStop_unregisterCallback() {
|
public void onStop_isAvailable_unregisterCallback() {
|
||||||
|
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET))
|
||||||
|
.thenReturn("true");
|
||||||
|
|
||||||
mController.onStop();
|
mController.onStop();
|
||||||
|
|
||||||
verify(mBluetoothAdapter).unregisterMetadataListener(mBluetoothDevice);
|
verify(mBluetoothAdapter).unregisterMetadataListener(mBluetoothDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onStart_notAvailable_registerCallback() {
|
||||||
|
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET))
|
||||||
|
.thenReturn("false");
|
||||||
|
|
||||||
|
mController.onStart();
|
||||||
|
|
||||||
|
verify(mBluetoothAdapter, never()).registerMetadataListener(mBluetoothDevice,
|
||||||
|
mController.mMetadataListener, mController.mHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onStop_notAvailable_unregisterCallback() {
|
||||||
|
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET))
|
||||||
|
.thenReturn("false");
|
||||||
|
|
||||||
|
mController.onStop();
|
||||||
|
|
||||||
|
verify(mBluetoothAdapter, never()).unregisterMetadataListener(mBluetoothDevice);
|
||||||
|
}
|
||||||
|
|
||||||
private void assertBatteryLevel(LinearLayout linearLayout, int batteryLevel) {
|
private void assertBatteryLevel(LinearLayout linearLayout, int batteryLevel) {
|
||||||
final TextView textView = linearLayout.findViewById(R.id.bt_battery_summary);
|
final TextView textView = linearLayout.findViewById(R.id.bt_battery_summary);
|
||||||
assertThat(textView.getText().toString()).isEqualTo(
|
assertThat(textView.getText().toString()).isEqualTo(
|
||||||
|
Reference in New Issue
Block a user