Merge "[Audiosharing] Fix IllegalStateException at getChildFragmentManager" into main
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.settings.connecteddevice.audiosharing;
|
|||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -66,7 +67,13 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm
|
|||||||
@NonNull List<AudioSharingDeviceItem> deviceItems,
|
@NonNull List<AudioSharingDeviceItem> deviceItems,
|
||||||
@NonNull DialogEventListener listener) {
|
@NonNull DialogEventListener listener) {
|
||||||
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager;
|
||||||
|
try {
|
||||||
|
manager = host.getChildFragmentManager();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to show dialog: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
if (manager.findFragmentByTag(TAG) == null) {
|
if (manager.findFragmentByTag(TAG) == null) {
|
||||||
final Bundle bundle = new Bundle();
|
final Bundle bundle = new Bundle();
|
||||||
@@ -79,10 +86,18 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@NonNull
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
Bundle arguments = requireArguments();
|
Bundle arguments = requireArguments();
|
||||||
List<AudioSharingDeviceItem> deviceItems =
|
List<AudioSharingDeviceItem> deviceItems =
|
||||||
arguments.getParcelable(BUNDLE_KEY_DEVICE_ITEMS, List.class);
|
arguments.getParcelable(BUNDLE_KEY_DEVICE_ITEMS, List.class);
|
||||||
|
AlertDialog.Builder builder =
|
||||||
|
new AlertDialog.Builder(getActivity())
|
||||||
|
.setTitle(R.string.audio_sharing_call_audio_title);
|
||||||
|
if (deviceItems == null) {
|
||||||
|
Log.d(TAG, "Create dialog error: null deviceItems");
|
||||||
|
return builder.create();
|
||||||
|
}
|
||||||
int checkedItem = -1;
|
int checkedItem = -1;
|
||||||
for (AudioSharingDeviceItem item : deviceItems) {
|
for (AudioSharingDeviceItem item : deviceItems) {
|
||||||
int fallbackActiveGroupId = AudioSharingUtils.getFallbackActiveGroupId(getContext());
|
int fallbackActiveGroupId = AudioSharingUtils.getFallbackActiveGroupId(getContext());
|
||||||
@@ -92,10 +107,7 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm
|
|||||||
}
|
}
|
||||||
String[] choices =
|
String[] choices =
|
||||||
deviceItems.stream().map(AudioSharingDeviceItem::getName).toArray(String[]::new);
|
deviceItems.stream().map(AudioSharingDeviceItem::getName).toArray(String[]::new);
|
||||||
AlertDialog.Builder builder =
|
builder.setSingleChoiceItems(
|
||||||
new AlertDialog.Builder(getActivity())
|
|
||||||
.setTitle(R.string.audio_sharing_call_audio_title)
|
|
||||||
.setSingleChoiceItems(
|
|
||||||
choices,
|
choices,
|
||||||
checkedItem,
|
checkedItem,
|
||||||
(dialog, which) -> {
|
(dialog, which) -> {
|
||||||
|
@@ -21,6 +21,7 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
@@ -44,7 +45,13 @@ public class AudioSharingConfirmDialogFragment extends InstrumentedDialogFragmen
|
|||||||
*/
|
*/
|
||||||
public static void show(Fragment host) {
|
public static void show(Fragment host) {
|
||||||
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager;
|
||||||
|
try {
|
||||||
|
manager = host.getChildFragmentManager();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to show dialog: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
||||||
if (dialog != null) {
|
if (dialog != null) {
|
||||||
Log.d(TAG, "Dialog is showing, return.");
|
Log.d(TAG, "Dialog is showing, return.");
|
||||||
@@ -56,6 +63,7 @@ public class AudioSharingConfirmDialogFragment extends InstrumentedDialogFragmen
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@NonNull
|
||||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
AlertDialog dialog =
|
AlertDialog dialog =
|
||||||
AudioSharingDialogFactory.newBuilder(getActivity())
|
AudioSharingDialogFactory.newBuilder(getActivity())
|
||||||
|
@@ -77,7 +77,13 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
|
|||||||
@NonNull DialogEventListener listener,
|
@NonNull DialogEventListener listener,
|
||||||
@NonNull Pair<Integer, Object>[] eventData) {
|
@NonNull Pair<Integer, Object>[] eventData) {
|
||||||
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager;
|
||||||
|
try {
|
||||||
|
manager = host.getChildFragmentManager();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to show dialog: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
sEventData = eventData;
|
sEventData = eventData;
|
||||||
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
||||||
|
@@ -414,7 +414,13 @@ public class AudioSharingDialogHandler {
|
|||||||
|
|
||||||
private void closeOpeningDialogsOtherThan(String tag) {
|
private void closeOpeningDialogsOtherThan(String tag) {
|
||||||
if (mHostFragment == null) return;
|
if (mHostFragment == null) return;
|
||||||
List<Fragment> fragments = mHostFragment.getChildFragmentManager().getFragments();
|
List<Fragment> fragments;
|
||||||
|
try {
|
||||||
|
fragments = mHostFragment.getChildFragmentManager().getFragments();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to closeOpeningDialogsOtherThan " + tag + ": " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (Fragment fragment : fragments) {
|
for (Fragment fragment : fragments) {
|
||||||
if (fragment instanceof DialogFragment
|
if (fragment instanceof DialogFragment
|
||||||
&& fragment.getTag() != null
|
&& fragment.getTag() != null
|
||||||
@@ -430,7 +436,13 @@ public class AudioSharingDialogHandler {
|
|||||||
public void closeOpeningDialogsForLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
|
public void closeOpeningDialogsForLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
|
||||||
if (mHostFragment == null) return;
|
if (mHostFragment == null) return;
|
||||||
int groupId = AudioSharingUtils.getGroupId(cachedDevice);
|
int groupId = AudioSharingUtils.getGroupId(cachedDevice);
|
||||||
List<Fragment> fragments = mHostFragment.getChildFragmentManager().getFragments();
|
List<Fragment> fragments;
|
||||||
|
try {
|
||||||
|
fragments = mHostFragment.getChildFragmentManager().getFragments();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to closeOpeningDialogsForLeaDevice: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (Fragment fragment : fragments) {
|
for (Fragment fragment : fragments) {
|
||||||
CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
|
CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
|
||||||
if (device != null
|
if (device != null
|
||||||
@@ -447,7 +459,13 @@ public class AudioSharingDialogHandler {
|
|||||||
public void closeOpeningDialogsForNonLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
|
public void closeOpeningDialogsForNonLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
|
||||||
if (mHostFragment == null) return;
|
if (mHostFragment == null) return;
|
||||||
String address = cachedDevice.getAddress();
|
String address = cachedDevice.getAddress();
|
||||||
List<Fragment> fragments = mHostFragment.getChildFragmentManager().getFragments();
|
List<Fragment> fragments;
|
||||||
|
try {
|
||||||
|
fragments = mHostFragment.getChildFragmentManager().getFragments();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to closeOpeningDialogsForNonLeaDevice: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (Fragment fragment : fragments) {
|
for (Fragment fragment : fragments) {
|
||||||
CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
|
CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
|
||||||
if (device != null && address != null && address.equals(device.getAddress())) {
|
if (device != null && address != null && address.equals(device.getAddress())) {
|
||||||
|
@@ -51,12 +51,13 @@ public class AudioSharingDialogHelper {
|
|||||||
public static AlertDialog getDialogIfShowing(
|
public static AlertDialog getDialogIfShowing(
|
||||||
@NonNull FragmentManager manager, @NonNull String tag) {
|
@NonNull FragmentManager manager, @NonNull String tag) {
|
||||||
Fragment dialog = manager.findFragmentByTag(tag);
|
Fragment dialog = manager.findFragmentByTag(tag);
|
||||||
return dialog != null
|
return dialog instanceof DialogFragment
|
||||||
&& dialog instanceof DialogFragment
|
|
||||||
&& ((DialogFragment) dialog).getDialog() != null
|
&& ((DialogFragment) dialog).getDialog() != null
|
||||||
&& ((DialogFragment) dialog).getDialog().isShowing()
|
&& ((DialogFragment) dialog).getDialog().isShowing()
|
||||||
&& ((DialogFragment) dialog).getDialog() instanceof AlertDialog
|
&& ((DialogFragment) dialog).getDialog() instanceof AlertDialog
|
||||||
? (AlertDialog) ((DialogFragment) dialog).getDialog()
|
? (AlertDialog) ((DialogFragment) dialog).getDialog()
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AudioSharingDialogHelper() {}
|
||||||
}
|
}
|
||||||
|
@@ -84,7 +84,13 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
|
|||||||
@NonNull DialogEventListener listener,
|
@NonNull DialogEventListener listener,
|
||||||
@NonNull Pair<Integer, Object>[] eventData) {
|
@NonNull Pair<Integer, Object>[] eventData) {
|
||||||
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager;
|
||||||
|
try {
|
||||||
|
manager = host.getChildFragmentManager();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to show dialog: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
||||||
if (dialog != null) {
|
if (dialog != null) {
|
||||||
int newGroupId = AudioSharingUtils.getGroupId(newDevice);
|
int newGroupId = AudioSharingUtils.getGroupId(newDevice);
|
||||||
|
@@ -81,7 +81,13 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
|
|||||||
@NonNull DialogEventListener listener,
|
@NonNull DialogEventListener listener,
|
||||||
@NonNull Pair<Integer, Object>[] eventData) {
|
@NonNull Pair<Integer, Object>[] eventData) {
|
||||||
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager;
|
||||||
|
try {
|
||||||
|
manager = host.getChildFragmentManager();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to show dialog: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
sNewDevice = newDevice;
|
sNewDevice = newDevice;
|
||||||
sEventData = eventData;
|
sEventData = eventData;
|
||||||
|
@@ -81,7 +81,13 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
|
|||||||
@NonNull DialogEventListener listener,
|
@NonNull DialogEventListener listener,
|
||||||
@NonNull Pair<Integer, Object>[] eventData) {
|
@NonNull Pair<Integer, Object>[] eventData) {
|
||||||
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager;
|
||||||
|
try {
|
||||||
|
manager = host.getChildFragmentManager();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.d(TAG, "Fail to show dialog: " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
|
||||||
if (dialog != null) {
|
if (dialog != null) {
|
||||||
int newGroupId = AudioSharingUtils.getGroupId(newDevice);
|
int newGroupId = AudioSharingUtils.getGroupId(newDevice);
|
||||||
|
@@ -23,6 +23,7 @@ import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothStatusCodes;
|
import android.bluetooth.BluetoothStatusCodes;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.platform.test.flag.junit.SetFlagsRule;
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
@@ -78,10 +79,6 @@ public class AudioSharingCallAudioDialogFragmentTest {
|
|||||||
BluetoothStatusCodes.FEATURE_SUPPORTED);
|
BluetoothStatusCodes.FEATURE_SUPPORTED);
|
||||||
shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
|
shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
|
||||||
BluetoothStatusCodes.FEATURE_SUPPORTED);
|
BluetoothStatusCodes.FEATURE_SUPPORTED);
|
||||||
mFragment = new AudioSharingCallAudioDialogFragment();
|
|
||||||
mParent = new Fragment();
|
|
||||||
FragmentController.setupFragment(
|
|
||||||
mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -91,6 +88,7 @@ public class AudioSharingCallAudioDialogFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getMetricsCategory_correctValue() {
|
public void getMetricsCategory_correctValue() {
|
||||||
|
mFragment = new AudioSharingCallAudioDialogFragment();
|
||||||
assertThat(mFragment.getMetricsCategory())
|
assertThat(mFragment.getMetricsCategory())
|
||||||
.isEqualTo(SettingsEnums.DIALOG_AUDIO_SHARING_CALL_AUDIO);
|
.isEqualTo(SettingsEnums.DIALOG_AUDIO_SHARING_CALL_AUDIO);
|
||||||
}
|
}
|
||||||
@@ -98,21 +96,52 @@ public class AudioSharingCallAudioDialogFragmentTest {
|
|||||||
@Test
|
@Test
|
||||||
public void onCreateDialog_flagOff_dialogNotExist() {
|
public void onCreateDialog_flagOff_dialogNotExist() {
|
||||||
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
mFragment.show(mParent, new ArrayList<>(), (item) -> {});
|
mParent = new Fragment();
|
||||||
|
FragmentController.setupFragment(
|
||||||
|
mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
|
||||||
|
AudioSharingCallAudioDialogFragment.show(mParent, new ArrayList<>(), (item) -> {});
|
||||||
shadowMainLooper().idle();
|
shadowMainLooper().idle();
|
||||||
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_unattachedFragment_dialogNotExist() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
mParent = new Fragment();
|
||||||
|
AudioSharingCallAudioDialogFragment.show(mParent, new ArrayList<>(), (item) -> {});
|
||||||
|
shadowMainLooper().idle();
|
||||||
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_nullDeviceItems_showEmptyDialog() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
mFragment = new AudioSharingCallAudioDialogFragment();
|
||||||
|
mFragment.setArguments(Bundle.EMPTY);
|
||||||
|
FragmentController.setupFragment(
|
||||||
|
mFragment, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
|
||||||
|
AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
|
||||||
|
dialog.show();
|
||||||
|
shadowMainLooper().idle();
|
||||||
|
assertThat(dialog.isShowing()).isTrue();
|
||||||
|
assertThat(dialog.getListView()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateDialog_showCorrectItems() {
|
public void onCreateDialog_showCorrectItems() {
|
||||||
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
mParent = new Fragment();
|
||||||
|
FragmentController.setupFragment(
|
||||||
|
mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
|
||||||
ArrayList<AudioSharingDeviceItem> deviceItemList = new ArrayList<>();
|
ArrayList<AudioSharingDeviceItem> deviceItemList = new ArrayList<>();
|
||||||
deviceItemList.add(TEST_DEVICE_ITEM1);
|
deviceItemList.add(TEST_DEVICE_ITEM1);
|
||||||
deviceItemList.add(TEST_DEVICE_ITEM2);
|
deviceItemList.add(TEST_DEVICE_ITEM2);
|
||||||
mFragment.show(mParent, deviceItemList, (item) -> {});
|
AudioSharingCallAudioDialogFragment.show(mParent, deviceItemList, (item) -> {});
|
||||||
shadowMainLooper().idle();
|
shadowMainLooper().idle();
|
||||||
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNotNull();
|
||||||
assertThat(dialog.getListView().getCount()).isEqualTo(2);
|
assertThat(dialog.getListView().getCount()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -95,6 +95,15 @@ public class AudioSharingConfirmDialogFragmentTest {
|
|||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_unattachedFragment_dialogNotExist() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
AudioSharingConfirmDialogFragment.show(new Fragment());
|
||||||
|
shadowMainLooper().idle();
|
||||||
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateDialog_flagOn_showDialog() {
|
public void onCreateDialog_flagOn_showDialog() {
|
||||||
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
@@ -130,7 +130,16 @@ public class AudioSharingDialogFragmentTest {
|
|||||||
AudioSharingDialogFragment.show(
|
AudioSharingDialogFragment.show(
|
||||||
mParent, new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
|
mParent, new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
|
||||||
shadowMainLooper().idle();
|
shadowMainLooper().idle();
|
||||||
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_unattachedFragment_dialogNotExist() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
AudioSharingDialogFragment.show(
|
||||||
|
new Fragment(), new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
|
||||||
|
shadowMainLooper().idle();
|
||||||
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
@@ -647,6 +647,15 @@ public class AudioSharingDialogHandlerTest {
|
|||||||
SettingsEnums.DIALOG_START_AUDIO_SHARING);
|
SettingsEnums.DIALOG_START_AUDIO_SHARING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void closeOpeningDialogsForLeaDevice_unattachedFragment_doNothing() {
|
||||||
|
mParentFragment = new Fragment();
|
||||||
|
mHandler = new AudioSharingDialogHandler(mContext, mParentFragment);
|
||||||
|
mHandler.closeOpeningDialogsForLeaDevice(mCachedDevice1);
|
||||||
|
shadowOf(Looper.getMainLooper()).idle();
|
||||||
|
verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void closeOpeningDialogsForLeaDevice_closeDisconnectDialog() {
|
public void closeOpeningDialogsForLeaDevice_closeDisconnectDialog() {
|
||||||
// Show disconnect dialog
|
// Show disconnect dialog
|
||||||
@@ -674,6 +683,15 @@ public class AudioSharingDialogHandlerTest {
|
|||||||
SettingsEnums.DIALOG_AUDIO_SHARING_SWITCH_DEVICE);
|
SettingsEnums.DIALOG_AUDIO_SHARING_SWITCH_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void closeOpeningDialogsForNonLeaDevice_unattachedFragment_doNothing() {
|
||||||
|
mParentFragment = new Fragment();
|
||||||
|
mHandler = new AudioSharingDialogHandler(mContext, mParentFragment);
|
||||||
|
mHandler.closeOpeningDialogsForNonLeaDevice(mCachedDevice2);
|
||||||
|
shadowOf(Looper.getMainLooper()).idle();
|
||||||
|
verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void closeOpeningDialogsForNonLeaDevice_closeStopDialog() {
|
public void closeOpeningDialogsForNonLeaDevice_closeStopDialog() {
|
||||||
// Show stop dialog
|
// Show stop dialog
|
||||||
|
@@ -153,6 +153,23 @@ public class AudioSharingDisconnectDialogFragmentTest {
|
|||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_unattachedFragment_dialogNotExist() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
mDeviceItems = new ArrayList<>();
|
||||||
|
mDeviceItems.add(TEST_DEVICE_ITEM1);
|
||||||
|
mDeviceItems.add(TEST_DEVICE_ITEM2);
|
||||||
|
AudioSharingDisconnectDialogFragment.show(
|
||||||
|
new Fragment(),
|
||||||
|
mDeviceItems,
|
||||||
|
mCachedDevice3,
|
||||||
|
EMPTY_EVENT_LISTENER,
|
||||||
|
TEST_EVENT_DATA_LIST);
|
||||||
|
shadowMainLooper().idle();
|
||||||
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateDialog_flagOn_dialogShowBtnForTwoDevices() {
|
public void onCreateDialog_flagOn_dialogShowBtnForTwoDevices() {
|
||||||
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
@@ -163,6 +163,20 @@ public class AudioSharingJoinDialogFragmentTest {
|
|||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_unattachedFragment_dialogNotExist() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
AudioSharingJoinDialogFragment.show(
|
||||||
|
new Fragment(),
|
||||||
|
new ArrayList<>(),
|
||||||
|
mCachedDevice2,
|
||||||
|
EMPTY_EVENT_LISTENER,
|
||||||
|
TEST_EVENT_DATA_LIST);
|
||||||
|
shadowMainLooper().idle();
|
||||||
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateDialog_flagOn_dialogShowTextForSingleDevice() {
|
public void onCreateDialog_flagOn_dialogShowTextForSingleDevice() {
|
||||||
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
@@ -148,6 +148,20 @@ public class AudioSharingStopDialogFragmentTest {
|
|||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateDialog_unattachedFragment_dialogNotExist() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
AudioSharingStopDialogFragment.show(
|
||||||
|
new Fragment(),
|
||||||
|
ImmutableList.of(TEST_DEVICE_ITEM2),
|
||||||
|
mCachedDevice1,
|
||||||
|
EMPTY_EVENT_LISTENER,
|
||||||
|
TEST_EVENT_DATA_LIST);
|
||||||
|
shadowMainLooper().idle();
|
||||||
|
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateDialog_oneDeviceInSharing_showDialogWithCorrectMessage() {
|
public void onCreateDialog_oneDeviceInSharing_showDialogWithCorrectMessage() {
|
||||||
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
||||||
|
Reference in New Issue
Block a user