Merge "[Audiosharing] Support sharing dialog when click media devices." into main
diff --git a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
index 8250f70..0ee3986 100644
--- a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
@@ -136,12 +136,8 @@
@Override
public boolean onPreferenceClick(Preference preference) {
mMetricsFeatureProvider.logClickedPreference(preference, mMetricsCategory);
- final CachedBluetoothDevice device =
- ((BluetoothDevicePreference) preference).getBluetoothDevice();
- FeatureFactory.getFeatureFactory()
- .getAudioSharingFeatureProvider()
- .handleMediaDeviceOnClick(mLocalManager);
- return device.setActive();
+ mDevicePreferenceCallback.onDeviceClick(preference);
+ return true;
}
@Override
diff --git a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
index 0535d15..56ef4b0 100644
--- a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
+++ b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
@@ -35,6 +35,7 @@
import com.android.settings.R;
import com.android.settings.accessibility.HearingAidUtils;
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
+import com.android.settings.bluetooth.BluetoothDevicePreference;
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
import com.android.settings.bluetooth.Utils;
import com.android.settings.core.BasePreferenceController;
@@ -150,6 +151,13 @@
}
}
+ @Override
+ public void onDeviceClick(Preference preference) {
+ final CachedBluetoothDevice cachedDevice =
+ ((BluetoothDevicePreference) preference).getBluetoothDevice();
+ cachedDevice.setActive();
+ }
+
public void init(DashboardFragment fragment) {
mFragmentManager = fragment.getParentFragmentManager();
mBluetoothDeviceUpdater =
diff --git a/src/com/android/settings/connecteddevice/DevicePreferenceCallback.java b/src/com/android/settings/connecteddevice/DevicePreferenceCallback.java
index 7ee2063..c91e2a0 100644
--- a/src/com/android/settings/connecteddevice/DevicePreferenceCallback.java
+++ b/src/com/android/settings/connecteddevice/DevicePreferenceCallback.java
@@ -18,19 +18,26 @@
import androidx.preference.Preference;
-/**
- * Callback to add or remove {@link Preference} in device group.
- */
+/** Callback to add or remove {@link Preference} in device group. */
public interface DevicePreferenceCallback {
/**
* Called when a device(i.e. bluetooth, usb) is added
+ *
* @param preference present the device
*/
void onDeviceAdded(Preference preference);
/**
* Called when a device(i.e. bluetooth, usb) is removed
+ *
* @param preference present the device
*/
void onDeviceRemoved(Preference preference);
+
+ /**
+ * Called when a device(i.e. bluetooth, usb) is click
+ *
+ * @param preference present the device
+ */
+ default void onDeviceClick(Preference preference) {}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java
index 9fe4d50..50812e9 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java
@@ -50,7 +50,4 @@
*/
boolean isAudioSharingFilterMatched(
@NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager);
-
- /** Handle preference onClick in "Media devices" section. */
- void handleMediaDeviceOnClick(LocalBluetoothManager localBtManager);
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java
index 259ed7a..96200db 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java
@@ -52,7 +52,4 @@
@NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) {
return false;
}
-
- @Override
- public void handleMediaDeviceOnClick(LocalBluetoothManager localBtManager) {}
}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
index 5a7e247..6aa2831 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
@@ -372,6 +372,6 @@
public void onClick_Preference_setActive() {
mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
- verify(mCachedBluetoothDevice).setActive();
+ verify(mDevicePreferenceCallback).onDeviceClick(mPreference);
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
index 357420a..8f07cca 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
@@ -32,9 +32,9 @@
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
import android.media.AudioManager;
-import android.platform.test.flag.junit.CheckFlagsRule;
-import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.util.Pair;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
@@ -46,6 +46,7 @@
import com.android.settings.R;
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
+import com.android.settings.bluetooth.BluetoothDevicePreference;
import com.android.settings.bluetooth.Utils;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.testutils.shadow.ShadowAudioManager;
@@ -64,7 +65,8 @@
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -79,11 +81,11 @@
ShadowAlertDialogCompat.class,
})
public class AvailableMediaDeviceGroupControllerTest {
- @Rule
- public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String TEST_DEVICE_ADDRESS = "00:A1:A1:A1:A1:A1";
private static final String PREFERENCE_KEY_1 = "pref_key_1";
+ private static final String TEST_DEVICE_NAME = "test";
@Mock private AvailableMediaBluetoothDeviceUpdater mAvailableMediaBluetoothDeviceUpdater;
@Mock private PreferenceScreen mPreferenceScreen;
@@ -96,6 +98,9 @@
@Mock private LocalBluetoothManager mLocalBluetoothManager;
@Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
@Mock private CachedBluetoothDevice mCachedBluetoothDevice;
+ @Mock private BluetoothDevice mDevice;
+ @Mock
+ private Drawable mDrawable;
private PreferenceGroup mPreferenceGroup;
private Context mContext;
@@ -107,8 +112,6 @@
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
-
mContext = spy(RuntimeEnvironment.application);
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
@@ -262,4 +265,19 @@
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog.isShowing()).isTrue();
}
+
+ @Test
+ public void onDeviceClick_setActive() {
+ when(mCachedBluetoothDevice.getDevice()).thenReturn(mDevice);
+ Pair<Drawable, String> pair = new Pair<>(mDrawable, TEST_DEVICE_NAME);
+ when(mCachedBluetoothDevice.getDrawableWithDescription()).thenReturn(pair);
+ BluetoothDevicePreference preference =
+ new BluetoothDevicePreference(
+ mContext,
+ mCachedBluetoothDevice,
+ true,
+ BluetoothDevicePreference.SortType.TYPE_NO_SORT);
+ mAvailableMediaDeviceGroupController.onDeviceClick(preference);
+ verify(mCachedBluetoothDevice).setActive();
+ }
}