Merge "Send -1.0 when brightness is off" into sc-dev
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 9210d6f..2dcdd07 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -5070,7 +5070,7 @@
if (profileBadge != null) {
contentView.setImageViewBitmap(R.id.profile_badge, profileBadge);
contentView.setViewVisibility(R.id.profile_badge, View.VISIBLE);
- if (isColorized(p)) {
+ if (isBackgroundColorized(p)) {
contentView.setDrawableTint(R.id.profile_badge, false,
getPrimaryTextColor(p), PorterDuff.Mode.SRC_ATOP);
}
@@ -5257,7 +5257,7 @@
private void updateBackgroundColor(RemoteViews contentView,
StandardTemplateParams p) {
- if (isColorized(p)) {
+ if (isBackgroundColorized(p)) {
contentView.setInt(R.id.status_bar_latest_event_content, "setBackgroundColor",
getBackgroundColor(p));
} else {
@@ -5541,8 +5541,14 @@
return true;
}
- private boolean isColorized(StandardTemplateParams p) {
- return p.allowColorization && mN.isColorized();
+ /**
+ * Determines if the notification should be colorized *for the purposes of applying colors*.
+ * If this is the minimized view of a colorized notification, or if the app did not provide
+ * a color to colorize with, this will return false so that internal coloring logic can
+ * still render the notification normally.
+ */
+ private boolean isBackgroundColorized(StandardTemplateParams p) {
+ return p.allowColorization && mN.color != COLOR_DEFAULT && mN.isColorized();
}
private boolean isCallActionColorCustomizable() {
@@ -5550,7 +5556,8 @@
// that is only used for disallowing colorization of headers for the minimized state,
// and neither of those conditions applies when showing actions.
// Not requiring StandardTemplateParams as an argument simplifies the creation process.
- return mN.isColorized() && mContext.getResources().getBoolean(
+ return mN.color != COLOR_DEFAULT && mN.isColorized()
+ && mContext.getResources().getBoolean(
R.bool.config_callNotificationActionColorsRequireColorized);
}
@@ -5594,7 +5601,8 @@
private void bindSnoozeAction(RemoteViews big, StandardTemplateParams p) {
boolean hideSnoozeButton = mN.isForegroundService() || mN.fullScreenIntent != null
- || isColorized(p) || p.mViewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP;
+ || isBackgroundColorized(p)
+ || p.mViewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP;
big.setBoolean(R.id.snooze_button, "setEnabled", !hideSnoozeButton);
if (hideSnoozeButton) {
// Only hide; NotificationContentView will show it when it adds the click listener
@@ -6110,7 +6118,7 @@
background = outResultColor[0].getDefaultColor();
textColor = ContrastColorUtil.resolvePrimaryColor(mContext,
background, mInNightMode);
- } else if (mTintActionButtons && !mInNightMode && !isColorized(p)) {
+ } else if (mTintActionButtons && !mInNightMode && !isBackgroundColorized(p)) {
textColor = getAccentColor(p);
} else {
textColor = getPrimaryTextColor(p);
@@ -6276,14 +6284,15 @@
* Gets the standard action button color
*/
private @ColorInt int getStandardActionColor(Notification.StandardTemplateParams p) {
- return mTintActionButtons || isColorized(p) ? getAccentColor(p) : getNeutralColor(p);
+ return mTintActionButtons || isBackgroundColorized(p)
+ ? getAccentColor(p) : getNeutralColor(p);
}
/**
* Gets a neutral color that can be used for icons or similar that should not stand out.
*/
private @ColorInt int getHeaderIconColor(StandardTemplateParams p) {
- return isColorized(p) ? getSecondaryTextColor(p) : getNeutralColor(p);
+ return isBackgroundColorized(p) ? getSecondaryTextColor(p) : getNeutralColor(p);
}
/**
@@ -6300,7 +6309,7 @@
* {@link #getSmallIconColor(StandardTemplateParams)}.
*/
private @ColorInt int getAccentColor(StandardTemplateParams p) {
- if (isColorized(p)) {
+ if (isBackgroundColorized(p)) {
return getPrimaryTextColor(p);
}
int color = obtainThemeColor(R.attr.colorAccent, COLOR_INVALID);
@@ -6315,7 +6324,7 @@
* color when colorized, or when not using theme color tints.
*/
private @ColorInt int getProtectionColor(StandardTemplateParams p) {
- if (!isColorized(p)) {
+ if (!isBackgroundColorized(p)) {
int color = obtainThemeColor(R.attr.colorBackgroundFloating, COLOR_INVALID);
if (color != COLOR_INVALID) {
return color;
@@ -6329,7 +6338,7 @@
* Gets the theme's error color, or the primary text color for colorized notifications.
*/
private @ColorInt int getErrorColor(StandardTemplateParams p) {
- if (!isColorized(p)) {
+ if (!isBackgroundColorized(p)) {
int color = obtainThemeColor(R.attr.colorError, COLOR_INVALID);
if (color != COLOR_INVALID) {
return color;
@@ -6350,7 +6359,7 @@
* Gets the contrast-adjusted version of the color provided by the app.
*/
private @ColorInt int getContrastColor(StandardTemplateParams p) {
- if (isColorized(p)) {
+ if (isBackgroundColorized(p)) {
return getPrimaryTextColor(p);
}
int rawColor = getRawColor(p);
@@ -6493,7 +6502,6 @@
+ " notification: " + mN.mShortcutId
+ " vs bubble: " + mN.mBubbleMetadata.getShortcutId());
}
- validateColorizedHasColor();
// first, add any extras from the calling code
if (mUserExtras != null) {
@@ -6547,21 +6555,6 @@
return mN;
}
- // This code is executed on behalf of other apps' notifications, sometimes even by 3p apps,
- // a use case that is not supported by the Compat Framework library.
- @SuppressWarnings("AndroidFrameworkCompatChange")
- private void validateColorizedHasColor() {
- if (mN.color == COLOR_DEFAULT && mN.extras.getBoolean(EXTRA_COLORIZED)) {
- if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.S) {
- throw new IllegalArgumentException(
- "Colorized notifications must set a color (other than COLOR_DEFAULT).");
- } else {
- Log.w(TAG, "Colorized notifications must set a color (other than "
- + "COLOR_DEFAULT). This is required for apps targeting S.");
- }
- }
- }
-
/**
* Returns the color for the given Theme.DeviceDefault.DayNight attribute, or
* defValue if that could not be completed
@@ -6694,7 +6687,7 @@
* which must be resolved by the caller before being used.
*/
private @ColorInt int getUnresolvedBackgroundColor(StandardTemplateParams p) {
- return isColorized(p) ? getRawColor(p) : COLOR_DEFAULT;
+ return isBackgroundColorized(p) ? getRawColor(p) : COLOR_DEFAULT;
}
/**
@@ -6880,12 +6873,14 @@
}
/**
- * @return true if this notification is colorized.
+ * @return true if this notification is colorized *for the purposes of ranking*. If the
+ * {@link #color} is {@link #COLOR_DEFAULT} this will be true, even though the actual
+ * appearance of the notification may not be "colorized".
*
* @hide
*/
public boolean isColorized() {
- return color != COLOR_DEFAULT && extras.getBoolean(EXTRA_COLORIZED)
+ return extras.getBoolean(EXTRA_COLORIZED)
&& (hasColorizedPermission() || isForegroundService());
}
diff --git a/core/java/com/android/internal/jank/FrameTracker.java b/core/java/com/android/internal/jank/FrameTracker.java
index 4d3f774..4d5b90a 100644
--- a/core/java/com/android/internal/jank/FrameTracker.java
+++ b/core/java/com/android/internal/jank/FrameTracker.java
@@ -167,6 +167,7 @@
if (mBeginVsyncId != INVALID_ID) {
mSurfaceControlWrapper.addJankStatsListener(
FrameTracker.this, mSurfaceControl);
+ postTraceStartMarker();
}
}
}
@@ -208,15 +209,9 @@
public synchronized void begin() {
mBeginVsyncId = mChoreographer.getVsyncId() + 1;
mSession.setTimeStamp(System.nanoTime());
- mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> {
- synchronized (FrameTracker.this) {
- if (mCancelled || mEndVsyncId != INVALID_ID) {
- return;
- }
- mTracingStarted = true;
- Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId);
- }
- }, null);
+ if (mSurfaceControl != null) {
+ postTraceStartMarker();
+ }
mRendererWrapper.addObserver(mObserver);
if (DEBUG) {
Log.d(TAG, "begin: " + mSession.getName() + ", begin=" + mBeginVsyncId);
@@ -229,6 +224,18 @@
}
}
+ private void postTraceStartMarker() {
+ mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> {
+ synchronized (FrameTracker.this) {
+ if (mCancelled || mEndVsyncId != INVALID_ID) {
+ return;
+ }
+ mTracingStarted = true;
+ Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId);
+ }
+ }, null);
+ }
+
/**
* End the trace session of the CUJ.
*/
diff --git a/libs/WindowManager/Shell/res/values/config.xml b/libs/WindowManager/Shell/res/values/config.xml
index edf000b..bbbbe69 100644
--- a/libs/WindowManager/Shell/res/values/config.xml
+++ b/libs/WindowManager/Shell/res/values/config.xml
@@ -52,6 +52,12 @@
when the PIP menu is shown in center. -->
<string translatable="false" name="pip_menu_bounds">"596 280 1324 690"</string>
+ <!-- Animation duration when exit starting window: fade out icon -->
+ <integer name="starting_window_app_reveal_icon_fade_out_duration">133</integer>
+
<!-- Animation duration when exit starting window: reveal app -->
- <integer name="starting_window_app_reveal_anim_duration">333</integer>
+ <integer name="starting_window_app_reveal_anim_delay">83</integer>
+
+ <!-- Animation duration when exit starting window: reveal app -->
+ <integer name="starting_window_app_reveal_anim_duration">266</integer>
</resources>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java
index 3fe57c6..c303a33 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java
@@ -20,6 +20,7 @@
import android.animation.Animator;
import android.animation.ValueAnimator;
+import android.content.Context;
import android.graphics.BlendMode;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -29,6 +30,7 @@
import android.graphics.RadialGradient;
import android.graphics.Rect;
import android.graphics.Shader;
+import android.util.MathUtils;
import android.util.Slog;
import android.view.Choreographer;
import android.view.SurfaceControl;
@@ -38,10 +40,10 @@
import android.view.WindowManager;
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
-import android.view.animation.Transformation;
-import android.view.animation.TranslateYAnimation;
import android.window.SplashScreenView;
+import com.android.wm.shell.R;
+import com.android.wm.shell.animation.Interpolators;
import com.android.wm.shell.common.TransactionPool;
/**
@@ -53,52 +55,64 @@
private static final boolean DEBUG_EXIT_ANIMATION_BLEND = false;
private static final String TAG = StartingSurfaceDrawer.TAG;
- private static final Interpolator APP_EXIT_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f);
+ private static final Interpolator ICON_INTERPOLATOR = new PathInterpolator(0.15f, 0f, 1f, 1f);
+ private static final Interpolator MASK_RADIUS_INTERPOLATOR =
+ new PathInterpolator(0f, 0f, 0.4f, 1f);
+ private static final Interpolator SHIFT_UP_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f);
- private final Matrix mTmpTransform = new Matrix();
private final SurfaceControl mFirstWindowSurface;
private final Rect mFirstWindowFrame = new Rect();
private final SplashScreenView mSplashScreenView;
private final int mMainWindowShiftLength;
- private final int mAppDuration;
+ private final int mIconFadeOutDuration;
+ private final int mAppRevealDelay;
+ private final int mAppRevealDuration;
+ private final int mAnimationDuration;
+ private final float mIconStartAlpha;
private final TransactionPool mTransactionPool;
private ValueAnimator mMainAnimator;
private ShiftUpAnimation mShiftUpAnimation;
+ private RadialVanishAnimation mRadialVanishAnimation;
private Runnable mFinishCallback;
- SplashScreenExitAnimation(SplashScreenView view, SurfaceControl leash, Rect frame,
- int appDuration, int mainWindowShiftLength, TransactionPool pool,
- Runnable handleFinish) {
+ SplashScreenExitAnimation(Context context, SplashScreenView view, SurfaceControl leash,
+ Rect frame, int mainWindowShiftLength, TransactionPool pool, Runnable handleFinish) {
mSplashScreenView = view;
mFirstWindowSurface = leash;
if (frame != null) {
mFirstWindowFrame.set(frame);
}
- mAppDuration = appDuration;
+
+ View iconView = view.getIconView();
+ if (iconView == null) {
+ mIconFadeOutDuration = 0;
+ mIconStartAlpha = 0;
+ mAppRevealDelay = 0;
+ } else {
+ iconView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ mIconFadeOutDuration = context.getResources().getInteger(
+ R.integer.starting_window_app_reveal_icon_fade_out_duration);
+ mAppRevealDelay = context.getResources().getInteger(
+ R.integer.starting_window_app_reveal_anim_delay);
+ mIconStartAlpha = iconView.getAlpha();
+ }
+ mAppRevealDuration = context.getResources().getInteger(
+ R.integer.starting_window_app_reveal_anim_duration);
+ mAnimationDuration = Math.max(mIconFadeOutDuration, mAppRevealDelay + mAppRevealDuration);
mMainWindowShiftLength = mainWindowShiftLength;
mFinishCallback = handleFinish;
mTransactionPool = pool;
}
void startAnimations() {
- prepareRevealAnimation();
- if (mMainAnimator != null) {
- mMainAnimator.start();
- }
- if (mShiftUpAnimation != null) {
- mShiftUpAnimation.start();
- }
+ mMainAnimator = createAnimator();
+ mMainAnimator.start();
}
- // reveal splash screen, shift up main window
- private void prepareRevealAnimation() {
- // splash screen
- mMainAnimator = ValueAnimator.ofFloat(0f, 1f);
- mMainAnimator.setDuration(mAppDuration);
- mMainAnimator.setInterpolator(APP_EXIT_INTERPOLATOR);
- mMainAnimator.addListener(this);
-
+ // fade out icon, reveal app, shift up main window
+ private ValueAnimator createAnimator() {
+ // reveal app
final float transparentRatio = 0.8f;
final int globalHeight = mSplashScreenView.getHeight();
final int verticalCircleCenter = 0;
@@ -106,14 +120,13 @@
final int halfWidth = mSplashScreenView.getWidth() / 2;
final int endRadius = (int) (0.5 + (1f / transparentRatio * (int)
Math.sqrt(finalVerticalLength * finalVerticalLength + halfWidth * halfWidth)));
- final RadialVanishAnimation radialVanishAnimation = new RadialVanishAnimation(
- mSplashScreenView, mMainAnimator);
- radialVanishAnimation.setCircleCenter(halfWidth, verticalCircleCenter);
- radialVanishAnimation.setRadius(0/* initRadius */, endRadius);
- final int[] colors = {Color.TRANSPARENT, Color.TRANSPARENT, Color.WHITE};
+ final int[] colors = {Color.WHITE, Color.WHITE, Color.TRANSPARENT};
final float[] stops = {0f, transparentRatio, 1f};
- radialVanishAnimation.setRadialPaintParam(colors, stops);
- radialVanishAnimation.setReady();
+
+ mRadialVanishAnimation = new RadialVanishAnimation(mSplashScreenView);
+ mRadialVanishAnimation.setCircleCenter(halfWidth, verticalCircleCenter);
+ mRadialVanishAnimation.setRadius(0 /* initRadius */, endRadius);
+ mRadialVanishAnimation.setRadialPaintParam(colors, stops);
if (mFirstWindowSurface != null && mFirstWindowSurface.isValid()) {
// shift up main window
@@ -128,38 +141,47 @@
mSplashScreenView.addView(occludeHoleView, params);
mShiftUpAnimation = new ShiftUpAnimation(0, -mMainWindowShiftLength, occludeHoleView);
- mShiftUpAnimation.setDuration(mAppDuration);
- mShiftUpAnimation.setInterpolator(APP_EXIT_INTERPOLATOR);
-
- occludeHoleView.setAnimation(mShiftUpAnimation);
}
+
+ ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
+ animator.setDuration(mAnimationDuration);
+ animator.setInterpolator(Interpolators.LINEAR);
+ animator.addListener(this);
+ animator.addUpdateListener(a -> onAnimationProgress((float) a.getAnimatedValue()));
+ return animator;
}
private static class RadialVanishAnimation extends View {
private final SplashScreenView mView;
private int mInitRadius;
private int mFinishRadius;
- private boolean mReady;
private final Point mCircleCenter = new Point();
private final Matrix mVanishMatrix = new Matrix();
private final Paint mVanishPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- RadialVanishAnimation(SplashScreenView target, ValueAnimator animator) {
+ RadialVanishAnimation(SplashScreenView target) {
super(target.getContext());
mView = target;
- animator.addUpdateListener((animation) -> {
- if (mVanishPaint.getShader() == null) {
- return;
- }
- final float value = (float) animation.getAnimatedValue();
- final float scale = (mFinishRadius - mInitRadius) * value + mInitRadius;
- mVanishMatrix.setScale(scale, scale);
- mVanishMatrix.postTranslate(mCircleCenter.x, mCircleCenter.y);
- mVanishPaint.getShader().setLocalMatrix(mVanishMatrix);
- postInvalidate();
- });
mView.addView(this);
+ mVanishPaint.setAlpha(0);
+ }
+
+ void onAnimationProgress(float linearProgress) {
+ if (mVanishPaint.getShader() == null) {
+ return;
+ }
+
+ final float radiusProgress = MASK_RADIUS_INTERPOLATOR.getInterpolation(linearProgress);
+ final float alphaProgress = Interpolators.ALPHA_OUT.getInterpolation(linearProgress);
+ final float scale = mInitRadius + (mFinishRadius - mInitRadius) * radiusProgress;
+
+ mVanishMatrix.setScale(scale, scale);
+ mVanishMatrix.postTranslate(mCircleCenter.x, mCircleCenter.y);
+ mVanishPaint.getShader().setLocalMatrix(mVanishMatrix);
+ mVanishPaint.setAlpha(Math.round(0xFF * alphaProgress));
+
+ postInvalidate();
}
void setRadius(int initRadius, int finishRadius) {
@@ -184,38 +206,44 @@
new RadialGradient(0, 0, 1, colors, stops, Shader.TileMode.CLAMP);
mVanishPaint.setShader(rShader);
if (!DEBUG_EXIT_ANIMATION_BLEND) {
- mVanishPaint.setBlendMode(BlendMode.MODULATE);
+ // We blend the reveal gradient with the splash screen using DST_OUT so that the
+ // splash screen is fully visible when radius = 0 (or gradient opacity is 0) and
+ // fully invisible when radius = finishRadius AND gradient opacity is 1.
+ mVanishPaint.setBlendMode(BlendMode.DST_OUT);
}
}
- void setReady() {
- mReady = true;
- }
-
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
- if (mReady) {
- canvas.drawRect(0, 0, mView.getWidth(), mView.getHeight(), mVanishPaint);
- }
+ canvas.drawRect(0, 0, mView.getWidth(), mView.getHeight(), mVanishPaint);
}
}
- private final class ShiftUpAnimation extends TranslateYAnimation {
- final SyncRtSurfaceTransactionApplier mApplier;
- ShiftUpAnimation(float fromYDelta, float toYDelta, View targetView) {
- super(fromYDelta, toYDelta);
- mApplier = new SyncRtSurfaceTransactionApplier(targetView);
+ private final class ShiftUpAnimation {
+ private final float mFromYDelta;
+ private final float mToYDelta;
+ private final View mOccludeHoleView;
+ private final SyncRtSurfaceTransactionApplier mApplier;
+ private final Matrix mTmpTransform = new Matrix();
+
+ ShiftUpAnimation(float fromYDelta, float toYDelta, View occludeHoleView) {
+ mFromYDelta = fromYDelta;
+ mToYDelta = toYDelta;
+ mOccludeHoleView = occludeHoleView;
+ mApplier = new SyncRtSurfaceTransactionApplier(occludeHoleView);
}
- @Override
- protected void applyTransformation(float interpolatedTime, Transformation t) {
- super.applyTransformation(interpolatedTime, t);
-
+ void onAnimationProgress(float linearProgress) {
if (mFirstWindowSurface == null || !mFirstWindowSurface.isValid()) {
return;
}
- mTmpTransform.set(t.getMatrix());
+
+ final float progress = SHIFT_UP_INTERPOLATOR.getInterpolation(linearProgress);
+ final float dy = mFromYDelta + (mToYDelta - mFromYDelta) * progress;
+
+ mOccludeHoleView.setTranslationY(dy);
+ mTmpTransform.setTranslate(0 /* dx */, dy);
// set the vsyncId to ensure the transaction doesn't get applied too early.
final SurfaceControl.Transaction tx = mTransactionPool.acquire();
@@ -290,4 +318,32 @@
public void onAnimationRepeat(Animator animation) {
// ignore
}
+
+ private void onAnimationProgress(float linearProgress) {
+ View iconView = mSplashScreenView.getIconView();
+ if (iconView != null) {
+ final float iconProgress = ICON_INTERPOLATOR.getInterpolation(
+ getProgress(linearProgress, 0 /* delay */, mIconFadeOutDuration));
+ iconView.setAlpha(mIconStartAlpha * (1 - iconProgress));
+ }
+
+ final float revealLinearProgress = getProgress(linearProgress, mAppRevealDelay,
+ mAppRevealDuration);
+
+ if (mRadialVanishAnimation != null) {
+ mRadialVanishAnimation.onAnimationProgress(revealLinearProgress);
+ }
+
+ if (mShiftUpAnimation != null) {
+ mShiftUpAnimation.onAnimationProgress(revealLinearProgress);
+ }
+ }
+
+ private float getProgress(float linearProgress, long delay, long duration) {
+ return MathUtils.constrain(
+ (linearProgress * (mAnimationDuration) - delay) / duration,
+ 0.0f,
+ 1.0f
+ );
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
index e656f43..fd6f0ad9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
@@ -74,16 +74,14 @@
private int mDefaultIconSize;
private int mBrandingImageWidth;
private int mBrandingImageHeight;
- private final int mAppRevealDuration;
private int mMainWindowShiftLength;
private final TransactionPool mTransactionPool;
private final SplashScreenWindowAttrs mTmpAttrs = new SplashScreenWindowAttrs();
private final Handler mSplashscreenWorkerHandler;
- SplashscreenContentDrawer(Context context, int appRevealAnimDuration, TransactionPool pool) {
+ SplashscreenContentDrawer(Context context, TransactionPool pool) {
mContext = context;
mIconProvider = new IconProvider(context);
- mAppRevealDuration = appRevealAnimDuration;
mTransactionPool = pool;
// Initialize Splashscreen worker thread
@@ -671,9 +669,8 @@
*/
void applyExitAnimation(SplashScreenView view, SurfaceControl leash,
Rect frame, Runnable finishCallback) {
- final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(view, leash,
- frame, mAppRevealDuration, mMainWindowShiftLength, mTransactionPool,
- finishCallback);
+ final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(mContext, view,
+ leash, frame, mMainWindowShiftLength, mTransactionPool, finishCallback);
animation.startAnimations();
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
index b7a0339..8fa2236 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
@@ -116,10 +116,7 @@
mContext = context;
mDisplayManager = mContext.getSystemService(DisplayManager.class);
mSplashScreenExecutor = splashScreenExecutor;
- final int appRevealAnimDuration = context.getResources().getInteger(
- com.android.wm.shell.R.integer.starting_window_app_reveal_anim_duration);
- mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, appRevealAnimDuration,
- pool);
+ mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, pool);
mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance());
}
diff --git a/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml b/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml
index 7a550ae..205485d 100644
--- a/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml
+++ b/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml
@@ -24,6 +24,7 @@
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="?android:attr/selectableItemBackground"
android:orientation="vertical"
+ android:importantForAccessibility = "no"
android:clipToPadding="false">
<LinearLayout
diff --git a/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml b/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml
index 5496a01..7567c17 100644
--- a/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml
+++ b/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml
@@ -23,6 +23,7 @@
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="?android:attr/selectableItemBackground"
+ android:importantForAccessibility = "no"
android:clipToPadding="false">
<LinearLayout
diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java
index 69ce275..32def03 100644
--- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java
+++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java
@@ -20,7 +20,7 @@
import android.app.smartspace.SmartspaceAction;
import android.app.smartspace.SmartspaceTarget;
import android.content.Intent;
-import android.graphics.drawable.Icon;
+import android.graphics.drawable.Drawable;
import android.os.Parcelable;
import android.view.View;
import android.view.ViewGroup;
@@ -93,9 +93,14 @@
void setFalsingManager(com.android.systemui.plugins.FalsingManager falsingManager);
/**
- * Set or clear any Do Not Disturb information.
+ * Set or clear Do Not Disturb information.
*/
- void setDnd(@Nullable Icon dndIcon, @Nullable String description);
+ void setDnd(@Nullable Drawable image, @Nullable String description);
+
+ /**
+ * Set or clear next alarm information
+ */
+ void setNextAlarm(@Nullable Drawable image, @Nullable String description);
}
/** Interface for launching Intents, which can differ on the lockscreen */
diff --git a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml
index 604ab72..3a7a8ae 100644
--- a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml
+++ b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml
@@ -16,23 +16,14 @@
* limitations under the License.
*/
-->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+<ripple
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
<item android:id="@+id/background">
<shape>
<solid android:color="?android:attr/colorControlNormal" />
<corners android:radius="10dp" />
</shape>
</item>
- <item android:id="@+id/ripple">
- <ripple
- android:color="?android:attr/colorControlHighlight">
- <item android:id="@android:id/mask">
- <shape android:shape="rectangle">
- <solid android:color="?android:attr/colorControlNormal" />
- <corners android:radius="10dp" />
- </shape>
- </item>
- </ripple>
- </item>
-</layer-list>
+</ripple>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java
index 3d42da2..97d3a5a 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java
@@ -28,7 +28,6 @@
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.dagger.qualifiers.Main;
-import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -167,7 +166,6 @@
private final TelephonyManager mTelephonyManager;
private final EmergencyButtonController.Factory mEmergencyButtonControllerFactory;
private final FalsingCollector mFalsingCollector;
- private final boolean mIsNewLayoutEnabled;
@Inject
public Factory(KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -177,8 +175,7 @@
InputMethodManager inputMethodManager, @Main DelayableExecutor mainExecutor,
@Main Resources resources, LiftToActivateListener liftToActivateListener,
TelephonyManager telephonyManager, FalsingCollector falsingCollector,
- EmergencyButtonController.Factory emergencyButtonControllerFactory,
- FeatureFlags featureFlags) {
+ EmergencyButtonController.Factory emergencyButtonControllerFactory) {
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mLockPatternUtils = lockPatternUtils;
mLatencyTracker = latencyTracker;
@@ -190,7 +187,6 @@
mTelephonyManager = telephonyManager;
mEmergencyButtonControllerFactory = emergencyButtonControllerFactory;
mFalsingCollector = falsingCollector;
- mIsNewLayoutEnabled = featureFlags.isKeyguardLayoutEnabled();
}
/** Create a new {@link KeyguardInputViewController}. */
@@ -216,20 +212,19 @@
return new KeyguardPinViewController((KeyguardPINView) keyguardInputView,
mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
- mLiftToActivateListener, emergencyButtonController, mFalsingCollector,
- mIsNewLayoutEnabled);
+ mLiftToActivateListener, emergencyButtonController, mFalsingCollector);
} else if (keyguardInputView instanceof KeyguardSimPinView) {
return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView,
mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
mLiftToActivateListener, mTelephonyManager, mFalsingCollector,
- emergencyButtonController, mIsNewLayoutEnabled);
+ emergencyButtonController);
} else if (keyguardInputView instanceof KeyguardSimPukView) {
return new KeyguardSimPukViewController((KeyguardSimPukView) keyguardInputView,
mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
mLiftToActivateListener, mTelephonyManager, mFalsingCollector,
- emergencyButtonController, mIsNewLayoutEnabled);
+ emergencyButtonController);
}
throw new RuntimeException("Unable to find controller for " + keyguardInputView);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
index 09fb8ef..0b8868f 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
@@ -169,20 +169,6 @@
}
/**
- * By default, the new layout will be enabled. When false, revert to the old style.
- */
- public void setIsNewLayoutEnabled(boolean isEnabled) {
- if (!isEnabled) {
- for (int i = 0; i < mButtons.length; i++) {
- mButtons[i].disableNewLayout();
- }
- mDeleteButton.disableNewLayout();
- mOkButton.disableNewLayout();
- reloadColors();
- }
- }
-
- /**
* Reload colors from resources.
**/
public void reloadColors() {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java
index a456d42..262bed3 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java
@@ -35,12 +35,11 @@
KeyguardMessageAreaController.Factory messageAreaControllerFactory,
LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener,
EmergencyButtonController emergencyButtonController,
- FalsingCollector falsingCollector, boolean isNewLayoutEnabled) {
+ FalsingCollector falsingCollector) {
super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback,
messageAreaControllerFactory, latencyTracker, liftToActivateListener,
emergencyButtonController, falsingCollector);
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
- view.setIsNewLayoutEnabled(isNewLayoutEnabled);
}
@Override
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java
index fddbb3c..e04bfdc 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java
@@ -79,14 +79,13 @@
KeyguardMessageAreaController.Factory messageAreaControllerFactory,
LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener,
TelephonyManager telephonyManager, FalsingCollector falsingCollector,
- EmergencyButtonController emergencyButtonController, boolean isNewLayoutEnabled) {
+ EmergencyButtonController emergencyButtonController) {
super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback,
messageAreaControllerFactory, latencyTracker, liftToActivateListener,
emergencyButtonController, falsingCollector);
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mTelephonyManager = telephonyManager;
mSimImageView = mView.findViewById(R.id.keyguard_sim);
- view.setIsNewLayoutEnabled(isNewLayoutEnabled);
}
@Override
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java
index 50bd0c7..0730922 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java
@@ -85,14 +85,13 @@
KeyguardMessageAreaController.Factory messageAreaControllerFactory,
LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener,
TelephonyManager telephonyManager, FalsingCollector falsingCollector,
- EmergencyButtonController emergencyButtonController, boolean isNewLayoutEnabled) {
+ EmergencyButtonController emergencyButtonController) {
super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback,
messageAreaControllerFactory, latencyTracker, liftToActivateListener,
emergencyButtonController, falsingCollector);
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mTelephonyManager = telephonyManager;
mSimImageView = mView.findViewById(R.id.keyguard_sim);
- view.setIsNewLayoutEnabled(isNewLayoutEnabled);
}
@Override
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
index abdd770..e6298a4 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
@@ -21,7 +21,6 @@
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.drawable.GradientDrawable;
-import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.RippleDrawable;
import android.view.ContextThemeWrapper;
@@ -40,17 +39,14 @@
private ValueAnimator mContractAnimator;
private GradientDrawable mBackground;
private RippleDrawable mRipple;
- private GradientDrawable mRippleMask;
private int mNormalColor;
private int mHighlightColor;
private int mStyle;
- NumPadAnimator(Context context, LayerDrawable drawable, @StyleRes int style) {
- LayerDrawable ld = (LayerDrawable) drawable.mutate();
- mBackground = (GradientDrawable) ld.findDrawableByLayerId(R.id.background);
- mRipple = (RippleDrawable) ld.findDrawableByLayerId(R.id.ripple);
- mRippleMask = (GradientDrawable) mRipple.findDrawableByLayerId(android.R.id.mask);
+ NumPadAnimator(Context context, final RippleDrawable drawable, @StyleRes int style) {
mStyle = style;
+ mRipple = (RippleDrawable) drawable.mutate();
+ mBackground = (GradientDrawable) mRipple.findDrawableByLayerId(R.id.background);
reloadColors(context);
@@ -62,7 +58,7 @@
mExpandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator anim) {
mBackground.setCornerRadius((float) anim.getAnimatedValue());
- mRippleMask.setCornerRadius((float) anim.getAnimatedValue());
+ mRipple.invalidateSelf();
}
});
@@ -73,7 +69,7 @@
mContractAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator anim) {
mBackground.setCornerRadius((float) anim.getAnimatedValue());
- mRippleMask.setCornerRadius((float) anim.getAnimatedValue());
+ mRipple.invalidateSelf();
}
});
mAnimator.playSequentially(mExpandAnimator, mContractAnimator);
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java
index b76499a..096597a 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java
@@ -16,37 +16,22 @@
package com.android.keyguard;
import android.content.Context;
-import android.content.res.ColorStateList;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
-import android.graphics.drawable.VectorDrawable;
+import android.graphics.drawable.RippleDrawable;
import android.util.AttributeSet;
-import android.view.ContextThemeWrapper;
import android.view.MotionEvent;
-import androidx.annotation.Nullable;
-
-import com.android.settingslib.Utils;
-import com.android.systemui.R;
-
/**
* Similar to the {@link NumPadKey}, but displays an image.
*/
public class NumPadButton extends AlphaOptimizedImageButton {
- @Nullable
private NumPadAnimator mAnimator;
public NumPadButton(Context context, AttributeSet attrs) {
super(context, attrs);
- Drawable background = getBackground();
- if (background instanceof LayerDrawable) {
- mAnimator = new NumPadAnimator(context, (LayerDrawable) background,
- attrs.getStyleAttribute());
- } else {
- mAnimator = null;
- }
+ mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(),
+ attrs.getStyleAttribute());
}
@Override
@@ -56,7 +41,7 @@
// Set width/height to the same value to ensure a smooth circle for the bg, but shrink
// the height to match the old pin bouncer
int width = getMeasuredWidth();
- int height = mAnimator == null ? (int) (width * .75f) : width;
+ int height = width;
setMeasuredDimension(getMeasuredWidth(), height);
}
@@ -65,13 +50,13 @@
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
- if (mAnimator != null) mAnimator.onLayout(b - t);
+ mAnimator.onLayout(b - t);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
- if (mAnimator != null) mAnimator.start();
+ mAnimator.start();
}
return super.onTouchEvent(event);
}
@@ -80,25 +65,6 @@
* Reload colors from resources.
**/
public void reloadColors() {
- if (mAnimator != null) {
- mAnimator.reloadColors(getContext());
- } else {
- // Needed for old style pin
- int textColor = Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary)
- .getDefaultColor();
- ((VectorDrawable) getDrawable()).setTintList(ColorStateList.valueOf(textColor));
- }
- }
-
- /**
- * By default, the new layout will be enabled. Invoking will revert to the old style
- */
- public void disableNewLayout() {
- if (mAnimator != null) {
- mAnimator = null;
- ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(), R.style.NumPadKey);
- setBackground(getContext().getResources().getDrawable(
- R.drawable.ripple_drawable_pin, ctw.getTheme()));
- }
+ mAnimator.reloadColors(getContext());
}
}
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java
index 89c1a7f..35ace0d 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java
@@ -18,12 +18,10 @@
import android.content.Context;
import android.content.res.TypedArray;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
+import android.graphics.drawable.RippleDrawable;
import android.os.PowerManager;
import android.os.SystemClock;
import android.util.AttributeSet;
-import android.view.ContextThemeWrapper;
import android.view.HapticFeedbackConstants;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -32,8 +30,6 @@
import android.view.accessibility.AccessibilityManager;
import android.widget.TextView;
-import androidx.annotation.Nullable;
-
import com.android.internal.widget.LockPatternUtils;
import com.android.settingslib.Utils;
import com.android.systemui.R;
@@ -51,7 +47,6 @@
private int mTextViewResId;
private PasswordTextView mTextView;
- @Nullable
private NumPadAnimator mAnimator;
private View.OnClickListener mListener = new View.OnClickListener() {
@@ -131,26 +126,8 @@
setContentDescription(mDigitText.getText().toString());
- Drawable background = getBackground();
- if (background instanceof LayerDrawable) {
- mAnimator = new NumPadAnimator(context, (LayerDrawable) background,
- R.style.NumPadKey);
- } else {
- mAnimator = null;
- }
- }
-
- /**
- * By default, the new layout will be enabled. Invoking will revert to the old style
- */
- public void disableNewLayout() {
- findViewById(R.id.klondike_text).setVisibility(View.VISIBLE);
- if (mAnimator != null) {
- mAnimator = null;
- ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(), R.style.NumPadKey);
- setBackground(getContext().getResources().getDrawable(
- R.drawable.ripple_drawable_pin, ctw.getTheme()));
- }
+ mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(),
+ R.style.NumPadKey);
}
/**
@@ -164,14 +141,14 @@
mDigitText.setTextColor(textColor);
mKlondikeText.setTextColor(klondikeColor);
- if (mAnimator != null) mAnimator.reloadColors(getContext());
+ mAnimator.reloadColors(getContext());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
doHapticKeyClick();
- if (mAnimator != null) mAnimator.start();
+ mAnimator.start();
}
return super.onTouchEvent(event);
@@ -185,7 +162,7 @@
// Set width/height to the same value to ensure a smooth circle for the bg, but shrink
// the height to match the old pin bouncer
int width = getMeasuredWidth();
- int height = mAnimator == null ? (int) (width * .75f) : width;
+ int height = width;
setMeasuredDimension(getMeasuredWidth(), height);
}
@@ -206,7 +183,7 @@
left = centerX - mKlondikeText.getMeasuredWidth() / 2;
mKlondikeText.layout(left, top, left + mKlondikeText.getMeasuredWidth(), bottom);
- if (mAnimator != null) mAnimator.onLayout(b - t);
+ mAnimator.onLayout(b - t);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
index 577c0d8..b7f2cd0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
@@ -319,10 +319,18 @@
Log.d(TAG, "setIsAirplaneMode: "
+ "icon = " + (icon == null ? "" : icon.toString()));
}
+ if (mCellularInfo.mAirplaneModeEnabled == icon.visible) {
+ return;
+ }
mCellularInfo.mAirplaneModeEnabled = icon.visible;
mWifiInfo.mAirplaneModeEnabled = icon.visible;
if (!mSignalCallback.mEthernetInfo.mConnected) {
- refreshState(mCellularInfo);
+ if (mWifiInfo.mEnabled && (mWifiInfo.mWifiSignalIconId > 0)
+ && (mWifiInfo.mSsid != null)) {
+ refreshState(mWifiInfo);
+ } else {
+ refreshState(mCellularInfo);
+ }
}
}
@@ -456,6 +464,9 @@
state.dualLabelContentDescription = r.getString(
R.string.accessibility_quick_settings_open_settings, getTileLabel());
state.expandedAccessibilityClassName = Switch.class.getName();
+ if (DEBUG) {
+ Log.d(TAG, "handleUpdateWifiState: " + "SignalState = " + state.toString());
+ }
}
private void handleUpdateCellularState(SignalState state, Object arg) {
@@ -496,6 +507,9 @@
} else {
state.stateDescription = state.secondaryLabel;
}
+ if (DEBUG) {
+ Log.d(TAG, "handleUpdateCellularState: " + "SignalState = " + state.toString());
+ }
}
private void handleUpdateEthernetState(SignalState state, Object arg) {
@@ -508,6 +522,9 @@
state.state = Tile.STATE_ACTIVE;
state.icon = ResourceIcon.get(cb.mEthernetSignalIconId);
state.secondaryLabel = cb.mEthernetContentDescription;
+ if (DEBUG) {
+ Log.d(TAG, "handleUpdateEthernetState: " + "SignalState = " + state.toString());
+ }
}
private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index c8c0755..13a8661 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -140,7 +140,7 @@
private final KeyguardEnvironment mKeyguardEnvironment;
private final NotificationGroupManagerLegacy mGroupManager;
- private final NotificationRankingManager mRankingManager;
+ private final Lazy<NotificationRankingManager> mRankingManager;
private final FeatureFlags mFeatureFlags;
private final ForegroundServiceDismissalFeatureController mFgsFeatureController;
@@ -200,7 +200,7 @@
public NotificationEntryManager(
NotificationEntryManagerLogger logger,
NotificationGroupManagerLegacy groupManager,
- NotificationRankingManager rankingManager,
+ Lazy<NotificationRankingManager> rankingManager,
KeyguardEnvironment keyguardEnvironment,
FeatureFlags featureFlags,
Lazy<NotificationRowBinder> notificationRowBinderLazy,
@@ -419,7 +419,7 @@
mActiveNotifications.put(entry.getKey(), entry);
mGroupManager.onEntryAdded(entry);
- updateRankingAndSort(mRankingManager.getRankingMap(), "addEntryInternalInternal");
+ updateRankingAndSort(mRankingManager.get().getRankingMap(), "addEntryInternalInternal");
}
/**
@@ -886,13 +886,13 @@
/** Resorts / filters the current notification set with the current RankingMap */
public void reapplyFilterAndSort(String reason) {
- updateRankingAndSort(mRankingManager.getRankingMap(), reason);
+ updateRankingAndSort(mRankingManager.get().getRankingMap(), reason);
}
/** Calls to NotificationRankingManager and updates mSortedAndFiltered */
private void updateRankingAndSort(@NonNull RankingMap rankingMap, String reason) {
mSortedAndFiltered.clear();
- mSortedAndFiltered.addAll(mRankingManager.updateRanking(
+ mSortedAndFiltered.addAll(mRankingManager.get().updateRanking(
rankingMap, mActiveNotifications.values(), reason));
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
index e2a37f6..89bb652 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
@@ -80,8 +80,6 @@
import java.util.Optional;
import java.util.concurrent.Executor;
-import javax.inject.Provider;
-
import dagger.Binds;
import dagger.Lazy;
import dagger.Module;
@@ -102,7 +100,7 @@
static NotificationEntryManager provideNotificationEntryManager(
NotificationEntryManagerLogger logger,
NotificationGroupManagerLegacy groupManager,
- NotificationRankingManager rankingManager,
+ Lazy<NotificationRankingManager> rankingManager,
NotificationEntryManager.KeyguardEnvironment keyguardEnvironment,
FeatureFlags featureFlags,
Lazy<NotificationRowBinder> notificationRowBinderLazy,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 20b37e2..c0d713b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -2574,16 +2574,19 @@
// Small parallax as we pull down and clip QS
startHeight = -mQsExpansionHeight * 0.2f;
}
- if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()
- && mNotificationStackScrollLayoutController.isPulseExpanding()) {
- if (!mPulseExpansionHandler.isExpanding()
- && !mPulseExpansionHandler.getLeavingLockscreen()) {
- // If we aborted the expansion we need to make sure the header doesn't reappear
- // again after the header has animated away
- appearAmount = 0;
+ if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()) {
+ if (mNotificationStackScrollLayoutController.isPulseExpanding()) {
+ if (!mPulseExpansionHandler.isExpanding()
+ && !mPulseExpansionHandler.getLeavingLockscreen()) {
+ // If we aborted the expansion we need to make sure the header doesn't reappear
+ // again after the header has animated away
+ appearAmount = 0;
+ } else {
+ appearAmount = mNotificationStackScrollLayoutController
+ .calculateAppearFractionBypass();
+ }
} else {
- appearAmount = mNotificationStackScrollLayoutController
- .calculateAppearFractionBypass();
+ appearAmount = 0.0f;
}
startHeight = -mQs.getQsMinExpansionHeight();
}
diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt b/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt
new file mode 100644
index 0000000..647faeb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.concurrency
+
+import android.os.Looper
+import javax.inject.Inject
+
+/**
+ * Methods to check or assert that we're on the main thread
+ */
+interface Execution {
+ fun assertIsMainThread()
+ fun isMainThread(): Boolean
+}
+
+class ExecutionImpl @Inject constructor() : Execution {
+ private val mainLooper = Looper.getMainLooper()
+
+ override fun assertIsMainThread() {
+ if (!mainLooper.isCurrentThread) {
+ throw IllegalStateException("should be called from the main thread." +
+ " Main thread name=" + mainLooper.thread.name +
+ " Thread.currentThread()=" + Thread.currentThread().name)
+ }
+ }
+
+ override fun isMainThread(): Boolean {
+ return mainLooper.isCurrentThread
+ }
+}
+
+class FakeExecution : Execution {
+ var simulateMainThread = true
+
+ override fun assertIsMainThread() {
+ if (!simulateMainThread) {
+ throw IllegalStateException("should be called from the main thread")
+ }
+ }
+
+ override fun isMainThread(): Boolean {
+ return simulateMainThread
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java b/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java
index 5946af3..1c50496 100644
--- a/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java
+++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java
@@ -24,6 +24,8 @@
import java.util.concurrent.Executor;
+import javax.inject.Singleton;
+
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
@@ -40,7 +42,7 @@
@Binds
public abstract ThreadFactory bindExecutorFactory(ThreadFactoryImpl impl);
- /** Main Looper */
+ /** Main Looper */
@Provides
@Main
public static Looper provideMainLooper() {
@@ -67,4 +69,8 @@
return context.getMainExecutor();
}
+ /** */
+ @Binds
+ @Singleton
+ public abstract Execution provideExecution(ExecutionImpl execution);
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
index 495489f..8c5f74d 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
@@ -32,7 +32,7 @@
import android.content.Context;
import android.content.pm.UserInfo;
import android.content.res.Resources;
-import android.graphics.drawable.Icon;
+import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.UserHandle;
import android.test.suitebuilder.annotation.SmallTest;
@@ -394,6 +394,8 @@
public void setFalsingManager(FalsingManager falsingManager) { }
- public void setDnd(@Nullable Icon dndIcon, @Nullable String description) { }
+ public void setDnd(@Nullable Drawable dndIcon, @Nullable String description) { }
+
+ public void setNextAlarm(@Nullable Drawable dndIcon, @Nullable String description) { }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
index 5fc01cc..6459c0c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
@@ -190,7 +190,7 @@
mEntryManager = new NotificationEntryManager(
mLogger,
mGroupManager,
- new NotificationRankingManager(
+ () -> new NotificationRankingManager(
() -> mNotificationMediaManager,
mGroupManager,
mHeadsUpManager,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
index 950b95f..7b0c067 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
@@ -181,7 +181,7 @@
mEntryManager = new NotificationEntryManager(
mock(NotificationEntryManagerLogger.class),
mGroupMembershipManager,
- new NotificationRankingManager(
+ () -> new NotificationRankingManager(
() -> mock(NotificationMediaManager.class),
mGroupMembershipManager,
mHeadsUpManager,
diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS
index f27e7ff..95dc667 100644
--- a/services/core/java/com/android/server/OWNERS
+++ b/services/core/java/com/android/server/OWNERS
@@ -31,8 +31,9 @@
per-file IpSecService.java = file:/services/core/java/com/android/server/net/OWNERS
per-file MmsServiceBroker.java = file:/telephony/OWNERS
per-file NetIdManager.java = file:/services/core/java/com/android/server/net/OWNERS
-per-file PackageWatchdog.java = file:/services/core/java/com/android/server/rollback/OWNERS
+per-file PackageWatchdog.java, RescueParty.java = file:/services/core/java/com/android/server/rollback/OWNERS
per-file PinnerService.java = file:/apct-tests/perftests/OWNERS
+per-file RescueParty.java = fdunlap@google.com, shuc@google.com
per-file TelephonyRegistry.java = file:/telephony/OWNERS
per-file UiModeManagerService.java = file:/packages/SystemUI/OWNERS
per-file VcnManagementService.java = file:/services/core/java/com/android/server/vcn/OWNERS
diff --git a/services/core/java/com/android/server/connectivity/FullScore.java b/services/core/java/com/android/server/connectivity/FullScore.java
index 14cec09..fbfa7a1 100644
--- a/services/core/java/com/android/server/connectivity/FullScore.java
+++ b/services/core/java/com/android/server/connectivity/FullScore.java
@@ -108,9 +108,10 @@
// and all bits managed by FullScore unset. As bits are handled from 0 up in NetworkScore and
// from 63 down in FullScore, cut at the 32nd bit for simplicity, but change this if some day
// there are more than 32 bits handled on either side.
- // YIELD_TO_BAD_WIFI is temporarily handled by ConnectivityService.
- private static final long EXTERNAL_POLICIES_MASK =
- 0x00000000FFFFFFFFL & ~(1L << POLICY_YIELD_TO_BAD_WIFI);
+ // YIELD_TO_BAD_WIFI is temporarily handled by ConnectivityService, but the factory is still
+ // allowed to set it, so that it's possible to transition from handling it in CS to handling
+ // it in the factory.
+ private static final long EXTERNAL_POLICIES_MASK = 0x00000000FFFFFFFFL;
@VisibleForTesting
static @NonNull String policyNameOf(final int policy) {
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 0a4b137..f75f3e1 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -1282,6 +1282,7 @@
// this point.
sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_CHANGED);
scheduleTraversalLocked(false);
+ mPersistentDataStore.saveIfNeeded();
}
private void handleLogicalDisplayFrameRateOverridesChangedLocked(
@@ -2884,6 +2885,7 @@
if (dpc != null) {
dpc.putScreenBrightnessSetting(brightness);
}
+ mPersistentDataStore.saveIfNeeded();
}
} finally {
Binder.restoreCallingIdentity(token);
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index 0946113..1ab402d 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -80,6 +80,7 @@
import android.content.pm.dex.PackageOptimizationInfo;
import android.metrics.LogMaker;
import android.os.Binder;
+import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
import android.os.Trace;
@@ -92,9 +93,9 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
-import com.android.internal.os.BackgroundThread;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.apphibernation.AppHibernationManagerInternal;
import com.android.server.apphibernation.AppHibernationService;
@@ -150,6 +151,7 @@
private long mLastLogTimeSecs;
private final ActivityTaskSupervisor mSupervisor;
private final MetricsLogger mMetricsLogger = new MetricsLogger();
+ private final Handler mLoggerHandler = FgThread.getHandler();
/** All active transitions. */
private final ArrayList<TransitionInfo> mTransitionInfoList = new ArrayList<>();
@@ -897,11 +899,11 @@
// This will avoid any races with other operations that modify the ActivityRecord.
final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info);
if (info.isInterestingToLoggerAndObserver()) {
- BackgroundThread.getHandler().post(() -> logAppTransition(
+ mLoggerHandler.post(() -> logAppTransition(
info.mCurrentTransitionDeviceUptime, info.mCurrentTransitionDelayMs,
infoSnapshot, isHibernating));
}
- BackgroundThread.getHandler().post(() -> logAppDisplayed(infoSnapshot));
+ mLoggerHandler.post(() -> logAppDisplayed(infoSnapshot));
if (info.mPendingFullyDrawn != null) {
info.mPendingFullyDrawn.run();
}
@@ -909,7 +911,7 @@
info.mLastLaunchedActivity.info.launchToken = null;
}
- // This gets called on a background thread without holding the activity manager lock.
+ // This gets called on another thread without holding the activity manager lock.
private void logAppTransition(int currentTransitionDeviceUptime, int currentTransitionDelayMs,
TransitionInfoSnapshot info, boolean isHibernating) {
final LogMaker builder = new LogMaker(APP_TRANSITION);
@@ -1036,7 +1038,7 @@
: TimeUnit.NANOSECONDS.toMillis(currentTimestampNs - info.mTransitionStartTimeNs);
final TransitionInfoSnapshot infoSnapshot =
new TransitionInfoSnapshot(info, r, (int) startupTimeMs);
- BackgroundThread.getHandler().post(() -> logAppFullyDrawn(infoSnapshot));
+ mLoggerHandler.post(() -> logAppFullyDrawn(infoSnapshot));
mLastTransitionInfo.remove(r);
if (!info.isInterestingToLoggerAndObserver()) {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
index 1f880f6..4f4f06d 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
@@ -16,12 +16,14 @@
package com.android.server.wm.flicker.close
+import android.platform.test.annotations.Postsubmit
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.dsl.FlickerBuilder
import org.junit.FixMethodOrder
+import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
import org.junit.runners.Parameterized
@@ -44,6 +46,30 @@
}
}
+ @Postsubmit
+ @Test
+ override fun statusBarLayerIsAlwaysVisible() {
+ super.statusBarLayerIsAlwaysVisible()
+ }
+
+ @Postsubmit
+ @Test
+ override fun statusBarLayerRotatesScales() {
+ super.statusBarLayerRotatesScales()
+ }
+
+ @Postsubmit
+ @Test
+ override fun launcherLayerReplacesApp() {
+ super.launcherLayerReplacesApp()
+ }
+
+ @Postsubmit
+ @Test
+ override fun noUncoveredRegions() {
+ super.noUncoveredRegions()
+ }
+
companion object {
@Parameterized.Parameters(name = "{0}")
@JvmStatic
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt
index 96c7c0a..e088062 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt
@@ -17,6 +17,7 @@
package com.android.server.wm.flicker.close
import android.app.Instrumentation
+import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.view.Surface
import androidx.test.filters.FlakyTest
@@ -82,7 +83,7 @@
testSpec.navBarLayerIsAlwaysVisible(rotatesScreen = testSpec.isRotated)
}
- @FlakyTest
+ @Postsubmit
@Test
open fun statusBarLayerIsAlwaysVisible() {
testSpec.statusBarLayerIsAlwaysVisible(rotatesScreen = testSpec.isRotated)
@@ -94,7 +95,7 @@
testSpec.navBarLayerRotatesAndScales(testSpec.config.startRotation, Surface.ROTATION_0)
}
- @FlakyTest
+ @Postsubmit
@Test
open fun statusBarLayerRotatesScales() {
testSpec.statusBarLayerRotatesScales(testSpec.config.startRotation, Surface.ROTATION_0)
@@ -122,13 +123,13 @@
testSpec.noUncoveredRegions(testSpec.config.startRotation, Surface.ROTATION_0)
}
- @Presubmit
+ @FlakyTest(bugId = 185400889)
@Test
open fun launcherReplacesAppWindowAsTopWindow() {
testSpec.launcherReplacesAppWindowAsTopWindow(testApp)
}
- @Presubmit
+ @Postsubmit
@Test
open fun launcherWindowBecomesVisible() {
testSpec.launcherWindowBecomesVisible()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt
index 3bd19ea..0bae8f6 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt
@@ -51,7 +51,6 @@
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@FlakyTest(bugId = 185400889)
class CloseImeAutoOpenWindowToAppTest(private val testSpec: FlickerTestParameter) {
private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.config.startRotation)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt
index 3cb58b9..819d4dd 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt
@@ -17,6 +17,7 @@
package com.android.server.wm.flicker.ime
import android.app.Instrumentation
+import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.view.Surface
import android.view.WindowManagerPolicyConstants
@@ -104,7 +105,7 @@
@Test
fun imeAppWindowBecomesInvisible() = testSpec.imeAppWindowBecomesInvisible(testApp)
- @FlakyTest
+ @Postsubmit
@Test
fun noUncoveredRegions() = testSpec.noUncoveredRegions(testSpec.config.startRotation,
Surface.ROTATION_0)
@@ -113,7 +114,7 @@
@Test
fun imeLayerBecomesInvisible() = testSpec.imeLayerBecomesInvisible()
- @FlakyTest
+ @Postsubmit
@Test
fun imeAppLayerBecomesInvisible() = testSpec.imeAppLayerBecomesInvisible(testApp)
@@ -123,7 +124,7 @@
testSpec.navBarLayerRotatesAndScales(testSpec.config.startRotation, Surface.ROTATION_0)
}
- @FlakyTest
+ @Postsubmit
@Test
fun statusBarLayerRotatesScales() {
testSpec.statusBarLayerRotatesScales(testSpec.config.startRotation, Surface.ROTATION_0)
@@ -137,7 +138,7 @@
@Test
fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible()
- @FlakyTest
+ @Postsubmit
@Test
fun visibleLayersShownMoreThanOneConsecutiveEntry() {
testSpec.assertLayers {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt
index 22d3418..5f841b8 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt
@@ -17,6 +17,7 @@
package com.android.server.wm.flicker.ime
import android.app.Instrumentation
+import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.view.Surface
import android.view.WindowManagerPolicyConstants
@@ -98,7 +99,7 @@
}
}
- @FlakyTest
+ @Postsubmit
@Test
fun imeWindowBecomesInvisible() = testSpec.imeWindowBecomesInvisible()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt
index bb9cd6f..85163b3 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt
@@ -17,10 +17,10 @@
package com.android.server.wm.flicker.ime
import android.app.Instrumentation
+import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.view.Surface
import android.view.WindowManagerPolicyConstants
-import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.FlickerBuilderProvider
@@ -138,7 +138,7 @@
}
}
- @FlakyTest
+ @Postsubmit
@Test
fun visibleWindowsShownMoreThanOneConsecutiveEntry() {
testSpec.assertWm {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt
index 55bbe3a..a0b0b75 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt
@@ -17,6 +17,7 @@
package com.android.server.wm.flicker.ime
import android.app.Instrumentation
+import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.view.Surface
import android.view.WindowManagerPolicyConstants
@@ -97,7 +98,7 @@
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @FlakyTest
+ @Postsubmit
@Test
fun visibleWindowsShownMoreThanOneConsecutiveEntry() {
testSpec.assertWm {
@@ -147,13 +148,13 @@
testSpec.navBarLayerRotatesAndScales(Surface.ROTATION_0, testSpec.config.endRotation)
}
- @FlakyTest
+ @Postsubmit
@Test
fun statusBarLayerRotatesScales() {
testSpec.statusBarLayerRotatesScales(Surface.ROTATION_0, testSpec.config.endRotation)
}
- @FlakyTest
+ @Postsubmit
@Test
fun visibleLayersShownMoreThanOneConsecutiveEntry() {
testSpec.assertLayers {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt
index d0e9556..754d9e9 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.ime
import android.app.Instrumentation
-import android.platform.test.annotations.Presubmit
+import android.platform.test.annotations.Postsubmit
import android.view.WindowManagerPolicyConstants
import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
@@ -52,7 +52,6 @@
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@FlakyTest
class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestParameter) {
private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
private val testApp = SimpleAppHelper(instrumentation)
@@ -97,31 +96,31 @@
}
}
- @Presubmit
+ @FlakyTest
@Test
fun imeAppWindowIsAlwaysVisible() = testSpec.imeAppWindowIsAlwaysVisible(imeTestApp)
- @Presubmit
+ @FlakyTest
@Test
fun imeLayerBecomesVisible() = testSpec.imeLayerBecomesVisible()
- @Presubmit
+ @FlakyTest
@Test
fun imeLayerBecomesInvisible() = testSpec.imeLayerBecomesInvisible()
- @Presubmit
+ @Postsubmit
@Test
fun navBarWindowIsAlwaysVisible() = testSpec.navBarWindowIsAlwaysVisible()
- @Presubmit
+ @FlakyTest
@Test
fun navBarLayerIsAlwaysVisible() = testSpec.navBarLayerIsAlwaysVisible()
- @Presubmit
+ @Postsubmit
@Test
fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible()
- @Presubmit
+ @FlakyTest
@Test
fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
index ad7ee30..e0179c1 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
@@ -16,7 +16,7 @@
package com.android.server.wm.flicker.launch
-import android.platform.test.annotations.Postsubmit
+import android.platform.test.annotations.Presubmit
import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
@@ -63,12 +63,12 @@
}
}
- @Postsubmit
+ @Presubmit
@Test
override fun appWindowReplacesLauncherAsTopWindow() =
super.appWindowReplacesLauncherAsTopWindow()
- @Postsubmit
+ @Presubmit
@Test
override fun launcherWindowBecomesInvisible() {
testSpec.launcherWindowBecomesInvisible()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
index 5a8162e..9a9d6ff 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
@@ -16,6 +16,8 @@
package com.android.server.wm.flicker.rotation
+import android.platform.test.annotations.Postsubmit
+import android.platform.test.annotations.Presubmit
import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
@@ -57,7 +59,7 @@
super.focusDoesNotChange()
}
- @FlakyTest
+ @Postsubmit
@Test
override fun noUncoveredRegions() {
super.noUncoveredRegions()
@@ -75,6 +77,36 @@
}
}
+ @Postsubmit
+ @Test
+ override fun appLayerRotates_EndingPos() {
+ super.appLayerRotates_EndingPos()
+ }
+
+ @Postsubmit
+ @Test
+ override fun appLayerRotates_StartingPos() {
+ super.appLayerRotates_StartingPos()
+ }
+
+ @Presubmit
+ @Test
+ override fun navBarWindowIsAlwaysVisible() {
+ super.navBarWindowIsAlwaysVisible()
+ }
+
+ @Postsubmit
+ @Test
+ override fun statusBarLayerIsAlwaysVisible() {
+ super.statusBarLayerIsAlwaysVisible()
+ }
+
+ @Postsubmit
+ @Test
+ override fun statusBarWindowIsAlwaysVisible() {
+ super.statusBarWindowIsAlwaysVisible()
+ }
+
companion object {
private const val SCREENSHOT_LAYER = "RotationLayer"
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
index a353c59..4770c3d 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
@@ -16,6 +16,7 @@
package com.android.server.wm.flicker.rotation
+import android.platform.test.annotations.Postsubmit
import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
@@ -92,6 +93,18 @@
}
}
+ @Postsubmit
+ @Test
+ override fun navBarWindowIsAlwaysVisible() {
+ super.navBarWindowIsAlwaysVisible()
+ }
+
+ @Postsubmit
+ @Test
+ override fun visibleLayersShownMoreThanOneConsecutiveEntry() {
+ super.visibleLayersShownMoreThanOneConsecutiveEntry()
+ }
+
companion object {
private val testFactory = FlickerTestParameterFactory.getInstance()