Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71da145a authored by Yiyi Shen's avatar Yiyi Shen Committed by Android (Google) Code Review
Browse files

Merge "[Audiosharing] Format files" into main

parents 89ca5560 91f36cb5
Loading
Loading
Loading
Loading
+27 −17
Original line number Diff line number Diff line
@@ -163,7 +163,8 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
            Log.d(TAG, "Create dialog error: null deviceItems");
            return builder.build();
        }
        BluetoothLeBroadcastMetadata metadata = arguments.getParcelable(
        BluetoothLeBroadcastMetadata metadata =
                arguments.getParcelable(
                        BUNDLE_KEY_BROADCAST_METADATA, BluetoothLeBroadcastMetadata.class);
        Drawable qrCodeDrawable = null;
        if (deviceItems.isEmpty()) {
@@ -189,22 +190,31 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
                                }
                                launcher.launch();
                            });
            qrCodeDrawable = metadata == null ? null : getQrCodeDrawable(metadata,
                    getContext()).orElse(null);
            qrCodeDrawable =
                    metadata == null
                            ? null
                            : getQrCodeDrawable(metadata, getContext()).orElse(null);
            if (qrCodeDrawable != null) {
                String broadcastName =
                        metadata.getBroadcastName() == null ? "" : metadata.getBroadcastName();
                boolean hasPassword = metadata.getBroadcastCode() != null
                boolean hasPassword =
                        metadata.getBroadcastCode() != null
                                && metadata.getBroadcastCode().length > 0;
                String message = hasPassword ? getString(
                        R.string.audio_sharing_dialog_qr_code_content, broadcastName,
                        new String(metadata.getBroadcastCode(), StandardCharsets.UTF_8)) :
                        getString(R.string.audio_sharing_dialog_qr_code_content_no_password,
                String message =
                        hasPassword
                                ? getString(
                                        R.string.audio_sharing_dialog_qr_code_content,
                                        broadcastName,
                                        new String(
                                                metadata.getBroadcastCode(),
                                                StandardCharsets.UTF_8))
                                : getString(
                                        R.string.audio_sharing_dialog_qr_code_content_no_password,
                                        broadcastName);
                builder.setCustomMessage(message)
                        .setCustomMessage2(R.string.audio_sharing_dialog_pair_new_device_content)
                        .setCustomNegativeButton(R.string.audio_streams_dialog_close,
                                v -> onCancelClick());
                        .setCustomNegativeButton(
                                R.string.audio_streams_dialog_close, v -> onCancelClick());
            } else {
                builder.setCustomImage(R.drawable.audio_sharing_guidance)
                        .setCustomMessage(R.string.audio_sharing_dialog_connect_device_content)
+27 −26
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.settings.SettingsEnums;
import android.os.Bundle;
import android.util.Log;
import android.util.Pair;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -78,7 +79,6 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
     * @param newDevice The latest connected device triggered this dialog.
     * @param listener The callback to handle the user action on this dialog.
     * @param eventData The eventData to log with for dialog onClick events.
     *
     * @return whether the dialog is shown
     */
    public static boolean show(
@@ -120,8 +120,8 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
                    } else {
                        Log.d(TAG, "Show up the dialog.");
                        final Bundle bundle = new Bundle();
                        bundle.putParcelableList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS,
                                deviceItems);
                        bundle.putParcelableList(
                                BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
                        AudioSharingDisconnectDialogFragment dialogFrag =
                                new AudioSharingDisconnectDialogFragment();
                        dialogFrag.setArguments(bundle);
@@ -161,6 +161,14 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
        Bundle arguments = requireArguments();
        List<AudioSharingDeviceItem> deviceItems =
                arguments.getParcelable(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, List.class);
        View.OnClickListener onNegativeBtnClicked =
                v -> {
                    mMetricsFeatureProvider.action(
                            getContext(),
                            SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED,
                            sEventData);
                    dismiss();
                };
        AudioSharingDialogFactory.DialogBuilder builder =
                AudioSharingDialogFactory.newBuilder(getActivity())
                        .setTitle(R.string.audio_sharing_disconnect_dialog_title)
@@ -168,34 +176,27 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
                        .setIsCustomBodyEnabled(true)
                        .setCustomMessage(R.string.audio_sharing_dialog_disconnect_content)
                        .setCustomNegativeButton(
                                com.android.settings.R.string.cancel,
                                v -> {
                                    mMetricsFeatureProvider.action(
                                            getContext(),
                                            SettingsEnums
                                            .ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED,
                                            sEventData);
                                    dismiss();
                                });
                                com.android.settings.R.string.cancel, onNegativeBtnClicked);
        if (deviceItems == null) {
            Log.d(TAG, "Create dialog error: null deviceItems");
            return builder.build();
        }
        builder.setCustomDeviceActions(
                new AudioSharingDeviceAdapter(
                        getContext(),
                        deviceItems,
        AudioSharingDeviceAdapter.OnClickListener onClickListener =
                (AudioSharingDeviceItem item) -> {
                    if (sListener != null) {
                        sListener.onItemClick(item);
                        mMetricsFeatureProvider.action(
                                getContext(),
                                        SettingsEnums
                                        .ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED,
                                SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED,
                                sEventData);
                    }
                    dismiss();
                        },
                };
        builder.setCustomDeviceActions(
                new AudioSharingDeviceAdapter(
                        getContext(),
                        deviceItems,
                        onClickListener,
                        AudioSharingDeviceAdapter.ActionType.REMOVE));
        return builder.build();
    }
@@ -206,15 +207,15 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
        FragmentActivity activity = getActivity();
        if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice()
                && activity instanceof AudioSharingJoinHandlerActivity
                && !activity.isChangingConfigurations() && !activity.isFinishing()) {
                && !activity.isChangingConfigurations()
                && !activity.isFinishing()) {
            Log.d(TAG, "onDestroy, finish activity = " + activity.getClass().getName());
            activity.finish();
        }
    }

    private static void updateDialog(
            @NonNull List<AudioSharingDeviceItem> deviceItems,
            @NonNull AlertDialog dialog) {
            @NonNull List<AudioSharingDeviceItem> deviceItems, @NonNull AlertDialog dialog) {
        AudioSharingDialogFactory.updateCustomDeviceActions(dialog, deviceItems);
    }
}
+28 −27
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.settings.SettingsEnums;
import android.os.Bundle;
import android.util.Log;
import android.util.Pair;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -77,7 +78,6 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
     * @param newDevice The latest connected device triggered this dialog.
     * @param listener The callback to handle the user action on this dialog.
     * @param eventData The eventData to log with for dialog onClick events.
     *
     * @return whether the dialog is shown
     */
    public static boolean show(
@@ -112,8 +112,7 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
        AudioSharingUtils.postOnMainThread(
                host.getContext(),
                () -> {
                    AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager,
                            TAG);
                    AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
                    if (dialog != null) {
                        Log.d(TAG, "Dialog is showing, update the content.");
                        updateDialog(deviceItems, newDevice.getName(), dialog);
@@ -162,42 +161,43 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
        List<AudioSharingDeviceItem> deviceItems =
                arguments.getParcelable(BUNDLE_KEY_DEVICE_ITEMS, List.class);
        String newDeviceName = arguments.getString(BUNDLE_KEY_NEW_DEVICE_NAME);
        AlertDialog dialog =
                AudioSharingDialogFactory.newBuilder(getActivity())
                        .setTitle(R.string.audio_sharing_share_dialog_title)
                        .setTitleIcon(com.android.settingslib.R.drawable.ic_bt_le_audio_sharing)
                        .setIsCustomBodyEnabled(true)
                        .setCustomMessage(R.string.audio_sharing_dialog_share_content)
                        .setCustomPositiveButton(
                                R.string.audio_sharing_share_button_label,
        View.OnClickListener onPositiveBtnClicked =
                v -> {
                    if (sListener != null) {
                        sListener.onShareClick();
                        mMetricsFeatureProvider.action(
                                getContext(),
                                                SettingsEnums
                                                .ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED,
                                SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED,
                                sEventData);
                    }
                    dismiss();
                                })
                        .setCustomNegativeButton(
                                getMetricsCategory() == SettingsEnums.DIALOG_START_AUDIO_SHARING
                                        ? getString(
                                                R.string.audio_sharing_switch_active_button_label,
                                                newDeviceName)
                                        : getString(R.string.audio_sharing_no_thanks_button_label),
                };
        View.OnClickListener onNegativeBtnClicked =
                v -> {
                    if (sListener != null) {
                        sListener.onCancelClick();
                        mMetricsFeatureProvider.action(
                                getContext(),
                                                SettingsEnums
                                                .ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED,
                                SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED,
                                sEventData);
                    }
                    dismiss();
                                })
                };
        AlertDialog dialog =
                AudioSharingDialogFactory.newBuilder(getActivity())
                        .setTitle(R.string.audio_sharing_share_dialog_title)
                        .setTitleIcon(com.android.settingslib.R.drawable.ic_bt_le_audio_sharing)
                        .setIsCustomBodyEnabled(true)
                        .setCustomMessage(R.string.audio_sharing_dialog_share_content)
                        .setCustomPositiveButton(
                                R.string.audio_sharing_share_button_label, onPositiveBtnClicked)
                        .setCustomNegativeButton(
                                getMetricsCategory() == SettingsEnums.DIALOG_START_AUDIO_SHARING
                                        ? getString(
                                                R.string.audio_sharing_switch_active_button_label,
                                                newDeviceName)
                                        : getString(R.string.audio_sharing_no_thanks_button_label),
                                onNegativeBtnClicked)
                        .build();
        if (deviceItems == null) {
            Log.d(TAG, "Fail to create dialog: null deviceItems");
@@ -215,7 +215,8 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
        FragmentActivity activity = getActivity();
        if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice()
                && activity instanceof AudioSharingJoinHandlerActivity
                && !activity.isChangingConfigurations() && !activity.isFinishing()) {
                && !activity.isChangingConfigurations()
                && !activity.isFinishing()) {
            Log.d(TAG, "onDestroy, finish activity = " + activity.getClass().getName());
            activity.finish();
        }
+34 −31
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.connecteddevice.audiosharing;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.util.Pair;
@@ -75,7 +76,6 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
     * @param newDevice The latest connected device triggered this dialog.
     * @param listener The callback to handle the user action on this dialog.
     * @param eventData The eventData to log with for dialog onClick events.
     *
     * @return whether the dialog is shown
     */
    public static boolean show(
@@ -117,8 +117,8 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
                    } else {
                        Log.d(TAG, "Show up the dialog.");
                        final Bundle bundle = new Bundle();
                        bundle.putParcelableList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS,
                                deviceItems);
                        bundle.putParcelableList(
                                BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
                        bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
                        AudioSharingStopDialogFragment dialogFrag =
                                new AudioSharingStopDialogFragment();
@@ -160,30 +160,30 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
        List<AudioSharingDeviceItem> deviceItems =
                arguments.getParcelable(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, List.class);
        String newDeviceName = arguments.getString(BUNDLE_KEY_NEW_DEVICE_NAME);
        AlertDialog dialog =
                AudioSharingDialogFactory.newBuilder(getActivity())
                        .setTitleIcon(com.android.settings.R.drawable.ic_warning_24dp)
                        .setIsCustomBodyEnabled(true)
                        .setPositiveButton(
                                R.string.audio_sharing_connect_button_label,
        DialogInterface.OnClickListener onPositiveBtnClicked =
                (dlg, which) -> {
                    if (sListener != null) {
                        sListener.onStopSharingClick();
                        mMetricsFeatureProvider.action(
                                getContext(),
                                                SettingsEnums
                                                .ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED,
                                SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED,
                                sEventData);
                    }
                                })
                        .setNegativeButton(
                                com.android.settings.R.string.cancel,
                };
        DialogInterface.OnClickListener onNegativeBtnClicked =
                (dlg, which) ->
                        mMetricsFeatureProvider.action(
                                getContext(),
                                                SettingsEnums
                                                .ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED,
                                                sEventData))
                                SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED,
                                sEventData);
        AlertDialog dialog =
                AudioSharingDialogFactory.newBuilder(getActivity())
                        .setTitleIcon(com.android.settings.R.drawable.ic_warning_24dp)
                        .setIsCustomBodyEnabled(true)
                        .setPositiveButton(
                                R.string.audio_sharing_connect_button_label, onPositiveBtnClicked)
                        .setNegativeButton(
                                com.android.settings.R.string.cancel, onNegativeBtnClicked)
                        .build();
        dialog.show();
        updateDialog(getContext(), deviceItems, newDeviceName, dialog);
