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

Commit a65e3e67 authored by Jack He's avatar Jack He Committed by android-build-merger
Browse files

Merge "Bluetooth: reset mConnectionState when adapter is OFF" into oc-dr1-dev

am: 0c6f001c

Change-Id: I2a161d403cf0c8e34a16b1ac9328135c40f7e50a
parents dac62d24 0c6f001c
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.Log;

import com.android.settings.R;
import com.android.settings.widget.SummaryUpdater;
@@ -29,9 +29,7 @@ import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
import com.android.settingslib.bluetooth.LocalBluetoothManager;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
@@ -39,6 +37,7 @@ import java.util.Set;
 * bluetooth summary info.
 */
public final class BluetoothSummaryUpdater extends SummaryUpdater implements BluetoothCallback {
    private static final String TAG = "BluetoothSummaryUpdater";

    private final LocalBluetoothManager mBluetoothManager;
    private final LocalBluetoothAdapter mBluetoothAdapter;
@@ -58,6 +57,9 @@ public final class BluetoothSummaryUpdater extends SummaryUpdater implements Blu
    public void onBluetoothStateChanged(int bluetoothState) {
        mEnabled = bluetoothState == BluetoothAdapter.STATE_ON
            || bluetoothState == BluetoothAdapter.STATE_TURNING_ON;
        if (!mEnabled) {
            mConnectionState = BluetoothAdapter.STATE_DISCONNECTED;
        }
        notifyChangeIfNeeded();
    }

@@ -161,7 +163,6 @@ public final class BluetoothSummaryUpdater extends SummaryUpdater implements Blu
        if (devices == null || devices.isEmpty()) {
            return null;
        }

        for (BluetoothDevice device : devices) {
            if (device.isConnected()) {
                deviceName = device.getName();
@@ -171,7 +172,14 @@ public final class BluetoothSummaryUpdater extends SummaryUpdater implements Blu
                }
            }
        }

        if (deviceName == null) {
            Log.w(TAG, "getConnectedDeviceSummary, deviceName is null, numBondedDevices="
                    + devices.size());
            for (BluetoothDevice device : devices) {
                Log.w(TAG, "getConnectedDeviceSummary, device=" + device.getName() + "["
                        + device.getAddress() + "]" + ", isConnected=" + device.isConnected());
            }
        }
        return count > 1 ? mContext.getString(R.string.bluetooth_connected_multiple_devices_summary)
                : mContext.getString(R.string.bluetooth_connected_summary, deviceName);
    }
+33 −0
Original line number Diff line number Diff line
@@ -44,8 +44,11 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;

import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -132,6 +135,36 @@ public class BluetoothSummaryUpdaterTest {
                mContext.getString(R.string.disconnected));
    }

    @Test
    public void onBluetoothStateChanged_ConnectedDisabledEnabled_shouldSendDisconnectedSummary() {
        final boolean[] connected = {false};
        final List<CachedBluetoothDevice> devices = new ArrayList<>();
        devices.add(mock(CachedBluetoothDevice.class));
        doAnswer(invocation -> connected[0]).when(devices.get(0)).isConnected();
        when(mBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy())
                .thenReturn(devices);
        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_DISCONNECTED);
        prepareConnectedDevice(false);

        mSummaryUpdater.register(true);
        verify(mListener).onSummaryChanged(mContext.getString(R.string.disconnected));

        connected[0] = true;
        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_CONNECTED);
        mSummaryUpdater.onConnectionStateChanged(null /* device */,
                BluetoothAdapter.STATE_CONNECTED);
        verify(mListener).onSummaryChanged(
                mContext.getString(R.string.bluetooth_connected_summary, DEVICE_NAME));

        mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF);
        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disabled));

        connected[0] = false;
        mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_TURNING_ON);
        verify(mListener, times(2)).onSummaryChanged(mContext.getString(R.string.disconnected));
        verify(mListener, times(4)).onSummaryChanged(anyString());
    }

    @Test
    public void onConnectionStateChanged_connected_shouldSendConnectedMessage() {
        final List<CachedBluetoothDevice> devices = new ArrayList<>();