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

Commit d83b5d10 authored by Candice Lo's avatar Candice Lo Committed by Android (Google) Code Review
Browse files

Merge "Enable HearingAid page search if the device supports hearing aid" into main

parents 34a378ec 48d98451
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceCategory;

import com.android.internal.accessibility.AccessibilityShortcutController;
@@ -118,6 +119,21 @@ public class AccessibilityHearingAidsFragment extends AccessibilityShortcutPrefe
        return getText(R.string.accessibility_hearing_device_shortcut_title);
    }

    @VisibleForTesting
    static boolean isPageSearchEnabled(Context context) {
        final HearingAidHelper mHelper = new HearingAidHelper(context);
        return mHelper.isHearingAidSupported();
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.accessibility_hearing_aids);
            new BaseSearchIndexProvider(R.xml.accessibility_hearing_aids) {
                @Override
                protected boolean isPageSearchEnabled(Context context) {
                    if (Flags.fixA11ySettingsSearch()) {
                        return AccessibilityHearingAidsFragment.isPageSearchEnabled(context);
                    } else {
                        return super.isPageSearchEnabled(context);
                    }
                }
            };
}
+45 −0
Original line number Diff line number Diff line
@@ -22,33 +22,52 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.telephony.TelephonyManager;

import androidx.test.core.app.ApplicationProvider;

import com.android.settings.R;
import com.android.settings.bluetooth.Utils;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settingslib.bluetooth.LocalBluetoothManager;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;

import java.util.List;

/** Tests for {@link AccessibilityHearingAidsFragment}. */
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothUtils.class})
public class AccessibilityHearingAidsFragmentTest {

    @Rule
    public MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
    @Spy
    private final Context mContext = ApplicationProvider.getApplicationContext();

    @Mock
    private LocalBluetoothManager mLocalBluetoothManager;
    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
    private BluetoothAdapter mBluetoothAdapter;
    private TelephonyManager mTelephonyManager;

    @Before
@@ -56,10 +75,18 @@ public class AccessibilityHearingAidsFragmentTest {
        mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class));
        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
        doReturn(true).when(mTelephonyManager).isHearingAidCompatibilitySupported();

        ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
        mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        mShadowBluetoothAdapter = Shadow.extract(mBluetoothAdapter);
    }

    @Test
    public void getNonIndexableKeys_existInXmlLayout() {
        mShadowBluetoothAdapter.clearSupportedProfiles();
        mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID);

        final List<String> niks = AccessibilityHearingAidsFragment.SEARCH_INDEX_DATA_PROVIDER
                .getNonIndexableKeys(mContext);
        final List<String> keys =
@@ -67,4 +94,22 @@ public class AccessibilityHearingAidsFragmentTest {

        assertThat(keys).containsAtLeastElementsIn(niks);
    }

    @Test
    @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
    public void deviceSupportsHearingAid_isPageSearchEnabled_returnTrue() {
        mShadowBluetoothAdapter.clearSupportedProfiles();
        mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID);

        assertThat(AccessibilityHearingAidsFragment.isPageSearchEnabled(mContext)).isTrue();
    }

    @Test
    @EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
    public void deviceDoesNotSupportHearingAid_isPageSearchEnabled_returnFalse() {
        mShadowBluetoothAdapter.clearSupportedProfiles();
        mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEADSET);

        assertThat(AccessibilityHearingAidsFragment.isPageSearchEnabled(mContext)).isFalse();
    }
}