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

Commit 5b017f7b authored by Jack He's avatar Jack He
Browse files

Bluetooth: add metrics for pairing with devices without names

* Also caches context in onClick() method

Bug: 34685932
Test: make, unit test
Change-Id: I99beab2c85b8e48c4bc41f69146759d4b7c62428
parent 6361c9d8
Loading
Loading
Loading
Loading
+9 −4
Original line number Original line Diff line number Diff line
@@ -188,22 +188,27 @@ public final class BluetoothDevicePreference extends GearPreference implements
    }
    }


    void onClicked() {
    void onClicked() {
        Context context = getContext();
        int bondState = mCachedDevice.getBondState();
        int bondState = mCachedDevice.getBondState();


        final MetricsFeatureProvider metricsFeatureProvider =
        final MetricsFeatureProvider metricsFeatureProvider =
                FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider();
                FeatureFactory.getFactory(context).getMetricsFeatureProvider();


        if (mCachedDevice.isConnected()) {
        if (mCachedDevice.isConnected()) {
            metricsFeatureProvider.action(getContext(),
            metricsFeatureProvider.action(context,
                    MetricsEvent.ACTION_SETTINGS_BLUETOOTH_DISCONNECT);
                    MetricsEvent.ACTION_SETTINGS_BLUETOOTH_DISCONNECT);
            askDisconnect();
            askDisconnect();
        } else if (bondState == BluetoothDevice.BOND_BONDED) {
        } else if (bondState == BluetoothDevice.BOND_BONDED) {
            metricsFeatureProvider.action(getContext(),
            metricsFeatureProvider.action(context,
                    MetricsEvent.ACTION_SETTINGS_BLUETOOTH_CONNECT);
                    MetricsEvent.ACTION_SETTINGS_BLUETOOTH_CONNECT);
            mCachedDevice.connect(true);
            mCachedDevice.connect(true);
        } else if (bondState == BluetoothDevice.BOND_NONE) {
        } else if (bondState == BluetoothDevice.BOND_NONE) {
            metricsFeatureProvider.action(getContext(),
            metricsFeatureProvider.action(context,
                    MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR);
                    MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR);
            if (!mCachedDevice.hasHumanReadableName()) {
                metricsFeatureProvider.action(context,
                        MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR_DEVICES_WITHOUT_NAMES);
            }
            pair();
            pair();
        }
        }
    }
    }
+19 −0
Original line number Original line Diff line number Diff line
@@ -42,6 +42,7 @@ import static com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;
@@ -98,11 +99,29 @@ public class BluetoothDevicePreferenceTest {
        when(mCachedBluetoothDevice.isConnected()).thenReturn(false);
        when(mCachedBluetoothDevice.isConnected()).thenReturn(false);
        when(mCachedBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
        when(mCachedBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
        when(mCachedBluetoothDevice.startPairing()).thenReturn(true);
        when(mCachedBluetoothDevice.startPairing()).thenReturn(true);
        when(mCachedBluetoothDevice.hasHumanReadableName()).thenReturn(true);


        mPreference.onClicked();
        mPreference.onClicked();


        verify(mMetricsFeatureProvider).action(
        verify(mMetricsFeatureProvider).action(
                mContext, MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR);
                mContext, MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR);
        verify(mMetricsFeatureProvider, never()).action(mContext,
                MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR_DEVICES_WITHOUT_NAMES);
    }

    @Test
    public void onClicked_deviceNotBonded_shouldLogBluetoothPairEventAndPairWithoutNameEvent() {
        when(mCachedBluetoothDevice.isConnected()).thenReturn(false);
        when(mCachedBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
        when(mCachedBluetoothDevice.startPairing()).thenReturn(true);
        when(mCachedBluetoothDevice.hasHumanReadableName()).thenReturn(false);

        mPreference.onClicked();

        verify(mMetricsFeatureProvider).action(
                mContext, MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR);
        verify(mMetricsFeatureProvider).action(mContext,
                MetricsEvent.ACTION_SETTINGS_BLUETOOTH_PAIR_DEVICES_WITHOUT_NAMES);
    }
    }


    @Test
    @Test