Merge "[Audiosharing] Support sharing dialog when click media devices." into main
This commit is contained in:
@@ -136,12 +136,8 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
|||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
mMetricsFeatureProvider.logClickedPreference(preference, mMetricsCategory);
|
mMetricsFeatureProvider.logClickedPreference(preference, mMetricsCategory);
|
||||||
final CachedBluetoothDevice device =
|
mDevicePreferenceCallback.onDeviceClick(preference);
|
||||||
((BluetoothDevicePreference) preference).getBluetoothDevice();
|
return true;
|
||||||
FeatureFactory.getFeatureFactory()
|
|
||||||
.getAudioSharingFeatureProvider()
|
|
||||||
.handleMediaDeviceOnClick(mLocalManager);
|
|
||||||
return device.setActive();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -35,6 +35,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.accessibility.HearingAidUtils;
|
import com.android.settings.accessibility.HearingAidUtils;
|
||||||
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
|
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
|
||||||
|
import com.android.settings.bluetooth.BluetoothDevicePreference;
|
||||||
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
|
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
|
||||||
import com.android.settings.bluetooth.Utils;
|
import com.android.settings.bluetooth.Utils;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
@@ -150,6 +151,13 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDeviceClick(Preference preference) {
|
||||||
|
final CachedBluetoothDevice cachedDevice =
|
||||||
|
((BluetoothDevicePreference) preference).getBluetoothDevice();
|
||||||
|
cachedDevice.setActive();
|
||||||
|
}
|
||||||
|
|
||||||
public void init(DashboardFragment fragment) {
|
public void init(DashboardFragment fragment) {
|
||||||
mFragmentManager = fragment.getParentFragmentManager();
|
mFragmentManager = fragment.getParentFragmentManager();
|
||||||
mBluetoothDeviceUpdater =
|
mBluetoothDeviceUpdater =
|
||||||
|
@@ -18,19 +18,26 @@ package com.android.settings.connecteddevice;
|
|||||||
|
|
||||||
import androidx.preference.Preference;
|
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 {
|
public interface DevicePreferenceCallback {
|
||||||
/**
|
/**
|
||||||
* Called when a device(i.e. bluetooth, usb) is added
|
* Called when a device(i.e. bluetooth, usb) is added
|
||||||
|
*
|
||||||
* @param preference present the device
|
* @param preference present the device
|
||||||
*/
|
*/
|
||||||
void onDeviceAdded(Preference preference);
|
void onDeviceAdded(Preference preference);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a device(i.e. bluetooth, usb) is removed
|
* Called when a device(i.e. bluetooth, usb) is removed
|
||||||
|
*
|
||||||
* @param preference present the device
|
* @param preference present the device
|
||||||
*/
|
*/
|
||||||
void onDeviceRemoved(Preference preference);
|
void onDeviceRemoved(Preference preference);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a device(i.e. bluetooth, usb) is click
|
||||||
|
*
|
||||||
|
* @param preference present the device
|
||||||
|
*/
|
||||||
|
default void onDeviceClick(Preference preference) {}
|
||||||
}
|
}
|
||||||
|
@@ -50,7 +50,4 @@ public interface AudioSharingFeatureProvider {
|
|||||||
*/
|
*/
|
||||||
boolean isAudioSharingFilterMatched(
|
boolean isAudioSharingFilterMatched(
|
||||||
@NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager);
|
@NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager);
|
||||||
|
|
||||||
/** Handle preference onClick in "Media devices" section. */
|
|
||||||
void handleMediaDeviceOnClick(LocalBluetoothManager localBtManager);
|
|
||||||
}
|
}
|
||||||
|
@@ -52,7 +52,4 @@ public class AudioSharingFeatureProviderImpl implements AudioSharingFeatureProvi
|
|||||||
@NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) {
|
@NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleMediaDeviceOnClick(LocalBluetoothManager localBtManager) {}
|
|
||||||
}
|
}
|
||||||
|
@@ -372,6 +372,6 @@ public class AvailableMediaBluetoothDeviceUpdaterTest {
|
|||||||
public void onClick_Preference_setActive() {
|
public void onClick_Preference_setActive() {
|
||||||
mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
|
mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
|
||||||
|
|
||||||
verify(mCachedBluetoothDevice).setActive();
|
verify(mDevicePreferenceCallback).onDeviceClick(mPreference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,9 +32,9 @@ import android.bluetooth.BluetoothDevice;
|
|||||||
import android.bluetooth.BluetoothProfile;
|
import android.bluetooth.BluetoothProfile;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.platform.test.flag.junit.CheckFlagsRule;
|
import android.util.Pair;
|
||||||
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
@@ -46,6 +46,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
|
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
|
||||||
|
import com.android.settings.bluetooth.BluetoothDevicePreference;
|
||||||
import com.android.settings.bluetooth.Utils;
|
import com.android.settings.bluetooth.Utils;
|
||||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||||
import com.android.settings.testutils.shadow.ShadowAudioManager;
|
import com.android.settings.testutils.shadow.ShadowAudioManager;
|
||||||
@@ -64,7 +65,8 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
import org.mockito.Mock;
|
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.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
@@ -79,11 +81,11 @@ import org.robolectric.annotation.Config;
|
|||||||
ShadowAlertDialogCompat.class,
|
ShadowAlertDialogCompat.class,
|
||||||
})
|
})
|
||||||
public class AvailableMediaDeviceGroupControllerTest {
|
public class AvailableMediaDeviceGroupControllerTest {
|
||||||
@Rule
|
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||||
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
|
|
||||||
|
|
||||||
private static final String TEST_DEVICE_ADDRESS = "00:A1:A1:A1:A1:A1";
|
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 PREFERENCE_KEY_1 = "pref_key_1";
|
||||||
|
private static final String TEST_DEVICE_NAME = "test";
|
||||||
|
|
||||||
@Mock private AvailableMediaBluetoothDeviceUpdater mAvailableMediaBluetoothDeviceUpdater;
|
@Mock private AvailableMediaBluetoothDeviceUpdater mAvailableMediaBluetoothDeviceUpdater;
|
||||||
@Mock private PreferenceScreen mPreferenceScreen;
|
@Mock private PreferenceScreen mPreferenceScreen;
|
||||||
@@ -96,6 +98,9 @@ public class AvailableMediaDeviceGroupControllerTest {
|
|||||||
@Mock private LocalBluetoothManager mLocalBluetoothManager;
|
@Mock private LocalBluetoothManager mLocalBluetoothManager;
|
||||||
@Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
|
@Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
|
||||||
@Mock private CachedBluetoothDevice mCachedBluetoothDevice;
|
@Mock private CachedBluetoothDevice mCachedBluetoothDevice;
|
||||||
|
@Mock private BluetoothDevice mDevice;
|
||||||
|
@Mock
|
||||||
|
private Drawable mDrawable;
|
||||||
|
|
||||||
private PreferenceGroup mPreferenceGroup;
|
private PreferenceGroup mPreferenceGroup;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@@ -107,8 +112,6 @@ public class AvailableMediaDeviceGroupControllerTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
mLifecycleOwner = () -> mLifecycle;
|
mLifecycleOwner = () -> mLifecycle;
|
||||||
mLifecycle = new Lifecycle(mLifecycleOwner);
|
mLifecycle = new Lifecycle(mLifecycleOwner);
|
||||||
@@ -262,4 +265,19 @@ public class AvailableMediaDeviceGroupControllerTest {
|
|||||||
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
assertThat(dialog.isShowing()).isTrue();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user