Merge "[Output Switcher] Support ongoing session for active device" into udc-dev am: 1879dc6185
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23597527 Change-Id: If675a66beb62f489bc97e507716b67bb89f001b6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -110,7 +110,9 @@
|
|||||||
android:id="@+id/subtitle"
|
android:id="@+id/subtitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ellipsize="end"
|
android:marqueeRepeatLimit="marquee_forever"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:singleLine="true"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:textColor="@color/media_dialog_item_main_content"
|
android:textColor="@color/media_dialog_item_main_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.content.Context;
|
|||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -175,9 +174,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
|
|||||||
mCurrentActivePosition = position;
|
mCurrentActivePosition = position;
|
||||||
updateFullItemClickListener(v -> onItemClick(v, device));
|
updateFullItemClickListener(v -> onItemClick(v, device));
|
||||||
setSingleLineLayout(getItemTitle(device));
|
setSingleLineLayout(getItemTitle(device));
|
||||||
initMutingExpectedDevice();
|
initFakeActiveDevice();
|
||||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
|
} else if (device.hasSubtext()) {
|
||||||
&& device.hasSubtext()) {
|
|
||||||
boolean isActiveWithOngoingSession =
|
boolean isActiveWithOngoingSession =
|
||||||
(device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded(
|
(device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded(
|
||||||
mController.getSelectedMediaDevice(), device)));
|
mController.getSelectedMediaDevice(), device)));
|
||||||
@@ -267,6 +265,27 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
|
|||||||
setUpDeviceIcon(device);
|
setUpDeviceIcon(device);
|
||||||
updateFullItemClickListener(v -> cancelMuteAwaitConnection());
|
updateFullItemClickListener(v -> cancelMuteAwaitConnection());
|
||||||
setSingleLineLayout(getItemTitle(device));
|
setSingleLineLayout(getItemTitle(device));
|
||||||
|
} else if (device.hasOngoingSession()) {
|
||||||
|
mCurrentActivePosition = position;
|
||||||
|
if (device.isHostForOngoingSession()) {
|
||||||
|
updateTitleIcon(R.drawable.media_output_icon_volume,
|
||||||
|
mController.getColorItemContent());
|
||||||
|
updateEndClickAreaAsSessionEditing(device);
|
||||||
|
mEndClickIcon.setVisibility(View.VISIBLE);
|
||||||
|
setSingleLineLayout(getItemTitle(device), true /* showSeekBar */,
|
||||||
|
false /* showProgressBar */, false /* showCheckBox */,
|
||||||
|
true /* showEndTouchArea */);
|
||||||
|
initSeekbar(device, isCurrentSeekbarInvisible);
|
||||||
|
} else {
|
||||||
|
updateDeviceStatusIcon(mContext.getDrawable(
|
||||||
|
R.drawable.ic_sound_bars_anim));
|
||||||
|
mStatusIcon.setVisibility(View.VISIBLE);
|
||||||
|
updateSingleLineLayoutContentAlpha(
|
||||||
|
updateClickActionBasedOnSelectionBehavior(device)
|
||||||
|
? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA);
|
||||||
|
setSingleLineLayout(getItemTitle(device));
|
||||||
|
initFakeActiveDevice();
|
||||||
|
}
|
||||||
} else if (mController.isCurrentConnectedDeviceRemote()
|
} else if (mController.isCurrentConnectedDeviceRemote()
|
||||||
&& !mController.getSelectableMediaDevice().isEmpty()) {
|
&& !mController.getSelectableMediaDevice().isEmpty()) {
|
||||||
//If device is connected and there's other selectable devices, layout as
|
//If device is connected and there's other selectable devices, layout as
|
||||||
@@ -351,7 +370,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
|
|||||||
ColorStateList.valueOf(mController.getColorItemContent()));
|
ColorStateList.valueOf(mController.getColorItemContent()));
|
||||||
mEndClickIcon.setOnClickListener(
|
mEndClickIcon.setOnClickListener(
|
||||||
v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v));
|
v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v));
|
||||||
mEndTouchArea.setOnClickListener(v -> mCheckBox.performClick());
|
mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateEndClickAreaColor(int color) {
|
public void updateEndClickAreaColor(int color) {
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ public abstract class MediaOutputBaseAdapter extends
|
|||||||
mContainerLayout.setContentDescription(null);
|
mContainerLayout.setContentDescription(null);
|
||||||
mTitleText.setTextColor(mController.getColorItemContent());
|
mTitleText.setTextColor(mController.getColorItemContent());
|
||||||
mSubTitleText.setTextColor(mController.getColorItemContent());
|
mSubTitleText.setTextColor(mController.getColorItemContent());
|
||||||
|
mSubTitleText.setSelected(true);
|
||||||
mTwoLineTitleText.setTextColor(mController.getColorItemContent());
|
mTwoLineTitleText.setTextColor(mController.getColorItemContent());
|
||||||
mVolumeValueText.setTextColor(mController.getColorItemContent());
|
mVolumeValueText.setTextColor(mController.getColorItemContent());
|
||||||
mSeekBar.setProgressTintList(
|
mSeekBar.setProgressTintList(
|
||||||
@@ -417,7 +418,7 @@ public abstract class MediaOutputBaseAdapter extends
|
|||||||
mIconAreaLayout.setOnClickListener(listener);
|
mIconAreaLayout.setOnClickListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
void initMutingExpectedDevice() {
|
void initFakeActiveDevice() {
|
||||||
disableSeekBar();
|
disableSeekBar();
|
||||||
updateTitleIcon(R.drawable.media_output_icon_volume,
|
updateTitleIcon(R.drawable.media_output_icon_volume,
|
||||||
mController.getColorItemContent());
|
mController.getColorItemContent());
|
||||||
|
|||||||
@@ -279,6 +279,50 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
|
|||||||
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_bindConnectedRemoteDeviceWithOnGoingSession_verifyView() {
|
||||||
|
when(mMediaDevice1.hasOngoingSession()).thenReturn(true);
|
||||||
|
when(mMediaOutputController.getSelectableMediaDevice()).thenReturn(
|
||||||
|
ImmutableList.of());
|
||||||
|
when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(true);
|
||||||
|
mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
|
||||||
|
.onCreateViewHolder(new LinearLayout(mContext), 0);
|
||||||
|
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
|
||||||
|
|
||||||
|
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
|
||||||
|
assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_bindConnectedRemoteDeviceWithHostOnGoingSession_verifyView() {
|
||||||
|
when(mMediaDevice1.hasOngoingSession()).thenReturn(true);
|
||||||
|
when(mMediaDevice1.isHostForOngoingSession()).thenReturn(true);
|
||||||
|
when(mMediaOutputController.getSelectableMediaDevice()).thenReturn(
|
||||||
|
ImmutableList.of());
|
||||||
|
when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(true);
|
||||||
|
mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
|
||||||
|
.onCreateViewHolder(new LinearLayout(mContext), 0);
|
||||||
|
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
|
||||||
|
|
||||||
|
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
|
||||||
|
assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onBindViewHolder_bindConnectedDeviceWithMutingExpectedDeviceExist_verifyView() {
|
public void onBindViewHolder_bindConnectedDeviceWithMutingExpectedDeviceExist_verifyView() {
|
||||||
when(mMediaOutputController.hasMutingExpectedDevice()).thenReturn(true);
|
when(mMediaOutputController.hasMutingExpectedDevice()).thenReturn(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user