Merge "Hide animated ghost when underlying view is detached from window." into udc-dev

This commit is contained in:
Luca Zuccarini
2023-06-22 12:26:00 +00:00
committed by Android (Google) Code Review
4 changed files with 14 additions and 8 deletions

View File

@@ -34,7 +34,6 @@ import android.view.ViewGroup
import android.view.ViewGroupOverlay import android.view.ViewGroupOverlay
import android.widget.FrameLayout import android.widget.FrameLayout
import com.android.internal.jank.InteractionJankMonitor import com.android.internal.jank.InteractionJankMonitor
import java.lang.IllegalArgumentException
import java.util.LinkedList import java.util.LinkedList
import kotlin.math.min import kotlin.math.min
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -240,7 +239,7 @@ constructor(
val ghostView = this.ghostView ?: return val ghostView = this.ghostView ?: return
val backgroundView = this.backgroundView!! val backgroundView = this.backgroundView!!
if (!state.visible) { if (!state.visible || !ghostedView.isAttachedToWindow) {
if (ghostView.visibility == View.VISIBLE) { if (ghostView.visibility == View.VISIBLE) {
// Making the ghost view invisible will make the ghosted view visible, so order is // Making the ghost view invisible will make the ghosted view visible, so order is
// important here. // important here.

View File

@@ -28,6 +28,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.broadcast.BroadcastSender; import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
@@ -36,11 +37,14 @@ import com.android.systemui.dagger.SysUISingleton;
*/ */
@SysUISingleton @SysUISingleton
public class MediaOutputDialog extends MediaOutputBaseDialog { public class MediaOutputDialog extends MediaOutputBaseDialog {
final UiEventLogger mUiEventLogger; private final DialogLaunchAnimator mDialogLaunchAnimator;
private final UiEventLogger mUiEventLogger;
MediaOutputDialog(Context context, boolean aboveStatusbar, BroadcastSender broadcastSender, MediaOutputDialog(Context context, boolean aboveStatusbar, BroadcastSender broadcastSender,
MediaOutputController mediaOutputController, UiEventLogger uiEventLogger) { MediaOutputController mediaOutputController, DialogLaunchAnimator dialogLaunchAnimator,
UiEventLogger uiEventLogger) {
super(context, broadcastSender, mediaOutputController); super(context, broadcastSender, mediaOutputController);
mDialogLaunchAnimator = dialogLaunchAnimator;
mUiEventLogger = uiEventLogger; mUiEventLogger = uiEventLogger;
mAdapter = new MediaOutputAdapter(mMediaOutputController); mAdapter = new MediaOutputAdapter(mMediaOutputController);
if (!aboveStatusbar) { if (!aboveStatusbar) {
@@ -138,6 +142,7 @@ public class MediaOutputDialog extends MediaOutputBaseDialog {
} }
} else { } else {
mMediaOutputController.releaseSession(); mMediaOutputController.releaseSession();
mDialogLaunchAnimator.disableAllCurrentDialogsExitAnimations();
dismiss(); dismiss();
} }
} }

View File

@@ -28,11 +28,11 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager
import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.animation.DialogLaunchAnimator
import com.android.systemui.broadcast.BroadcastSender import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.media.nearby.NearbyMediaDevicesManager import com.android.systemui.media.nearby.NearbyMediaDevicesManager
import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.settings.UserTracker import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
import java.util.Optional import java.util.Optional
import javax.inject.Inject import javax.inject.Inject
@@ -71,7 +71,8 @@ class MediaOutputDialogFactory @Inject constructor(
dialogLaunchAnimator, nearbyMediaDevicesManagerOptional, audioManager, dialogLaunchAnimator, nearbyMediaDevicesManagerOptional, audioManager,
powerExemptionManager, keyGuardManager, featureFlags, userTracker) powerExemptionManager, keyGuardManager, featureFlags, userTracker)
val dialog = val dialog =
MediaOutputDialog(context, aboveStatusBar, broadcastSender, controller, uiEventLogger) MediaOutputDialog(context, aboveStatusBar, broadcastSender, controller,
dialogLaunchAnimator, uiEventLogger)
mediaOutputDialog = dialog mediaOutputDialog = dialog
// Show the dialog. // Show the dialog.

View File

@@ -356,6 +356,7 @@ public class MediaOutputDialogTest extends SysuiTestCase {
}); });
verify(mockMediaOutputController).releaseSession(); verify(mockMediaOutputController).releaseSession();
verify(mDialogLaunchAnimator).disableAllCurrentDialogsExitAnimations();
} }
@Test @Test
@@ -371,7 +372,7 @@ public class MediaOutputDialogTest extends SysuiTestCase {
@NonNull @NonNull
private MediaOutputDialog makeTestDialog(MediaOutputController controller) { private MediaOutputDialog makeTestDialog(MediaOutputController controller) {
return new MediaOutputDialog(mContext, false, mBroadcastSender, return new MediaOutputDialog(mContext, false, mBroadcastSender,
controller, mUiEventLogger); controller, mDialogLaunchAnimator, mUiEventLogger);
} }
private void withTestDialog(MediaOutputController controller, Consumer<MediaOutputDialog> c) { private void withTestDialog(MediaOutputController controller, Consumer<MediaOutputDialog> c) {