Merge "Don't use SysUI ScrimController for bubbles" into sc-v2-dev

This commit is contained in:
Mady Mellor
2021-07-29 22:36:54 +00:00
committed by Android (Google) Code Review
8 changed files with 58 additions and 212 deletions

View File

@@ -56,7 +56,6 @@ import android.graphics.Rect;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
@@ -98,7 +97,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
@@ -581,7 +579,7 @@ public class BubbleController {
/**
* BubbleStackView is lazily created by this method the first time a Bubble is added. This
* method initializes the stack view and adds it to the StatusBar just above the scrim.
* method initializes the stack view and adds it to window manager.
*/
private void ensureStackViewCreated() {
if (mStackView == null) {
@@ -629,7 +627,6 @@ public class BubbleController {
try {
mAddedToWindowManager = true;
mBubbleData.getOverflow().initialize(this);
mStackView.addView(mBubbleScrim);
mWindowManager.addView(mStackView, mWmLayoutParams);
// Position info is dependent on us being attached to a window
mBubblePositioner.update();
@@ -661,7 +658,6 @@ public class BubbleController {
mAddedToWindowManager = false;
if (mStackView != null) {
mWindowManager.removeView(mStackView);
mStackView.removeView(mBubbleScrim);
mBubbleData.getOverflow().cleanUpExpandedState();
} else {
Log.w(TAG, "StackView added to WindowManager, but was null when removing!");
@@ -763,13 +759,6 @@ public class BubbleController {
}
}
private void setBubbleScrim(View view, BiConsumer<Executor, Looper> callback) {
mBubbleScrim = view;
callback.accept(mMainExecutor, mMainExecutor.executeBlockingForResult(() -> {
return Looper.myLooper();
}, Looper.class));
}
private void setSysuiProxy(Bubbles.SysuiProxy proxy) {
mSysuiProxy = proxy;
}
@@ -1573,13 +1562,6 @@ public class BubbleController {
});
}
@Override
public void setBubbleScrim(View view, BiConsumer<Executor, Looper> callback) {
mMainExecutor.execute(() -> {
BubbleController.this.setBubbleScrim(view, callback);
});
}
@Override
public void setExpandListener(BubbleExpandListener listener) {
mMainExecutor.execute(() -> {

View File

@@ -19,6 +19,8 @@ package com.android.wm.shell.bubbles;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import static com.android.wm.shell.animation.Interpolators.ALPHA_IN;
import static com.android.wm.shell.animation.Interpolators.ALPHA_OUT;
import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_VIEW;
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
@@ -33,11 +35,11 @@ import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.Outline;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
@@ -122,6 +124,8 @@ public class BubbleStackView extends FrameLayout
private static final int EXPANDED_VIEW_ALPHA_ANIMATION_DURATION = 150;
private static final float SCRIM_ALPHA = 0.6f;
/**
* How long to wait to animate the stack temporarily invisible after a drag/flyout hide
* animation ends, if we are in fact temporarily invisible.
@@ -195,7 +199,7 @@ public class BubbleStackView extends FrameLayout
private StackAnimationController mStackAnimationController;
private ExpandedAnimationController mExpandedAnimationController;
private View mTaskbarScrim;
private View mScrim;
private FrameLayout mExpandedViewContainer;
/** Matrix used to scale the expanded view container with a given pivot point. */
@@ -858,11 +862,12 @@ public class BubbleStackView extends FrameLayout
mBubbleData.setExpanded(true);
});
mTaskbarScrim = new View(getContext());
mTaskbarScrim.setBackgroundColor(Color.BLACK);
addView(mTaskbarScrim);
mTaskbarScrim.setAlpha(0f);
mTaskbarScrim.setVisibility(GONE);
mScrim = new View(getContext());
mScrim.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mScrim.setBackgroundDrawable(new ColorDrawable(
getResources().getColor(android.R.color.system_neutral1_1000)));
addView(mScrim);
mScrim.setAlpha(0f);
mOrientationChangedListener =
(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
@@ -1220,6 +1225,8 @@ public class BubbleStackView extends FrameLayout
updateOverflow();
updateUserEdu();
updateExpandedViewTheme();
mScrim.setBackgroundDrawable(new ColorDrawable(
getResources().getColor(android.R.color.system_neutral1_1000)));
}
/**
@@ -1799,6 +1806,20 @@ public class BubbleStackView extends FrameLayout
mExpandedViewAlphaAnimator.start();
}
private void showScrim(boolean show) {
if (show) {
mScrim.animate()
.setInterpolator(ALPHA_IN)
.alpha(SCRIM_ALPHA)
.start();
} else {
mScrim.animate()
.alpha(0f)
.setInterpolator(ALPHA_OUT)
.start();
}
}
private void animateExpansion() {
cancelDelayedExpandCollapseSwitchAnimations();
final boolean showVertically = mPositioner.showBubblesVertically();
@@ -1808,6 +1829,7 @@ public class BubbleStackView extends FrameLayout
}
beforeExpandedViewAnimation();
showScrim(true);
updateZOrder();
updateBadges(false /* setBadgeForCollapsedStack */);
mBubbleContainer.setActiveController(mExpandedAnimationController);
@@ -1819,16 +1841,6 @@ public class BubbleStackView extends FrameLayout
}
} /* after */);
if (mPositioner.showingInTaskbar()
// Don't need the scrim when the bar is at the bottom
&& mPositioner.getTaskbarPosition() != BubblePositioner.TASKBAR_POSITION_BOTTOM) {
mTaskbarScrim.getLayoutParams().width = mPositioner.getTaskbarSize();
mTaskbarScrim.setTranslationX(mStackOnLeftOrWillBe
? 0f
: mPositioner.getAvailableRect().right - mPositioner.getTaskbarSize());
mTaskbarScrim.setVisibility(VISIBLE);
mTaskbarScrim.animate().alpha(1f).start();
}
final float translationY = mPositioner.getExpandedViewY(mExpandedBubble,
getBubbleIndex(mExpandedBubble));
mExpandedViewContainer.setTranslationX(0f);
@@ -1939,6 +1951,8 @@ public class BubbleStackView extends FrameLayout
mIsExpanded = false;
mIsExpansionAnimating = true;
showScrim(false);
mBubbleContainer.cancelAllAnimations();
// If we were in the middle of swapping, the animating-out surface would have been scaling
@@ -1956,10 +1970,6 @@ public class BubbleStackView extends FrameLayout
/* collapseTo */,
() -> mBubbleContainer.setActiveController(mStackAnimationController));
if (mTaskbarScrim.getVisibility() == VISIBLE) {
mTaskbarScrim.animate().alpha(0f).start();
}
int index;
if (mExpandedBubble != null && BubbleOverflow.KEY.equals(mExpandedBubble.getKey())) {
index = mBubbleData.getBubbles().size();
@@ -2027,10 +2037,6 @@ public class BubbleStackView extends FrameLayout
if (previouslySelected != null) {
previouslySelected.setTaskViewVisibility(false);
}
if (mPositioner.showingInTaskbar()) {
mTaskbarScrim.setVisibility(GONE);
}
})
.start();
}

