Merge "[hearing devices page] Launch 'Hearing decice controls' to Accessibility hearing device page."
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.settings.bluetooth;
|
||||
import static com.android.settings.bluetooth.BluetoothDeviceDetailsFragment.FEATURE_HEARING_DEVICE_CONTROLS_ORDER;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
@@ -27,16 +28,22 @@ import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.accessibility.AccessibilityHearingAidsFragment;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
/**
|
||||
* The controller of the hearing device controls in the bluetooth detail settings.
|
||||
*/
|
||||
public class BluetoothDetailsHearingDeviceControlsController extends BluetoothDetailsController {
|
||||
public class BluetoothDetailsHearingDeviceControlsController extends BluetoothDetailsController
|
||||
implements Preference.OnPreferenceClickListener {
|
||||
|
||||
private static final String KEY_FEATURE_CONTROLS_GROUP = "feature_controls_group";
|
||||
private static final String KEY_HEARING_DEVICE_CONTROLS = "hearing_device_controls";
|
||||
@VisibleForTesting
|
||||
static final String KEY_HEARING_DEVICE_CONTROLS = "hearing_device_controls";
|
||||
|
||||
public BluetoothDetailsHearingDeviceControlsController(Context context,
|
||||
PreferenceFragmentCompat fragment, CachedBluetoothDevice device, Lifecycle lifecycle) {
|
||||
@@ -70,12 +77,30 @@ public class BluetoothDetailsHearingDeviceControlsController extends BluetoothDe
|
||||
return KEY_FEATURE_CONTROLS_GROUP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
if (TextUtils.equals(preference.getKey(), KEY_HEARING_DEVICE_CONTROLS)) {
|
||||
launchAccessibilityHearingDeviceSettings();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private Preference createHearingDeviceControlsPreference(Context context) {
|
||||
final Preference preference = new Preference(context);
|
||||
preference.setKey(KEY_HEARING_DEVICE_CONTROLS);
|
||||
preference.setTitle(context.getString(R.string.bluetooth_device_controls_title));
|
||||
preference.setSummary(context.getString(R.string.bluetooth_device_controls_summary));
|
||||
preference.setOnPreferenceClickListener(this);
|
||||
|
||||
return preference;
|
||||
}
|
||||
|
||||
private void launchAccessibilityHearingDeviceSettings() {
|
||||
new SubSettingLauncher(mContext)
|
||||
.setDestination(AccessibilityHearingAidsFragment.class.getName())
|
||||
.setSourceMetricsCategory(
|
||||
((BluetoothDeviceDetailsFragment) mFragment).getMetricsCategory())
|
||||
.launch();
|
||||
}
|
||||
}
|
||||
|
@@ -18,13 +18,24 @@ package com.android.settings.bluetooth;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.accessibility.AccessibilityHearingAidsFragment;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
@@ -36,14 +47,18 @@ public class BluetoothDetailsHearingDeviceControlsControllerTest extends
|
||||
@Rule
|
||||
public final MockitoRule mockito = MockitoJUnit.rule();
|
||||
|
||||
@Captor
|
||||
private ArgumentCaptor<Intent> mIntentArgumentCaptor;
|
||||
private BluetoothDetailsHearingDeviceControlsController mController;
|
||||
|
||||
@Override
|
||||
public void setUp() {
|
||||
super.setUp();
|
||||
|
||||
mController = new BluetoothDetailsHearingDeviceControlsController(mContext, mFragment,
|
||||
FakeFeatureFactory.setupForTest();
|
||||
mController = new BluetoothDetailsHearingDeviceControlsController(mActivity, mFragment,
|
||||
mCachedDevice, mLifecycle);
|
||||
when(mCachedDevice.isHearingAidDevice()).thenReturn(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -63,4 +78,23 @@ public class BluetoothDetailsHearingDeviceControlsControllerTest extends
|
||||
|
||||
assertThat(mController.isAvailable()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPreferenceClick_hearingDeviceControlsKey_LaunchExpectedFragment() {
|
||||
final Preference hearingControlsKeyPreference = new Preference(mContext);
|
||||
hearingControlsKeyPreference.setKey(
|
||||
BluetoothDetailsHearingDeviceControlsController.KEY_HEARING_DEVICE_CONTROLS);
|
||||
|
||||
mController.onPreferenceClick(hearingControlsKeyPreference);
|
||||
|
||||
assertStartActivityWithExpectedFragment(mActivity,
|
||||
AccessibilityHearingAidsFragment.class.getName());
|
||||
}
|
||||
|
||||
private void assertStartActivityWithExpectedFragment(Context mockContext, String fragmentName) {
|
||||
verify(mockContext).startActivity(mIntentArgumentCaptor.capture());
|
||||
assertThat(mIntentArgumentCaptor.getValue()
|
||||
.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
|
||||
.isEqualTo(fragmentName);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user