Loading src/com/android/settings/accessibility/AccessibilityHearingAidsFragment.java +17 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } }; } tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java +45 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 = Loading @@ -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(); } } Loading
src/com/android/settings/accessibility/AccessibilityHearingAidsFragment.java +17 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } }; }
tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java +45 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 = Loading @@ -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(); } }