View File

@@ -24,12 +24,10 @@ import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Looper;
import android.service.notification.NotificationListenerService.RankingMap;
import android.util.ArraySet;
import android.util.Pair;
import android.util.SparseArray;
import android.view.View;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -43,7 +41,6 @@ import java.lang.annotation.Target;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
@@ -160,14 +157,6 @@ public interface Bubbles {
/** Set the proxy to commnuicate with SysUi side components. */
void setSysuiProxy(SysuiProxy proxy);
/**
* Set the scrim view for bubbles.
*
* @param callback The callback made with the executor and the executor's looper that the view
* will be running on.
**/
void setBubbleScrim(View view, BiConsumer<Executor, Looper> callback);
/** Set a listener to be notified of bubble expand events. */
void setExpandListener(BubbleExpandListener listener);

View File

@@ -135,12 +135,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
*/
public static final float BUSY_SCRIM_ALPHA = 1f;
/**
* The default scrim under the expanded bubble stack.
* This should not be lower than 0.54, otherwise we won't pass GAR.
*/
public static final float BUBBLE_SCRIM_ALPHA = 0.6f;
/**
* Scrim opacity that can have text on top.
*/
@@ -156,8 +150,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
private ScrimView mScrimInFront;
private ScrimView mNotificationsScrim;
private ScrimView mScrimBehind;
@Nullable
private ScrimView mScrimForBubble;
private Runnable mScrimBehindChangeRunnable;
@@ -195,12 +187,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
private float mInFrontAlpha = NOT_INITIALIZED;
private float mBehindAlpha = NOT_INITIALIZED;
private float mNotificationsAlpha = NOT_INITIALIZED;
private float mBubbleAlpha = NOT_INITIALIZED;
private int mInFrontTint;
private int mBehindTint;
private int mNotificationsTint;
private int mBubbleTint;
private boolean mWallpaperVisibilityTimedOut;
private int mScrimsVisibility;
@@ -229,7 +219,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) {
mScrimStateListener = lightBarController::setScrimState;
mDefaultScrimAlpha = BUSY_SCRIM_ALPHA;
ScrimState.BUBBLE_EXPANDED.setBubbleAlpha(BUBBLE_SCRIM_ALPHA);
mKeyguardStateController = keyguardStateController;
mDarkenWhileDragging = !mKeyguardStateController.canDismissLockScreen();
@@ -276,11 +265,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
* Attach the controller to the supplied views.
*/
public void attachViews(ScrimView behindScrim, ScrimView notificationsScrim,
ScrimView scrimInFront, @Nullable ScrimView scrimForBubble) {
ScrimView scrimInFront) {
mNotificationsScrim = notificationsScrim;
mScrimBehind = behindScrim;
mScrimInFront = scrimInFront;
mScrimForBubble = scrimForBubble;
updateThemeColors();
behindScrim.enableBottomEdgeConcave(mClipsQsScrim);
@@ -293,8 +281,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
final ScrimState[] states = ScrimState.values();
for (int i = 0; i < states.length; i++) {
states[i].init(mScrimInFront, mScrimBehind, mScrimForBubble, mDozeParameters,
mDockManager);
states[i].init(mScrimInFront, mScrimBehind, mDozeParameters, mDockManager);
states[i].setScrimBehindAlphaKeyguard(mScrimBehindAlphaKeyguard);
states[i].setDefaultScrimAlpha(mDefaultScrimAlpha);
}
@@ -302,9 +289,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
mScrimBehind.setDefaultFocusHighlightEnabled(false);
mNotificationsScrim.setDefaultFocusHighlightEnabled(false);
mScrimInFront.setDefaultFocusHighlightEnabled(false);
if (mScrimForBubble != null) {
mScrimForBubble.setDefaultFocusHighlightEnabled(false);
}
updateScrims();
mKeyguardUpdateMonitor.registerCallback(mKeyguardVisibilityCallback);
}
@@ -627,11 +611,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
mInFrontTint = mState.getFrontTint();
mBehindTint = mState.getBehindTint();
mNotificationsTint = mState.getNotifTint();
mBubbleTint = mState.getBubbleTint();
mInFrontAlpha = mState.getFrontAlpha();
mBehindAlpha = mState.getBehindAlpha();
mBubbleAlpha = mState.getBubbleAlpha();
mNotificationsAlpha = mState.getNotifAlpha();
assertAlphasValid();
@@ -744,7 +726,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
setOrAdaptCurrentAnimation(mScrimBehind);
setOrAdaptCurrentAnimation(mNotificationsScrim);
setOrAdaptCurrentAnimation(mScrimInFront);
setOrAdaptCurrentAnimation(mScrimForBubble);
dispatchBackScrimState(mScrimBehind.getViewAlpha());
// Reset wallpaper timeout if it's already timeout like expanding panel while PULSING
@@ -852,11 +833,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
setScrimAlpha(mScrimBehind, mBehindAlpha);
setScrimAlpha(mNotificationsScrim, mNotificationsAlpha);
if (mScrimForBubble != null) {
boolean animateScrimForBubble = mScrimForBubble.getViewAlpha() != 0 && !mBlankScreen;
mScrimForBubble.setColors(mColors, animateScrimForBubble);
setScrimAlpha(mScrimForBubble, mBubbleAlpha);
}
// The animation could have all already finished, let's call onFinished just in case
onFinished(mState);
dispatchScrimsVisible();
@@ -909,8 +885,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
return "behind_scrim";
} else if (scrim == mNotificationsScrim) {
return "notifications_scrim";
} else if (scrim == mScrimForBubble) {
return "bubble_scrim";
}
return "unknown_scrim";
}
@@ -983,8 +957,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
return mBehindAlpha;
} else if (scrim == mNotificationsScrim) {
return mNotificationsAlpha;
} else if (scrim == mScrimForBubble) {
return mBubbleAlpha;
} else {
throw new IllegalArgumentException("Unknown scrim view");
}
@@ -997,8 +969,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
return mBehindTint;
} else if (scrim == mNotificationsScrim) {
return mNotificationsTint;
} else if (scrim == mScrimForBubble) {
return mBubbleTint;
} else {
throw new IllegalArgumentException("Unknown scrim view");
}
@@ -1030,8 +1000,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
}
if (isAnimating(mScrimBehind)
|| isAnimating(mNotificationsScrim)
|| isAnimating(mScrimInFront)
|| isAnimating(mScrimForBubble)) {
|| isAnimating(mScrimInFront)) {
if (callback != null && callback != mCallback) {
// Since we only notify the callback that we're finished once everything has
// finished, we need to make sure that any changing callbacks are also invoked
@@ -1058,13 +1027,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
mInFrontTint = Color.TRANSPARENT;
mBehindTint = mState.getBehindTint();
mNotificationsTint = mState.getNotifTint();
mBubbleTint = Color.TRANSPARENT;
updateScrimColor(mScrimInFront, mInFrontAlpha, mInFrontTint);
updateScrimColor(mScrimBehind, mBehindAlpha, mBehindTint);
updateScrimColor(mNotificationsScrim, mNotificationsAlpha, mNotificationsTint);
if (mScrimForBubble != null) {
updateScrimColor(mScrimForBubble, mBubbleAlpha, mBubbleTint);
}
}
}
@@ -1232,14 +1197,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
pw.print(" tint=0x");
pw.println(Integer.toHexString(mNotificationsScrim.getTint()));
pw.print(" bubbleScrim:");
pw.print(" viewAlpha=");
pw.print(mScrimForBubble.getViewAlpha());
pw.print(" alpha=");
pw.print(mBubbleAlpha);
pw.print(" tint=0x");
pw.println(Integer.toHexString(mScrimForBubble.getTint()));
pw.print(" mTracking=");
pw.println(mTracking);
pw.print(" mDefaultScrimAlpha=");

