Merge "[Audiosharing] Avoid dialog when onPlaybackStarted after call ends" into main
This commit is contained in:
@@ -201,6 +201,19 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
|||||||
+ reason
|
+ reason
|
||||||
+ ", broadcastId = "
|
+ ", broadcastId = "
|
||||||
+ broadcastId);
|
+ broadcastId);
|
||||||
|
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.");
|
||||||
|
cleanUp();
|
||||||
|
return;
|
||||||
|
}
|
||||||
handleOnBroadcastReady();
|
handleOnBroadcastReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -554,8 +567,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
|||||||
mGroupedConnectedDevices.getOrDefault(
|
mGroupedConnectedDevices.getOrDefault(
|
||||||
mDeviceItemsForSharing.get(0).getGroupId(), ImmutableList.of()),
|
mDeviceItemsForSharing.get(0).getGroupId(), ImmutableList.of()),
|
||||||
mBtManager);
|
mBtManager);
|
||||||
mGroupedConnectedDevices.clear();
|
cleanUp();
|
||||||
mDeviceItemsForSharing.clear();
|
|
||||||
// TODO: Add metric for auto add by intent
|
// TODO: Add metric for auto add by intent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -565,8 +577,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
|||||||
StartIntentHandleStage.HANDLED.ordinal());
|
StartIntentHandleStage.HANDLED.ordinal());
|
||||||
if (mFragment == null) {
|
if (mFragment == null) {
|
||||||
Log.d(TAG, "handleOnBroadcastReady: dialog fail to show due to null fragment.");
|
Log.d(TAG, "handleOnBroadcastReady: dialog fail to show due to null fragment.");
|
||||||
mGroupedConnectedDevices.clear();
|
cleanUp();
|
||||||
mDeviceItemsForSharing.clear();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
showDialog(eventData);
|
showDialog(eventData);
|
||||||
@@ -581,14 +592,12 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
|||||||
mGroupedConnectedDevices.getOrDefault(
|
mGroupedConnectedDevices.getOrDefault(
|
||||||
item.getGroupId(), ImmutableList.of()),
|
item.getGroupId(), ImmutableList.of()),
|
||||||
mBtManager);
|
mBtManager);
|
||||||
mGroupedConnectedDevices.clear();
|
cleanUp();
|
||||||
mDeviceItemsForSharing.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCancelClick() {
|
public void onCancelClick() {
|
||||||
mGroupedConnectedDevices.clear();
|
cleanUp();
|
||||||
mDeviceItemsForSharing.clear();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AudioSharingUtils.postOnMainThread(
|
AudioSharingUtils.postOnMainThread(
|
||||||
@@ -657,6 +666,11 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void cleanUp() {
|
||||||
|
mGroupedConnectedDevices.clear();
|
||||||
|
mDeviceItemsForSharing.clear();
|
||||||
|
}
|
||||||
|
|
||||||
private enum StartIntentHandleStage {
|
private enum StartIntentHandleStage {
|
||||||
TO_HANDLE,
|
TO_HANDLE,
|
||||||
HANDLE_AUTO_ADD,
|
HANDLE_AUTO_ADD,
|
||||||
|
@@ -443,6 +443,7 @@ public class AudioSharingSwitchBarControllerTest {
|
|||||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||||
when(mBtnView.isEnabled()).thenReturn(true);
|
when(mBtnView.isEnabled()).thenReturn(true);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
||||||
|
when(mAssistant.getAllSources(any(BluetoothDevice.class))).thenReturn(ImmutableList.of());
|
||||||
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
||||||
doNothing().when(mBroadcast).startPrivateBroadcast();
|
doNothing().when(mBroadcast).startPrivateBroadcast();
|
||||||
mController =
|
mController =
|
||||||
@@ -468,12 +469,38 @@ public class AudioSharingSwitchBarControllerTest {
|
|||||||
assertThat(childFragments).isEmpty();
|
assertThat(childFragments).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPlaybackStarted_hasLocalSource_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));
|
||||||
|
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
||||||
|
when(state.getBroadcastId()).thenReturn(1);
|
||||||
|
when(mBroadcast.getLatestBroadcastId()).thenReturn(1);
|
||||||
|
when(mAssistant.getAllSources(mDevice2)).thenReturn(ImmutableList.of(state));
|
||||||
|
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
||||||
|
doNothing().when(mBroadcast).startPrivateBroadcast();
|
||||||
|
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
||||||
|
verify(mBroadcast).startPrivateBroadcast();
|
||||||
|
mController.mBroadcastCallback.onPlaybackStarted(0, 0);
|
||||||
|
shadowOf(Looper.getMainLooper()).idle();
|
||||||
|
|
||||||
|
verify(mAssistant, never()).addSource(any(), any(), anyBoolean());
|
||||||
|
verify(mFeatureFactory.metricsFeatureProvider, never())
|
||||||
|
.action(any(Context.class), eq(SettingsEnums.ACTION_AUTO_JOIN_AUDIO_SHARING));
|
||||||
|
|
||||||
|
List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
|
||||||
|
assertThat(childFragments).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onPlaybackStarted_showJoinAudioSharingDialog() {
|
public void onPlaybackStarted_showJoinAudioSharingDialog() {
|
||||||
FeatureFlagUtils.setEnabled(
|
FeatureFlagUtils.setEnabled(
|
||||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||||
when(mBtnView.isEnabled()).thenReturn(true);
|
when(mBtnView.isEnabled()).thenReturn(true);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
||||||
|
when(mAssistant.getAllSources(any(BluetoothDevice.class))).thenReturn(ImmutableList.of());
|
||||||
doNothing().when(mBroadcast).startPrivateBroadcast();
|
doNothing().when(mBroadcast).startPrivateBroadcast();
|
||||||
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
||||||
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
||||||
@@ -519,6 +546,7 @@ public class AudioSharingSwitchBarControllerTest {
|
|||||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||||
when(mBtnView.isEnabled()).thenReturn(true);
|
when(mBtnView.isEnabled()).thenReturn(true);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
||||||
|
when(mAssistant.getAllSources(any(BluetoothDevice.class))).thenReturn(ImmutableList.of());
|
||||||
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
||||||
doNothing().when(mBroadcast).startPrivateBroadcast();
|
doNothing().when(mBroadcast).startPrivateBroadcast();
|
||||||
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
||||||
@@ -545,6 +573,7 @@ public class AudioSharingSwitchBarControllerTest {
|
|||||||
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
|
||||||
when(mBtnView.isEnabled()).thenReturn(true);
|
when(mBtnView.isEnabled()).thenReturn(true);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(mDevice2, mDevice1));
|
||||||
|
when(mAssistant.getAllSources(any(BluetoothDevice.class))).thenReturn(ImmutableList.of());
|
||||||
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(mMetadata);
|
||||||
doNothing().when(mBroadcast).startPrivateBroadcast();
|
doNothing().when(mBroadcast).startPrivateBroadcast();
|
||||||
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
|
||||||
|
Reference in New Issue
Block a user