Merge changes I30a2fa4f,I1abd1561 into rvc-dev

* changes:
  Fix cliping when the media player is fully clipped off
  Fixed some cases where we were animating Qs even though we shouldn't
This commit is contained in:
TreeHugger Robot
2020-06-23 06:52:30 +00:00
committed by Android (Google) Code Review
4 changed files with 61 additions and 10 deletions

View File

@@ -15,6 +15,7 @@ import com.android.systemui.plugins.FalsingManager
import com.android.systemui.qs.PageIndicator
import com.android.systemui.statusbar.notification.VisualStabilityManager
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.Utils
import com.android.systemui.util.animation.UniqueObjectHostView
import com.android.systemui.util.animation.requiresRemeasuring
import com.android.systemui.util.concurrency.DelayableExecutor
@@ -150,8 +151,15 @@ class MediaCarouselController @Inject constructor(
mediaManager.addListener(object : MediaDataManager.Listener {
override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) {
oldKey?.let { mediaData.remove(it) }
mediaData.put(key, data)
addOrUpdatePlayer(key, oldKey, data)
if (!data.active && !Utils.useMediaResumption(context)) {
// This view is inactive, let's remove this! This happens e.g when dismissing /
// timing out a view. We still have the data around because resumption could
// be on, but we should save the resources and release this.
onMediaDataRemoved(key)
} else {
mediaData.put(key, data)
addOrUpdatePlayer(key, oldKey, data)
}
}
override fun onMediaDataRemoved(key: String) {

View File

@@ -139,6 +139,18 @@ class MediaHierarchyManager @Inject constructor(
}
}
/**
* Is the shade currently collapsing from the expanded qs? If we're on the lockscreen and in qs,
* we wouldn't want to transition in that case.
*/
var collapsingShadeFromQS: Boolean = false
set(value) {
if (field != value) {
field = value
updateDesiredLocation(forceNoAnimation = true)
}
}
/**
* Are location changes currently blocked?
*/
@@ -160,6 +172,19 @@ class MediaHierarchyManager @Inject constructor(
}
}
/**
* Are we currently fullyAwake
*/
private var fullyAwake: Boolean = false
set(value) {
if (field != value) {
field = value
if (value) {
updateDesiredLocation(forceNoAnimation = true)
}
}
}
/**
* Is the doze animation currently Running
*/
@@ -206,10 +231,12 @@ class MediaHierarchyManager @Inject constructor(
override fun onStartedGoingToSleep() {
goingToSleep = true
fullyAwake = false
}
override fun onFinishedWakingUp() {
goingToSleep = false
fullyAwake = true
}
override fun onStartedWakingUp() {
@@ -531,6 +558,18 @@ class MediaHierarchyManager @Inject constructor(
!statusBarStateController.isDozing) {
return LOCATION_QS
}
if (location == LOCATION_LOCKSCREEN && desiredLocation == LOCATION_QS &&
collapsingShadeFromQS) {
// When collapsing on the lockscreen, we want to remain in QS
return LOCATION_QS
}
if (location != LOCATION_LOCKSCREEN && desiredLocation == LOCATION_LOCKSCREEN
&& !fullyAwake) {
// When unlocking from dozing / while waking up, the media shouldn't be transitioning
// in an animated way. Let's keep it in the lockscreen until we're fully awake and
// reattach it without an animation
return LOCATION_LOCKSCREEN
}
return location
}

View File

@@ -443,6 +443,7 @@ public class NotificationPanelViewController extends PanelViewController {
*/
private boolean mDelayShowingKeyguardStatusBar;
private boolean mAnimatingQS;
private int mOldLayoutDirection;
private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() {
@@ -1860,6 +1861,7 @@ public class NotificationPanelViewController extends PanelViewController {
@Override
public void onAnimationEnd(Animator animation) {
mAnimatingQS = false;
notifyExpandingFinished();
mNotificationStackScroller.resetCheckSnoozeLeavebehind();
mQsExpansionAnimator = null;
@@ -1868,6 +1870,9 @@ public class NotificationPanelViewController extends PanelViewController {
}
}
});
// Let's note that we're animating QS. Moving the animator here will cancel it immediately,
// so we need a separate flag.
mAnimatingQS = true;
animator.start();
mQsExpansionAnimator = animator;
mQsAnimatorExpand = expanding;
@@ -2220,6 +2225,9 @@ public class NotificationPanelViewController extends PanelViewController {
mNotificationStackScroller.onExpansionStarted();
mIsExpanding = true;
mQsExpandedWhenExpandingStarted = mQsFullyExpanded;
mMediaHierarchyManager.setCollapsingShadeFromQS(mQsExpandedWhenExpandingStarted &&
/* We also start expanding when flinging closed Qs. Let's exclude that */
!mAnimatingQS);
if (mQsExpanded) {
onQsExpansionStarted();
}
@@ -2236,6 +2244,7 @@ public class NotificationPanelViewController extends PanelViewController {
mHeadsUpManager.onExpandingFinished();
mConversationNotificationManager.onNotificationPanelExpandStateChanged(isFullyCollapsed());
mIsExpanding = false;
mMediaHierarchyManager.setCollapsingShadeFromQS(false);
if (isFullyCollapsed()) {
DejankUtils.postAfterTraversal(new Runnable() {
@Override

View File

@@ -150,15 +150,10 @@ class TransitionLayout @JvmOverloads constructor(
}
override fun dispatchDraw(canvas: Canvas?) {
val clip = !boundsRect.isEmpty
if (clip) {
canvas?.save()
canvas?.clipRect(boundsRect)
}
canvas?.save()
canvas?.clipRect(boundsRect)
super.dispatchDraw(canvas)
if (clip) {
canvas?.restore()
}
canvas?.restore()
}
private fun updateBounds() {