Loading src/com/android/settings/bluetooth/BluetoothDetailsHearingDeviceControlsController.java +2 −1 Original line number Diff line number Diff line Loading @@ -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"; Loading src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +17 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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( Loading @@ -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)) { Loading tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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, Loading Loading @@ -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); Loading Loading
src/com/android/settings/bluetooth/BluetoothDetailsHearingDeviceControlsController.java +2 −1 Original line number Diff line number Diff line Loading @@ -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"; Loading
src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +17 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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( Loading @@ -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)) { Loading
tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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, Loading Loading @@ -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); Loading