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

Commit 2eba5be9 authored by Jason Hsu's avatar Jason Hsu Committed by Android (Google) Code Review
Browse files

Merge "Fix corss-link hearing device settings" into main

parents 32587dbd 91768260
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -38,7 +38,8 @@ import com.google.common.annotations.VisibleForTesting;
public class BluetoothDetailsHearingDeviceControlsController extends BluetoothDetailsController
        implements Preference.OnPreferenceClickListener {

    private static final String KEY_DEVICE_CONTROLS_GENERAL_GROUP = "device_controls_general";
    @VisibleForTesting
    static final String KEY_DEVICE_CONTROLS_GENERAL_GROUP = "device_controls_general";
    @VisibleForTesting
    static final String KEY_HEARING_DEVICE_CONTROLS = "hearing_device_controls";

+17 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.hardware.input.InputManager;
import android.net.Uri;
@@ -53,6 +54,7 @@ import com.android.settings.slices.SlicePreferenceController;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;

import java.util.ArrayList;
@@ -324,8 +326,11 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
                    lifecycle));
            controllers.add(new BluetoothDetailsPairOtherController(context, this, mCachedDevice,
                    lifecycle));
            // Don't need to show hearing device again when launched from the same page.
            if (!isLaunchFromHearingDevicePage()) {
                controllers.add(new BluetoothDetailsHearingDeviceControlsController(context, this,
                        mCachedDevice, lifecycle));
            }
            controllers.add(new BluetoothDetailsDataSyncController(context, this,
                    mCachedDevice, lifecycle));
            controllers.add(
@@ -348,6 +353,16 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
        return width;
    }

    private boolean isLaunchFromHearingDevicePage() {
        final Intent intent = getIntent();
        if (intent == null) {
            return false;
        }

        return intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
                SettingsEnums.PAGE_UNKNOWN) == SettingsEnums.ACCESSIBILITY_HEARING_AID_SETTINGS;
    }

    @VisibleForTesting
    void setTitleForInputDevice() {
        if (StylusDevicesController.isDeviceStylus(mInputDevice, mCachedDevice)) {
+40 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.settings.bluetooth;

import static android.bluetooth.BluetoothDevice.BOND_NONE;

import static com.android.settings.bluetooth.BluetoothDetailsHearingDeviceControlsController.KEY_DEVICE_CONTROLS_GENERAL_GROUP;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
@@ -29,8 +31,10 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.settings.SettingsEnums;
import android.companion.CompanionDeviceManager;
import android.content.Context;
import android.content.Intent;
import android.hardware.input.InputManager;
import android.os.Bundle;
import android.os.UserManager;
@@ -49,6 +53,8 @@ import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import com.google.common.collect.ImmutableList;

@@ -65,6 +71,8 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.fakes.RoboMenu;

import java.util.List;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
        com.android.settings.testutils.shadow.ShadowUserManager.class,
@@ -216,6 +224,38 @@ public class BluetoothDeviceDetailsFragmentTest {
        verify(mFragment).finish();
    }

    @Test
    public void createPreferenceControllers_launchFromHAPage_deviceControllerNotExist() {
        BluetoothDeviceDetailsFragment fragment = setupFragment();
        Intent intent = fragment.getActivity().getIntent();
        intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
                SettingsEnums.ACCESSIBILITY_HEARING_AID_SETTINGS);
        fragment.onAttach(mContext);

        List<AbstractPreferenceController> controllerList = fragment.createPreferenceControllers(
                mContext);

        assertThat(controllerList.stream()
                .anyMatch(controller -> controller.getPreferenceKey().equals(
                        KEY_DEVICE_CONTROLS_GENERAL_GROUP))).isFalse();
    }

    @Test
    public void createPreferenceControllers_notLaunchFromHAPage_deviceControllerExist() {
        BluetoothDeviceDetailsFragment fragment = setupFragment();
        Intent intent = fragment.getActivity().getIntent();
        intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
                SettingsEnums.PAGE_UNKNOWN);
        fragment.onAttach(mContext);

        List<AbstractPreferenceController> controllerList = fragment.createPreferenceControllers(
                mContext);

        assertThat(controllerList.stream()
                .anyMatch(controller -> controller.getPreferenceKey().equals(
                        KEY_DEVICE_CONTROLS_GENERAL_GROUP))).isTrue();
    }

    private InputDevice createInputDeviceWithMatchingBluetoothAddress() {
        doReturn(new int[]{0}).when(mInputManager).getInputDeviceIds();
        InputDevice device = mock(InputDevice.class);