Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java +27 −8 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.graphics.drawable.IconCompat; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.media.BluetoothMediaDevice; import com.android.settingslib.media.MediaDevice; import com.android.settingslib.qrcode.QrCodeGenerator; Loading Loading @@ -420,7 +421,8 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog { return mMediaOutputController.getBroadcastMetadata(); } private void updateBroadcastInfo(boolean isBroadcastCode, String updatedString) { @VisibleForTesting void updateBroadcastInfo(boolean isBroadcastCode, String updatedString) { Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); if (positiveBtn != null) { positiveBtn.setEnabled(false); Loading Loading @@ -523,16 +525,33 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog { } private void handleUpdateFailedUi() { final Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); mBroadcastErrorMessage.setVisibility(View.VISIBLE); if (mRetryCount < MAX_BROADCAST_INFO_UPDATE) { if (positiveBtn != null) { positiveBtn.setEnabled(true); if (mAlertDialog == null) { Log.d(TAG, "handleUpdateFailedUi: mAlertDialog is null"); return; } mBroadcastErrorMessage.setText(R.string.media_output_broadcast_update_error); int errorMessageStringId = -1; boolean enablePositiveBtn = false; if (mRetryCount < MAX_BROADCAST_INFO_UPDATE) { enablePositiveBtn = true; errorMessageStringId = R.string.media_output_broadcast_update_error; } else { mRetryCount = 0; mBroadcastErrorMessage.setText(R.string.media_output_broadcast_last_update_error); errorMessageStringId = R.string.media_output_broadcast_last_update_error; } // update UI final Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); if (positiveBtn != null && enablePositiveBtn) { positiveBtn.setEnabled(true); } if (mBroadcastErrorMessage != null) { mBroadcastErrorMessage.setVisibility(View.VISIBLE); mBroadcastErrorMessage.setText(errorMessageStringId); } } @VisibleForTesting int getRetryCount() { return mRetryCount; } } packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java +58 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.media.dialog; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.mock; Loading @@ -33,6 +35,8 @@ import android.media.session.MediaSessionManager; import android.os.PowerExemptionManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.widget.ImageView; import android.widget.TextView; import androidx.test.filters.SmallTest; Loading @@ -44,6 +48,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; import com.android.settingslib.media.BluetoothMediaDevice; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.animation.DialogLaunchAnimator; import com.android.systemui.broadcast.BroadcastSender; Loading @@ -58,6 +63,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Optional; Loading @@ -68,6 +74,9 @@ import java.util.Optional; public class MediaOutputBroadcastDialogTest extends SysuiTestCase { private static final String TEST_PACKAGE = "test_package"; private static final String BROADCAST_NAME_TEST = "Broadcast_name_test"; private static final String BROADCAST_CODE_TEST = "112233"; private static final String BROADCAST_CODE_UPDATE_TEST = "11223344"; // Mock private final MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class); Loading Loading @@ -106,6 +115,9 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase { when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager); when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(null); when(mLocalBluetoothProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(null); when(mLocalBluetoothLeBroadcast.getProgramInfo()).thenReturn(BROADCAST_NAME_TEST); when(mLocalBluetoothLeBroadcast.getBroadcastCode()).thenReturn( BROADCAST_CODE_TEST.getBytes(StandardCharsets.UTF_8)); mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, mMediaSessionManager, mLocalBluetoothManager, mStarter, Loading Loading @@ -194,4 +206,50 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase { verify(mLocalBluetoothLeBroadcastAssistant, times(1)).addSource(any(), any(), anyBoolean()); } @Test public void handleLeBroadcastMetadataChanged_checkBroadcastName() { when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn( mLocalBluetoothLeBroadcast); final TextView broadcastName = mMediaOutputBroadcastDialog.mDialogView .requireViewById(R.id.broadcast_name_summary); mMediaOutputBroadcastDialog.handleLeBroadcastMetadataChanged(); assertThat(broadcastName.getText().toString()).isEqualTo(BROADCAST_NAME_TEST); } @Test public void handleLeBroadcastMetadataChanged_checkBroadcastCode() { when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn( mLocalBluetoothLeBroadcast); final TextView broadcastCode = mMediaOutputBroadcastDialog.mDialogView .requireViewById(R.id.broadcast_code_summary); mMediaOutputBroadcastDialog.handleLeBroadcastMetadataChanged(); assertThat(broadcastCode.getText().toString()).isEqualTo(BROADCAST_CODE_TEST); } @Test public void updateBroadcastInfo_stopBroadcastFailed_handleFailedUi() { ImageView broadcastCodeEdit = mMediaOutputBroadcastDialog.mDialogView .requireViewById(R.id.broadcast_code_edit); TextView broadcastCode = mMediaOutputBroadcastDialog.mDialogView.requireViewById( R.id.broadcast_code_summary); broadcastCode.setText(BROADCAST_CODE_UPDATE_TEST); when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(null); broadcastCodeEdit.callOnClick(); mMediaOutputBroadcastDialog.updateBroadcastInfo(true, BROADCAST_CODE_UPDATE_TEST); assertThat(mMediaOutputBroadcastDialog.getRetryCount()).isEqualTo(1); mMediaOutputBroadcastDialog.updateBroadcastInfo(true, BROADCAST_CODE_UPDATE_TEST); assertThat(mMediaOutputBroadcastDialog.getRetryCount()).isEqualTo(2); // It will be the MAX Retry Count = 3 mMediaOutputBroadcastDialog.updateBroadcastInfo(true, BROADCAST_CODE_UPDATE_TEST); assertThat(mMediaOutputBroadcastDialog.getRetryCount()).isEqualTo(0); } } Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialog.java +27 −8 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.graphics.drawable.IconCompat; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.media.BluetoothMediaDevice; import com.android.settingslib.media.MediaDevice; import com.android.settingslib.qrcode.QrCodeGenerator; Loading Loading @@ -420,7 +421,8 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog { return mMediaOutputController.getBroadcastMetadata(); } private void updateBroadcastInfo(boolean isBroadcastCode, String updatedString) { @VisibleForTesting void updateBroadcastInfo(boolean isBroadcastCode, String updatedString) { Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); if (positiveBtn != null) { positiveBtn.setEnabled(false); Loading Loading @@ -523,16 +525,33 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog { } private void handleUpdateFailedUi() { final Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); mBroadcastErrorMessage.setVisibility(View.VISIBLE); if (mRetryCount < MAX_BROADCAST_INFO_UPDATE) { if (positiveBtn != null) { positiveBtn.setEnabled(true); if (mAlertDialog == null) { Log.d(TAG, "handleUpdateFailedUi: mAlertDialog is null"); return; } mBroadcastErrorMessage.setText(R.string.media_output_broadcast_update_error); int errorMessageStringId = -1; boolean enablePositiveBtn = false; if (mRetryCount < MAX_BROADCAST_INFO_UPDATE) { enablePositiveBtn = true; errorMessageStringId = R.string.media_output_broadcast_update_error; } else { mRetryCount = 0; mBroadcastErrorMessage.setText(R.string.media_output_broadcast_last_update_error); errorMessageStringId = R.string.media_output_broadcast_last_update_error; } // update UI final Button positiveBtn = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); if (positiveBtn != null && enablePositiveBtn) { positiveBtn.setEnabled(true); } if (mBroadcastErrorMessage != null) { mBroadcastErrorMessage.setVisibility(View.VISIBLE); mBroadcastErrorMessage.setText(errorMessageStringId); } } @VisibleForTesting int getRetryCount() { return mRetryCount; } }
packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java +58 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.media.dialog; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.mock; Loading @@ -33,6 +35,8 @@ import android.media.session.MediaSessionManager; import android.os.PowerExemptionManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.widget.ImageView; import android.widget.TextView; import androidx.test.filters.SmallTest; Loading @@ -44,6 +48,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; import com.android.settingslib.media.BluetoothMediaDevice; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.animation.DialogLaunchAnimator; import com.android.systemui.broadcast.BroadcastSender; Loading @@ -58,6 +63,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Optional; Loading @@ -68,6 +74,9 @@ import java.util.Optional; public class MediaOutputBroadcastDialogTest extends SysuiTestCase { private static final String TEST_PACKAGE = "test_package"; private static final String BROADCAST_NAME_TEST = "Broadcast_name_test"; private static final String BROADCAST_CODE_TEST = "112233"; private static final String BROADCAST_CODE_UPDATE_TEST = "11223344"; // Mock private final MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class); Loading Loading @@ -106,6 +115,9 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase { when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager); when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(null); when(mLocalBluetoothProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(null); when(mLocalBluetoothLeBroadcast.getProgramInfo()).thenReturn(BROADCAST_NAME_TEST); when(mLocalBluetoothLeBroadcast.getBroadcastCode()).thenReturn( BROADCAST_CODE_TEST.getBytes(StandardCharsets.UTF_8)); mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, mMediaSessionManager, mLocalBluetoothManager, mStarter, Loading Loading @@ -194,4 +206,50 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase { verify(mLocalBluetoothLeBroadcastAssistant, times(1)).addSource(any(), any(), anyBoolean()); } @Test public void handleLeBroadcastMetadataChanged_checkBroadcastName() { when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn( mLocalBluetoothLeBroadcast); final TextView broadcastName = mMediaOutputBroadcastDialog.mDialogView .requireViewById(R.id.broadcast_name_summary); mMediaOutputBroadcastDialog.handleLeBroadcastMetadataChanged(); assertThat(broadcastName.getText().toString()).isEqualTo(BROADCAST_NAME_TEST); } @Test public void handleLeBroadcastMetadataChanged_checkBroadcastCode() { when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn( mLocalBluetoothLeBroadcast); final TextView broadcastCode = mMediaOutputBroadcastDialog.mDialogView .requireViewById(R.id.broadcast_code_summary); mMediaOutputBroadcastDialog.handleLeBroadcastMetadataChanged(); assertThat(broadcastCode.getText().toString()).isEqualTo(BROADCAST_CODE_TEST); } @Test public void updateBroadcastInfo_stopBroadcastFailed_handleFailedUi() { ImageView broadcastCodeEdit = mMediaOutputBroadcastDialog.mDialogView .requireViewById(R.id.broadcast_code_edit); TextView broadcastCode = mMediaOutputBroadcastDialog.mDialogView.requireViewById( R.id.broadcast_code_summary); broadcastCode.setText(BROADCAST_CODE_UPDATE_TEST); when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(null); broadcastCodeEdit.callOnClick(); mMediaOutputBroadcastDialog.updateBroadcastInfo(true, BROADCAST_CODE_UPDATE_TEST); assertThat(mMediaOutputBroadcastDialog.getRetryCount()).isEqualTo(1); mMediaOutputBroadcastDialog.updateBroadcastInfo(true, BROADCAST_CODE_UPDATE_TEST); assertThat(mMediaOutputBroadcastDialog.getRetryCount()).isEqualTo(2); // It will be the MAX Retry Count = 3 mMediaOutputBroadcastDialog.updateBroadcastInfo(true, BROADCAST_CODE_UPDATE_TEST); assertThat(mMediaOutputBroadcastDialog.getRetryCount()).isEqualTo(0); } }