@@ -196,7 +196,8 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
        FragmentActivity activity = getActivity();
        if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice()
                && activity instanceof AudioSharingJoinHandlerActivity
                && !activity.isChangingConfigurations() && !activity.isFinishing()) {
                && !activity.isChangingConfigurations()
                && !activity.isFinishing()) {
            Log.d(TAG, "onDestroy, finish activity = " + activity.getClass().getName());
            activity.finish();
        }
@@ -211,17 +212,19 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
        String customMessage = "";
        if (deviceItems != null) {
            if (deviceItems.size() == 1) {
                customMessage = context.getString(
                customMessage =
                        context.getString(
                                R.string.audio_sharing_stop_dialog_content,
                                Iterables.getOnlyElement(deviceItems).getName());
            } else if (deviceItems.size() == 2) {
                customMessage = context.getString(
                customMessage =
                        context.getString(
                                R.string.audio_sharing_stop_dialog_with_two_content,
                                deviceItems.get(0).getName(),
                                deviceItems.get(1).getName());
            } else {
                customMessage = context.getString(
                        R.string.audio_sharing_stop_dialog_with_more_content);
                customMessage =
                        context.getString(R.string.audio_sharing_stop_dialog_with_more_content);
            }
        }
        AudioSharingDialogFactory.updateTitle(dialog, title);
+28 −21
Original line number Diff line number Diff line
@@ -87,8 +87,7 @@ public class AudioSharingDialogFragmentTest {
    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM3 =
            new AudioSharingDeviceItem(TEST_DEVICE_NAME3, /* groupId= */ 3, /* isActive= */ false);
    private static final AudioSharingDialogFragment.DialogEventListener EMPTY_EVENT_LISTENER =
            new AudioSharingDialogFragment.DialogEventListener() {
            };
            new AudioSharingDialogFragment.DialogEventListener() {};
    private static final Pair<Integer, Object> TEST_EVENT_DATA = Pair.create(1, 1);
    private static final Pair<Integer, Object>[] TEST_EVENT_DATA_LIST =
            new Pair[] {TEST_EVENT_DATA};
@@ -149,7 +148,10 @@ public class AudioSharingDialogFragmentTest {
    @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
    public void onCreateDialog_unattachedFragment_dialogNotExist() {
        AudioSharingDialogFragment.show(
                new Fragment(), new ArrayList<>(), null, EMPTY_EVENT_LISTENER,
                new Fragment(),
                new ArrayList<>(),
                null,
                EMPTY_EVENT_LISTENER,
                TEST_EVENT_DATA_LIST);
        shadowMainLooper().idle();
        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
@@ -275,14 +277,16 @@ public class AudioSharingDialogFragmentTest {
        TextView text = dialog.findViewById(R.id.description_text);
        assertThat(text).isNotNull();
        assertThat(METADATA).isNotNull();
        assertThat(text.getText().toString()).isEqualTo(
                mParent.getString(R.string.audio_sharing_dialog_qr_code_content,
                        METADATA.getBroadcastName(), new String(
                                METADATA.getBroadcastCode(),
                                StandardCharsets.UTF_8)));
        assertThat(text.getText().toString())
                .isEqualTo(
                        mParent.getString(
                                R.string.audio_sharing_dialog_qr_code_content,
                                METADATA.getBroadcastName(),
                                new String(METADATA.getBroadcastCode(), StandardCharsets.UTF_8)));
        TextView textBottom = dialog.findViewById(R.id.description_text_2);
        assertThat(textBottom).isNotNull();
        assertThat(textBottom.getText().toString()).isEqualTo(
        assertThat(textBottom.getText().toString())
                .isEqualTo(
                        mParent.getString(R.string.audio_sharing_dialog_pair_new_device_content));
        Button cancelBtn = dialog.findViewById(R.id.negative_btn);
        assertThat(cancelBtn).isNotNull();
@@ -321,12 +325,15 @@ public class AudioSharingDialogFragmentTest {
        TextView text = dialog.findViewById(R.id.description_text);
        assertThat(text).isNotNull();
        assertThat(METADATA_NO_PASSWORD).isNotNull();
        assertThat(text.getText().toString()).isEqualTo(
                mParent.getString(R.string.audio_sharing_dialog_qr_code_content_no_password,
        assertThat(text.getText().toString())
                .isEqualTo(
                        mParent.getString(
                                R.string.audio_sharing_dialog_qr_code_content_no_password,
                                METADATA_NO_PASSWORD.getBroadcastName()));
        TextView textBottom = dialog.findViewById(R.id.description_text_2);
        assertThat(textBottom).isNotNull();
        assertThat(textBottom.getText().toString()).isEqualTo(
        assertThat(textBottom.getText().toString())
                .isEqualTo(
                        mParent.getString(R.string.audio_sharing_dialog_pair_new_device_content));
        Button cancelBtn = dialog.findViewById(R.id.negative_btn);
        assertThat(cancelBtn).isNotNull();
@@ -347,8 +354,8 @@ public class AudioSharingDialogFragmentTest {
    public void onCreateDialog_flagOn_singleExtraConnectedDevice() {
        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
        list.add(TEST_DEVICE_ITEM1);
        AudioSharingDialogFragment.show(mParent, list, null, EMPTY_EVENT_LISTENER,
                TEST_EVENT_DATA_LIST);
        AudioSharingDialogFragment.show(
                mParent, list, null, EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
        shadowMainLooper().idle();

        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
@@ -385,8 +392,8 @@ public class AudioSharingDialogFragmentTest {
    public void onCreateDialog_singleExtraConnectedDevice_dialogDismiss() {
        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
        list.add(TEST_DEVICE_ITEM1);
        AudioSharingDialogFragment.show(mParent, list, null, EMPTY_EVENT_LISTENER,
                TEST_EVENT_DATA_LIST);
        AudioSharingDialogFragment.show(
                mParent, list, null, EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
        shadowMainLooper().idle();

        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
@@ -446,8 +453,8 @@ public class AudioSharingDialogFragmentTest {
        list.add(TEST_DEVICE_ITEM1);
        list.add(TEST_DEVICE_ITEM2);
        list.add(TEST_DEVICE_ITEM3);
        AudioSharingDialogFragment.show(mParent, list, null, EMPTY_EVENT_LISTENER,
                TEST_EVENT_DATA_LIST);
        AudioSharingDialogFragment.show(
                mParent, list, null, EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
        shadowMainLooper().idle();

        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
Loading