Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f3ed8db authored by Fan Zhang's avatar Fan Zhang Committed by Android (Google) Code Review
Browse files

Merge "Skip lifecycle if controller is not available"

parents dd295676 281cf17d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
    @VisibleForTesting
    final Map<String, Bitmap> mIconCache;
    private CachedBluetoothDevice mCachedDevice;
    private BluetoothDevice mBluetoothDevice;
    @VisibleForTesting
    BluetoothAdapter mBluetoothAdapter;
    @VisibleForTesting
@@ -102,6 +103,9 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont

    @Override
    public void onStart() {
        if (!isAvailable()) {
            return;
        }
        mCachedDevice.registerCallback(this::onDeviceAttributesChanged);
        mBluetoothAdapter.registerMetadataListener(mCachedDevice.getDevice(), mMetadataListener,
                mHandler);
@@ -109,6 +113,9 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont

    @Override
    public void onStop() {
        if (!isAvailable()) {
            return;
        }
        mCachedDevice.unregisterCallback(this::onDeviceAttributesChanged);
        mBluetoothAdapter.unregisterMetadataListener(mCachedDevice.getDevice());

@@ -123,6 +130,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont

    public void init(CachedBluetoothDevice cachedBluetoothDevice) {
        mCachedDevice = cachedBluetoothDevice;
        mBluetoothDevice = mCachedDevice.getDevice();
    }

    @VisibleForTesting
+31 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.bluetooth;

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.when;

@@ -78,6 +79,7 @@ public class AdvancedBluetoothDetailsHeaderControllerTest{

        mContext = RuntimeEnvironment.application;
        mController = new AdvancedBluetoothDetailsHeaderController(mContext, "pref_Key");
        when(mCachedDevice.getDevice()).thenReturn(mBluetoothDevice);
        mController.init(mCachedDevice);
        mLayoutPreference = new LayoutPreference(mContext,
                LayoutInflater.from(mContext).inflate(R.layout.advanced_bt_entity_header, null));
@@ -166,7 +168,10 @@ public class AdvancedBluetoothDetailsHeaderControllerTest{
    }

    @Test
    public void onStart_registerCallback() {
    public void onStart_isAvailable_registerCallback() {
        when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET))
                .thenReturn("true");

        mController.onStart();

        verify(mBluetoothAdapter).registerMetadataListener(mBluetoothDevice,
@@ -174,12 +179,36 @@ public class AdvancedBluetoothDetailsHeaderControllerTest{
    }

    @Test
    public void onStop_unregisterCallback() {
    public void onStop_isAvailable_unregisterCallback() {
        when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET))
                .thenReturn("true");

        mController.onStop();

        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) {
        final TextView textView = linearLayout.findViewById(R.id.bt_battery_summary);
        assertThat(textView.getText().toString()).isEqualTo(