Merge "[Audiosharing] Avoid popup dialog when broadcast start in SysUI" into main
This commit is contained in:
@@ -128,6 +128,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
||||
// join the audio sharing, we will wait for the process complete for this list of sinks and then
|
||||
// popup audio sharing dialog with options to pair new device.
|
||||
private CopyOnWriteArrayList<BluetoothDevice> mSinksToWaitFor = new CopyOnWriteArrayList<>();
|
||||
private AtomicBoolean mStartingSharing = new AtomicBoolean(false);
|
||||
private AtomicBoolean mStoppingSharing = new AtomicBoolean(false);
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -160,6 +161,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
||||
@Override
|
||||
public void onBroadcastStartFailed(int reason) {
|
||||
Log.d(TAG, "onBroadcastStartFailed(), reason = " + reason);
|
||||
mStartingSharing.compareAndSet(true, false);
|
||||
updateSwitch();
|
||||
showErrorDialog();
|
||||
mMetricsFeatureProvider.action(
|
||||
@@ -177,16 +179,8 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
||||
+ broadcastId
|
||||
+ ", metadata = "
|
||||
+ metadata.getBroadcastName());
|
||||
if (mAssistant == null
|
||||
|| mAssistant.getAllConnectedDevices().stream()
|
||||
.anyMatch(
|
||||
device -> BluetoothUtils
|
||||
.hasActiveLocalBroadcastSourceForBtDevice(
|
||||
device, mBtManager))) {
|
||||
Log.d(
|
||||
TAG,
|
||||
"Skip handleOnBroadcastReady: null assistant or "
|
||||
+ "sink has active local source.");
|
||||
if (!mStartingSharing.compareAndSet(true, false)) {
|
||||
Log.d(TAG, "Skip handleOnBroadcastReady, not in starting process");
|
||||
return;
|
||||
}
|
||||
handleOnBroadcastReady();
|
||||
@@ -213,6 +207,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
||||
@Override
|
||||
public void onBroadcastStopFailed(int reason) {
|
||||
Log.d(TAG, "onBroadcastStopFailed(), reason = " + reason);
|
||||
mStoppingSharing.compareAndSet(true, false);
|
||||
updateSwitch();
|
||||
mMetricsFeatureProvider.action(
|
||||
mContext,
|
||||
@@ -565,6 +560,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
||||
mDeviceItemsForSharing.remove(0);
|
||||
}
|
||||
if (mBroadcast != null) {
|
||||
mStartingSharing.set(true);
|
||||
mBroadcast.startPrivateBroadcast();
|
||||
mSinksInAdding.clear();
|
||||
AudioSharingUtils.postOnMainThread(mContext,
|
||||
@@ -583,7 +579,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
||||
int broadcastId = mBroadcast.getLatestBroadcastId();
|
||||
if (broadcastId != -1) {
|
||||
mBroadcast.stopBroadcast(broadcastId);
|
||||
mStoppingSharing.compareAndSet(false, true);
|
||||
mStoppingSharing.set(true);
|
||||
mSinksInAdding.clear();
|
||||
mSinksToWaitFor.clear();
|
||||
}
|
||||
|
@@ -515,23 +515,14 @@ public class AudioSharingSwitchBarControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBroadcastMetadataChanged_hasLocalSource_noDialog() {
|
||||
public void onBroadcastMetadataChanged_notTriggeredHere_noDialog() {
|
||||
FeatureFlagUtils.setEnabled(
|
||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||
when(mBtnView.isEnabled()).thenReturn(true);
|
||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
||||
when(mState.getBroadcastId()).thenReturn(1);
|
||||
when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
|
||||
when(mAssistant.getAllSources(mDevice2)).thenReturn(ImmutableList.of(mState));
|
||||
when(mAssistant.getAllSources(any(BluetoothDevice.class))).thenReturn(ImmutableList.of());
|
||||
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
||||
doNothing().when(mBroadcast).startPrivateBroadcast();
|
||||
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
||||
shadowOf(Looper.getMainLooper()).idle();
|
||||
|
||||
verify(mBroadcast).startPrivateBroadcast();
|
||||
List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
|
||||
assertThat(childFragments).comparingElementsUsing(CLAZZNAME_EQUALS).containsExactly(
|
||||
AudioSharingProgressDialogFragment.class.getName());
|
||||
|
||||
mController.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
|
||||
shadowOf(Looper.getMainLooper()).idle();
|
||||
@@ -540,7 +531,7 @@ public class AudioSharingSwitchBarControllerTest {
|
||||
verify(mFeatureFactory.metricsFeatureProvider, never())
|
||||
.action(any(Context.class), eq(SettingsEnums.ACTION_AUTO_JOIN_AUDIO_SHARING));
|
||||
|
||||
childFragments = mParentFragment.getChildFragmentManager().getFragments();
|
||||
List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
|
||||
// No audio sharing dialog.
|
||||
assertThat(childFragments).comparingElementsUsing(CLAZZNAME_EQUALS).doesNotContain(
|
||||
AudioSharingDialogFragment.class.getName());
|
||||
@@ -613,7 +604,7 @@ public class AudioSharingSwitchBarControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBroadcastMetadataChanged_oneActiveOnConnected_showJoinAudioSharingDialog() {
|
||||
public void onBroadcastMetadataChanged_oneActiveOneConnected_showJoinAudioSharingDialog() {
|
||||
FeatureFlagUtils.setEnabled(
|
||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||
when(mBtnView.isEnabled()).thenReturn(true);
|
||||
@@ -681,7 +672,7 @@ public class AudioSharingSwitchBarControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBroadcastMetadataChanged_oneActiveOnConnected_clickShareBtnOnDialog_addSource() {
|
||||
public void onBroadcastMetadataChanged_oneActiveOneConnected_clickShareBtnOnDialog_addSource() {
|
||||
FeatureFlagUtils.setEnabled(
|
||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||
when(mBtnView.isEnabled()).thenReturn(true);
|
||||
@@ -722,7 +713,7 @@ public class AudioSharingSwitchBarControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBroadcastMetadataChanged_oneActiveOnConnected_clickCancelBtnOnDialog_doNothing() {
|
||||
public void onBroadcastMetadataChanged_oneActiveOneConnected_clickCancelBtnOnDlg_doNothing() {
|
||||
FeatureFlagUtils.setEnabled(
|
||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||
when(mBtnView.isEnabled()).thenReturn(true);
|
||||
|
Reference in New Issue
Block a user