View File

@@ -19,8 +19,6 @@ package com.android.systemui.statusbar.phone;
import android.graphics.Color;
import android.os.Trace;
import androidx.annotation.Nullable;
import com.android.systemui.dock.DockManager;
import com.android.systemui.scrim.ScrimView;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
@@ -43,11 +41,9 @@ public enum ScrimState {
public void prepare(ScrimState previousState) {
mFrontTint = Color.BLACK;
mBehindTint = Color.BLACK;
mBubbleTint = previousState.mBubbleTint;
mFrontAlpha = 1f;
mBehindAlpha = 1f;
mBubbleAlpha = previousState.mBubbleAlpha;
mAnimationDuration = ScrimController.ANIMATION_DURATION_LONG;
}
@@ -81,12 +77,10 @@ public enum ScrimState {
mFrontTint = Color.BLACK;
mBehindTint = Color.BLACK;
mNotifTint = mClipQsScrim ? Color.BLACK : Color.TRANSPARENT;
mBubbleTint = Color.TRANSPARENT;
mFrontAlpha = 0;
mBehindAlpha = mClipQsScrim ? 1 : mScrimBehindAlphaKeyguard;
mNotifAlpha = mClipQsScrim ? mScrimBehindAlphaKeyguard : 0;
mBubbleAlpha = 0;
if (mClipQsScrim) {
updateScrimColor(mScrimBehind, 1f /* alpha */, Color.BLACK);
}
@@ -118,7 +112,6 @@ public enum ScrimState {
mNotifAlpha = mClipQsScrim ? mDefaultScrimAlpha : 0;
mNotifTint = Color.TRANSPARENT;
mFrontAlpha = 0f;
mBubbleAlpha = 0f;
}
},
@@ -129,7 +122,6 @@ public enum ScrimState {
@Override
public void prepare(ScrimState previousState) {
mBehindAlpha = 0;
mBubbleAlpha = 0f;
mFrontAlpha = mDefaultScrimAlpha;
}
},
@@ -139,7 +131,6 @@ public enum ScrimState {
public void prepare(ScrimState previousState) {
mBehindAlpha = mClipQsScrim ? 1 : mDefaultScrimAlpha;
mNotifAlpha = 1f;
mBubbleAlpha = 0f;
mFrontAlpha = 0f;
mBehindTint = Color.BLACK;
@@ -163,7 +154,6 @@ public enum ScrimState {
public void prepare(ScrimState previousState) {
mBehindAlpha = 0;
mFrontAlpha = 0;
mBubbleAlpha = 0;
}
},
@@ -185,9 +175,6 @@ public enum ScrimState {
mBehindTint = Color.BLACK;
mBehindAlpha = ScrimController.TRANSPARENT;
mBubbleTint = Color.TRANSPARENT;
mBubbleAlpha = ScrimController.TRANSPARENT;
mAnimationDuration = ScrimController.ANIMATION_DURATION_LONG;
// DisplayPowerManager may blank the screen for us, or we might blank it for ourselves
// by animating the screen off via the LightRevelScrim. In either case we just need to
@@ -214,7 +201,6 @@ public enum ScrimState {
@Override
public void prepare(ScrimState previousState) {
mFrontAlpha = mAodFrontScrimAlpha;
mBubbleAlpha = 0f;
mBehindTint = Color.BLACK;
mFrontTint = Color.BLACK;
mBlankScreen = mDisplayRequiresBlanking;
@@ -238,7 +224,6 @@ public enum ScrimState {
mBehindAlpha = mClipQsScrim ? 1 : 0;
mNotifAlpha = 0;
mFrontAlpha = 0;
mBubbleAlpha = 0;
mAnimationDuration = mKeyguardFadingAway
? mKeyguardFadingAwayDuration
@@ -248,21 +233,16 @@ public enum ScrimState {
mFrontTint = Color.TRANSPARENT;
mBehindTint = Color.BLACK;
mBubbleTint = Color.TRANSPARENT;
mBlankScreen = false;
if (previousState == ScrimState.AOD) {
// Set all scrims black, before they fade transparent.
updateScrimColor(mScrimInFront, 1f /* alpha */, Color.BLACK /* tint */);
updateScrimColor(mScrimBehind, 1f /* alpha */, Color.BLACK /* tint */);
if (mScrimForBubble != null) {
updateScrimColor(mScrimForBubble, 1f /* alpha */, Color.BLACK /* tint */);
}
// Scrims should still be black at the end of the transition.
mFrontTint = Color.BLACK;
mBehindTint = Color.BLACK;
mBubbleTint = Color.BLACK;
mBlankScreen = true;
}
@@ -280,7 +260,6 @@ public enum ScrimState {
public void prepare(ScrimState previousState) {
mFrontTint = Color.TRANSPARENT;
mBehindTint = Color.TRANSPARENT;
mBubbleTint = Color.BLACK;
mFrontAlpha = 0f;
mBehindAlpha = mDefaultScrimAlpha;
@@ -294,21 +273,18 @@ public enum ScrimState {
long mAnimationDuration = ScrimController.ANIMATION_DURATION;
int mFrontTint = Color.TRANSPARENT;
int mBehindTint = Color.TRANSPARENT;
int mBubbleTint = Color.TRANSPARENT;
int mNotifTint = Color.TRANSPARENT;
boolean mAnimateChange = true;
float mAodFrontScrimAlpha;
float mFrontAlpha;
float mBehindAlpha;
float mBubbleAlpha;
float mNotifAlpha;
float mScrimBehindAlphaKeyguard;
float mDefaultScrimAlpha;
ScrimView mScrimInFront;
ScrimView mScrimBehind;
@Nullable ScrimView mScrimForBubble;
DozeParameters mDozeParameters;
DockManager mDockManager;
@@ -321,11 +297,10 @@ public enum ScrimState {
long mKeyguardFadingAwayDuration;
boolean mClipQsScrim;
public void init(ScrimView scrimInFront, ScrimView scrimBehind, ScrimView scrimForBubble,
DozeParameters dozeParameters, DockManager dockManager) {
public void init(ScrimView scrimInFront, ScrimView scrimBehind, DozeParameters dozeParameters,
DockManager dockManager) {
mScrimInFront = scrimInFront;
mScrimBehind = scrimBehind;
mScrimForBubble = scrimForBubble;
mDozeParameters = dozeParameters;
mDockManager = dockManager;
@@ -352,10 +327,6 @@ public enum ScrimState {
return mNotifAlpha;
}
public float getBubbleAlpha() {
return mBubbleAlpha;
}
public int getFrontTint() {
return mFrontTint;
}
@@ -368,10 +339,6 @@ public enum ScrimState {
return mNotifTint;
}
public int getBubbleTint() {
return mBubbleTint;
}
public long getAnimationDuration() {
return mAnimationDuration;
}
@@ -409,10 +376,6 @@ public enum ScrimState {
mDefaultScrimAlpha = defaultScrimAlpha;
}
public void setBubbleAlpha(float alpha) {
mBubbleAlpha = alpha;
}
public void setWallpaperSupportsAmbientMode(boolean wallpaperSupportsAmbientMode) {
mWallpaperSupportsAmbientMode = wallpaperSupportsAmbientMode;
}

View File

@@ -1262,13 +1262,11 @@ public class StatusBar extends SystemUI implements
ScrimView notificationsScrim = mNotificationShadeWindowView
.findViewById(R.id.scrim_notifications);
ScrimView scrimInFront = mNotificationShadeWindowView.findViewById(R.id.scrim_in_front);
ScrimView scrimForBubble = mBubblesManagerOptional.isPresent()
? mBubblesManagerOptional.get().getScrimForBubble() : null;
mScrimController.setScrimVisibleListener(scrimsVisible -> {
mNotificationShadeWindowController.setScrimsVisibility(scrimsVisible);
});
mScrimController.attachViews(scrimBehind, notificationsScrim, scrimInFront, scrimForBubble);
mScrimController.attachViews(scrimBehind, notificationsScrim, scrimInFront);
mLightRevealScrim = mNotificationShadeWindowView.findViewById(R.id.light_reveal_scrim);
mLightRevealScrim.setRevealAmountListener(

View File

@@ -50,7 +50,6 @@ import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
import android.util.SparseArray;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -63,7 +62,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.scrim.ScrimView;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
@@ -80,7 +78,6 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.Di
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ZenModeController;
@@ -118,7 +115,6 @@ public class BubblesManager implements Dumpable {
private final NotifPipeline mNotifPipeline;
private final Executor mSysuiMainExecutor;
private ScrimView mBubbleScrim;
private final Bubbles.SysuiProxy mSysuiProxy;
// TODO (b/145659174): allow for multiple callbacks to support the "shadow" new notif pipeline
private final List<NotifCallback> mCallbacks = new ArrayList<>();
@@ -193,12 +189,6 @@ public class BubblesManager implements Dumpable {
ServiceManager.getService(Context.STATUS_BAR_SERVICE))
: statusBarService;
mBubbleScrim = new ScrimView(mContext);
mBubbleScrim.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mBubbles.setBubbleScrim(mBubbleScrim, (executor, looper) -> {
mBubbleScrim.setExecutor(executor, looper);
});
if (featureFlags.isNewNotifPipelineRenderingEnabled()) {
setupNotifPipeline();
} else {
@@ -602,15 +592,6 @@ public class BubblesManager implements Dumpable {
NotificationLogger.getNotificationLocation(entry)));
}
/**
* Returns the scrim drawn behind the bubble stack. This is managed by {@link ScrimController}
* since we want the scrim's appearance and behavior to be identical to that of the notification
* shade scrim.
*/
public ScrimView getScrimForBubble() {
return mBubbleScrim;
}
/**
* We intercept notification entries (including group summaries) dismissed by the user when
* there is an active bubble associated with it. We do this so that developers can still

View File

@@ -83,7 +83,6 @@ public class ScrimControllerTest extends SysuiTestCase {
private ScrimView mScrimBehind;
private ScrimView mNotificationsScrim;
private ScrimView mScrimInFront;
private ScrimView mScrimForBubble;
private ScrimState mScrimState;
private float mScrimBehindAlpha;
private GradientColors mScrimInFrontColor;
@@ -167,7 +166,6 @@ public class ScrimControllerTest extends SysuiTestCase {
endAnimation(mNotificationsScrim);
endAnimation(mScrimBehind);
endAnimation(mScrimInFront);
endAnimation(mScrimForBubble);
assertEquals("Animators did not finish",
mAnimatorListener.getNumStarts(), mAnimatorListener.getNumEnds());
@@ -190,7 +188,6 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimBehind = spy(new ScrimView(getContext()));
mScrimInFront = new ScrimView(getContext());
mScrimForBubble = new ScrimView(getContext());
mNotificationsScrim = new ScrimView(getContext());
mAlwaysOnEnabled = true;
mLooper = TestableLooper.get(this);
@@ -226,8 +223,7 @@ public class ScrimControllerTest extends SysuiTestCase {
mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()),
mUnlockedScreenOffAnimationController);
mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront,
mScrimForBubble);
mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront);
mScrimController.setAnimatorListener(mAnimatorListener);
mScrimController.setHasBackdrop(false);
@@ -257,8 +253,8 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false));
mScrimBehind, true
));
}
@Test
@@ -274,8 +270,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
}
@@ -293,8 +288,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
}
@@ -309,8 +303,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
@@ -329,8 +322,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
}
@@ -369,8 +361,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
}
@@ -389,8 +380,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
}
@@ -510,8 +500,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
// ... and when ambient goes dark, front scrim should be semi-transparent
@@ -549,8 +538,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, false,
mNotificationsScrim, false,
mScrimForBubble, false
mNotificationsScrim, false
));
}
@@ -570,8 +558,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mNotificationsScrim, false,
mScrimForBubble, false
mNotificationsScrim, false
));
}
@@ -627,8 +614,7 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimBehind, TRANSPARENT));
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, false,
mScrimForBubble, false
mScrimBehind, false
));
}
@@ -645,8 +631,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mNotificationsScrim, false,
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
// Back scrim should be visible after start dragging
@@ -664,8 +649,7 @@ public class ScrimControllerTest extends SysuiTestCase {
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, false,
mScrimForBubble, true
mScrimBehind, false
));
// Front scrim should be transparent
@@ -674,9 +658,6 @@ public class ScrimControllerTest extends SysuiTestCase {
// Back scrim should be visible
assertEquals(ScrimController.BUSY_SCRIM_ALPHA,
mScrimBehind.getViewAlpha(), 0.0f);
// Bubble scrim should be visible
assertEquals(ScrimController.BUBBLE_SCRIM_ALPHA,
mScrimForBubble.getViewAlpha(), 0.0f);
}
@Test
@@ -787,8 +768,7 @@ public class ScrimControllerTest extends SysuiTestCase {
// Immediately tinted black after the transition starts
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, true
mScrimBehind, true
));
finishAnimationsImmediately();
@@ -796,14 +776,12 @@ public class ScrimControllerTest extends SysuiTestCase {
// All scrims should be transparent at the end of fade transition.
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT,
mScrimForBubble, TRANSPARENT));
mScrimBehind, TRANSPARENT));
// Make sure at the very end of the animation, we're reset to transparent
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
mScrimBehind, true
));
}
@@ -821,8 +799,7 @@ public class ScrimControllerTest extends SysuiTestCase {
+ mScrimInFront.getViewAlpha(), mScrimInFront.getViewAlpha() > 0);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, true
mScrimBehind, true
));
Assert.assertSame("Scrim should be visible during transition.",
mScrimVisibility, OPAQUE);
@@ -1075,8 +1052,6 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimInFront.getDefaultFocusHighlightEnabled());
Assert.assertFalse("Scrim shouldn't have focus highlight",
mScrimBehind.getDefaultFocusHighlightEnabled());
Assert.assertFalse("Scrim shouldn't have focus highlight",
mScrimForBubble.getDefaultFocusHighlightEnabled());
}
@Test
@@ -1239,21 +1214,16 @@ public class ScrimControllerTest extends SysuiTestCase {
return "behind";
} else if (scrim == mNotificationsScrim) {
return "notifications";
} else if (scrim == mScrimForBubble) {
return "bubble";
}
return "unknown_scrim";
}
/**
* If {@link #mScrimForBubble} or {@link #mNotificationsScrim} is not passed in the map
* If {@link #mNotificationsScrim} is not passed in the map
* we assume it must be transparent
*/
private void assertScrimAlpha(Map<ScrimView, Integer> scrimToAlpha) {
// Check single scrim visibility.
if (!scrimToAlpha.containsKey(mScrimForBubble)) {
assertScrimAlpha(mScrimForBubble, TRANSPARENT);
}
if (!scrimToAlpha.containsKey(mNotificationsScrim)) {
assertScrimAlpha(mNotificationsScrim, TRANSPARENT);
}