From 3b4d8934c98bd7cde178e900f4e3860d91cb231e Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Tue, 11 Jun 2024 22:53:46 -0700 Subject: Pipe nav bar transitions logic into task bar Bug: 349155860 Test: manual Flag: com.android.wm.shell.enable_taskbar_on_phones Change-Id: I844a9113d2a89330ec6a15b88c76c10c755a0974 --- .../systemui/shared/recents/IOverviewProxy.aidl | 33 +- .../shared/statusbar/phone/BarTransitions.java | 352 +++++++++++++++++++++ .../systemui/navigationbar/NavBarHelper.java | 12 +- .../systemui/navigationbar/NavigationBar.java | 6 +- .../navigationbar/NavigationBarController.java | 2 +- .../NavigationBarControllerEmptyImpl.kt | 2 +- .../navigationbar/NavigationBarControllerImpl.java | 10 +- .../navigationbar/NavigationBarTransitions.java | 2 +- .../systemui/navigationbar/TaskbarDelegate.java | 94 +++++- .../systemui/statusbar/data/model/StatusBarMode.kt | 14 +- .../systemui/statusbar/phone/BarTransitions.java | 335 -------------------- .../systemui/statusbar/phone/CentralSurfaces.java | 1 + .../statusbar/phone/CentralSurfacesImpl.java | 1 + .../statusbar/phone/LightBarController.java | 4 +- .../statusbar/phone/PhoneStatusBarTransitions.java | 1 + .../statusbar/phone/StatusBarDemoMode.java | 10 +- .../NavigationBarTransitionsTest.java | 2 +- .../systemui/navigationbar/TaskbarDelegateTest.kt | 5 +- .../statusbar/phone/LightBarControllerTest.java | 2 +- .../phone/PhoneStatusBarTransitionsTest.kt | 12 +- 20 files changed, 525 insertions(+), 375 deletions(-) create mode 100644 packages/SystemUI/shared/src/com/android/systemui/shared/statusbar/phone/BarTransitions.java delete mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl index d5bc10a322d4..c00007b55482 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl @@ -22,7 +22,7 @@ import android.os.Bundle; import android.view.MotionEvent; import com.android.systemui.shared.recents.ISystemUiProxy; -// Next ID: 29 +// Next ID: 34 oneway interface IOverviewProxy { void onActiveNavBarRegionChanges(in Region activeRegion) = 11; @@ -82,6 +82,11 @@ oneway interface IOverviewProxy { */ void onSystemBarAttributesChanged(int displayId, int behavior) = 20; + /** + * Sent when {@link TaskbarDelegate#onTransitionModeUpdated} is called. + */ + void onTransitionModeUpdated(int barMode, boolean checkBarModes) = 21; + /** * Sent when the desired dark intensity of the nav buttons has changed */ @@ -101,4 +106,30 @@ oneway interface IOverviewProxy { * Sent when the task bar stash state is toggled. */ void onTaskbarToggled() = 27; + + /** + * Sent when the wallpaper visibility is updated. + */ + void updateWallpaperVisibility(int displayId, boolean visible) = 29; + + /** + * Sent when {@link TaskbarDelegate#checkNavBarModes} is called. + */ + void checkNavBarModes() = 30; + + /** + * Sent when {@link TaskbarDelegate#finishBarAnimations} is called. + */ + void finishBarAnimations() = 31; + + /** + * Sent when {@link TaskbarDelegate#touchAutoDim} is called. {@param reset} is true, when auto + * dim is reset after a timeout. + */ + void touchAutoDim(boolean reset) = 32; + + /** + * Sent when {@link TaskbarDelegate#transitionTo} is called. + */ + void transitionTo(int barMode, boolean animate) = 33; } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/statusbar/phone/BarTransitions.java b/packages/SystemUI/shared/src/com/android/systemui/shared/statusbar/phone/BarTransitions.java new file mode 100644 index 000000000000..c123306880ca --- /dev/null +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/statusbar/phone/BarTransitions.java @@ -0,0 +1,352 @@ +/* + * Copyright (C) 2024 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.shared.statusbar.phone; + +import android.annotation.ColorInt; +import android.annotation.IntDef; +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.PorterDuff; +import android.graphics.PorterDuff.Mode; +import android.graphics.PorterDuffColorFilter; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.SystemClock; +import android.util.Log; +import android.view.View; + +import com.android.app.animation.Interpolators; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +public class BarTransitions { + private static final boolean DEBUG = false; + private static final boolean DEBUG_COLORS = false; + + @ColorInt + private static final int SYSTEM_BAR_BACKGROUND_OPAQUE = Color.BLACK; + @ColorInt + private static final int SYSTEM_BAR_BACKGROUND_TRANSPARENT = Color.TRANSPARENT; + + public static final int MODE_TRANSPARENT = 0; + public static final int MODE_SEMI_TRANSPARENT = 1; + public static final int MODE_TRANSLUCENT = 2; + public static final int MODE_LIGHTS_OUT = 3; + public static final int MODE_OPAQUE = 4; + public static final int MODE_WARNING = 5; + public static final int MODE_LIGHTS_OUT_TRANSPARENT = 6; + + @IntDef(flag = true, prefix = { "MODE_" }, value = { + MODE_OPAQUE, + MODE_SEMI_TRANSPARENT, + MODE_TRANSLUCENT, + MODE_LIGHTS_OUT, + MODE_TRANSPARENT, + MODE_WARNING, + MODE_LIGHTS_OUT_TRANSPARENT + }) + @Retention(RetentionPolicy.SOURCE) + public @interface TransitionMode {} + + public static final int LIGHTS_IN_DURATION = 250; + public static final int LIGHTS_OUT_DURATION = 1500; + public static final int BACKGROUND_DURATION = 200; + + private final String mTag; + private final View mView; + protected final BarBackgroundDrawable mBarBackground; + + private @TransitionMode int mMode; + private boolean mAlwaysOpaque = false; + + public BarTransitions(View view, int gradientResourceId) { + mTag = "BarTransitions." + view.getClass().getSimpleName(); + mView = view; + mBarBackground = new BarBackgroundDrawable(mView.getContext(), gradientResourceId); + mView.setBackground(mBarBackground); + } + + public void destroy() { + // To be overridden + } + + public int getMode() { + return mMode; + } + + public void setAutoDim(boolean autoDim) { + // Default is don't care. + } + + /** + * @param alwaysOpaque if {@code true}, the bar's background will always be opaque, regardless + * of what mode it is currently set to. + */ + public void setAlwaysOpaque(boolean alwaysOpaque) { + mAlwaysOpaque = alwaysOpaque; + } + + public boolean isAlwaysOpaque() { + // Low-end devices do not support translucent modes, fallback to opaque + return mAlwaysOpaque; + } + + public void transitionTo(int mode, boolean animate) { + if (isAlwaysOpaque() && (mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSLUCENT + || mode == MODE_TRANSPARENT)) { + mode = MODE_OPAQUE; + } + if (isAlwaysOpaque() && (mode == MODE_LIGHTS_OUT_TRANSPARENT)) { + mode = MODE_LIGHTS_OUT; + } + if (mMode == mode) return; + int oldMode = mMode; + mMode = mode; + if (DEBUG) Log.d(mTag, String.format("%s -> %s animate=%s", + modeToString(oldMode), modeToString(mode), animate)); + onTransition(oldMode, mMode, animate); + } + + protected void onTransition(int oldMode, int newMode, boolean animate) { + applyModeBackground(oldMode, newMode, animate); + } + + protected void applyModeBackground(int oldMode, int newMode, boolean animate) { + if (DEBUG) Log.d(mTag, String.format("applyModeBackground oldMode=%s newMode=%s animate=%s", + modeToString(oldMode), modeToString(newMode), animate)); + mBarBackground.applyModeBackground(oldMode, newMode, animate); + } + + public static String modeToString(int mode) { + if (mode == MODE_OPAQUE) return "MODE_OPAQUE"; + if (mode == MODE_SEMI_TRANSPARENT) return "MODE_SEMI_TRANSPARENT"; + if (mode == MODE_TRANSLUCENT) return "MODE_TRANSLUCENT"; + if (mode == MODE_LIGHTS_OUT) return "MODE_LIGHTS_OUT"; + if (mode == MODE_TRANSPARENT) return "MODE_TRANSPARENT"; + if (mode == MODE_WARNING) return "MODE_WARNING"; + if (mode == MODE_LIGHTS_OUT_TRANSPARENT) return "MODE_LIGHTS_OUT_TRANSPARENT"; + throw new IllegalArgumentException("Unknown mode " + mode); + } + + public void finishAnimations() { + mBarBackground.finishAnimation(); + } + + protected boolean isLightsOut(int mode) { + return mode == MODE_LIGHTS_OUT || mode == MODE_LIGHTS_OUT_TRANSPARENT; + } + + protected static class BarBackgroundDrawable extends Drawable { + private final int mOpaque; + private final int mSemiTransparent; + private final int mTransparent; + private final int mWarning; + private final Drawable mGradient; + + private int mMode = -1; + private boolean mAnimating; + private long mStartTime; + private long mEndTime; + + private int mGradientAlpha; + private int mColor; + private float mOverrideAlpha = 1f; + private PorterDuffColorFilter mTintFilter; + private Paint mPaint = new Paint(); + + private int mGradientAlphaStart; + private int mColorStart; + private Rect mFrame; + + + public BarBackgroundDrawable(Context context, int gradientResourceId) { + final Resources res = context.getResources(); + if (DEBUG_COLORS) { + mOpaque = 0xff0000ff; + mSemiTransparent = 0x7f0000ff; + mTransparent = 0x2f0000ff; + mWarning = 0xffff0000; + } else { + mOpaque = SYSTEM_BAR_BACKGROUND_OPAQUE; + mSemiTransparent = context.getColor( + com.android.internal.R.color.system_bar_background_semi_transparent); + mTransparent = SYSTEM_BAR_BACKGROUND_TRANSPARENT; + mWarning = getColorAttrDefaultColor(context, android.R.attr.colorError, 0); + } + mGradient = context.getDrawable(gradientResourceId); + } + + public void setFrame(Rect frame) { + mFrame = frame; + } + + public void setOverrideAlpha(float overrideAlpha) { + mOverrideAlpha = overrideAlpha; + invalidateSelf(); + } + + public float getOverrideAlpha() { + return mOverrideAlpha; + } + + public int getColor() { + return mColor; + } + + public Rect getFrame() { + return mFrame; + } + + @Override + public void setAlpha(int alpha) { + // noop + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + // noop + } + + @Override + public void setTint(int color) { + PorterDuff.Mode targetMode = mTintFilter == null ? Mode.SRC_IN : + mTintFilter.getMode(); + if (mTintFilter == null || mTintFilter.getColor() != color) { + mTintFilter = new PorterDuffColorFilter(color, targetMode); + } + invalidateSelf(); + } + + @Override + public void setTintMode(Mode tintMode) { + int targetColor = mTintFilter == null ? 0 : mTintFilter.getColor(); + if (mTintFilter == null || mTintFilter.getMode() != tintMode) { + mTintFilter = new PorterDuffColorFilter(targetColor, tintMode); + } + invalidateSelf(); + } + + @Override + protected void onBoundsChange(Rect bounds) { + super.onBoundsChange(bounds); + mGradient.setBounds(bounds); + } + + public void applyModeBackground(int oldMode, int newMode, boolean animate) { + if (mMode == newMode) return; + mMode = newMode; + mAnimating = animate; + if (animate) { + long now = SystemClock.elapsedRealtime(); + mStartTime = now; + mEndTime = now + BACKGROUND_DURATION; + mGradientAlphaStart = mGradientAlpha; + mColorStart = mColor; + } + invalidateSelf(); + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSLUCENT; + } + + public void finishAnimation() { + if (mAnimating) { + mAnimating = false; + invalidateSelf(); + } + } + + @Override + public void draw(Canvas canvas) { + int targetGradientAlpha = 0, targetColor = 0; + if (mMode == MODE_WARNING) { + targetColor = mWarning; + } else if (mMode == MODE_TRANSLUCENT) { + targetColor = mSemiTransparent; + } else if (mMode == MODE_SEMI_TRANSPARENT) { + targetColor = mSemiTransparent; + } else if (mMode == MODE_TRANSPARENT || mMode == MODE_LIGHTS_OUT_TRANSPARENT) { + targetColor = mTransparent; + } else { + targetColor = mOpaque; + } + + if (!mAnimating) { + mColor = targetColor; + mGradientAlpha = targetGradientAlpha; + } else { + final long now = SystemClock.elapsedRealtime(); + if (now >= mEndTime) { + mAnimating = false; + mColor = targetColor; + mGradientAlpha = targetGradientAlpha; + } else { + final float t = (now - mStartTime) / (float)(mEndTime - mStartTime); + final float v = Math.max(0, Math.min( + Interpolators.LINEAR.getInterpolation(t), 1)); + mGradientAlpha = (int)(v * targetGradientAlpha + mGradientAlphaStart * (1 - v)); + mColor = Color.argb( + (int) (v * Color.alpha(targetColor) + Color.alpha(mColorStart) * (1 + - v)), + (int) (v * Color.red(targetColor) + Color.red(mColorStart) * (1 - v)), + (int) (v * Color.green(targetColor) + Color.green(mColorStart) * (1 + - v)), + (int) (v * Color.blue(targetColor) + Color.blue(mColorStart) * (1 + - v))); + } + } + if (mGradientAlpha > 0) { + mGradient.setAlpha(mGradientAlpha); + mGradient.draw(canvas); + } + + if (Color.alpha(mColor) > 0) { + mPaint.setColor(mColor); + if (mTintFilter != null) { + mPaint.setColorFilter(mTintFilter); + } + mPaint.setAlpha((int) (Color.alpha(mColor) * mOverrideAlpha)); + if (mFrame != null) { + canvas.drawRect(mFrame, mPaint); + } else { + canvas.drawPaint(mPaint); + } + } + if (mAnimating) { + invalidateSelf(); // keep going + } + } + } + + /** Get color styled attribute {@code attr}, default to {@code defValue} if not found. */ + @ColorInt + public static int getColorAttrDefaultColor(Context context, int attr, @ColorInt int defValue) { + TypedArray ta = context.obtainStyledAttributes(new int[] {attr}); + @ColorInt int colorAccent = ta.getColor(0, defValue); + ta.recycle(); + return colorAccent; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java index 2e5ff9ddb477..b39315575882 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java @@ -27,11 +27,11 @@ import static com.android.systemui.accessibility.SystemActions.SYSTEM_ACTION_ID_ import static com.android.systemui.accessibility.SystemActions.SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON_CHOOSER; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT; import android.content.ContentResolver; import android.content.Context; @@ -74,10 +74,10 @@ import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.settings.DisplayTracker; import com.android.systemui.settings.UserTracker; import com.android.systemui.shared.rotation.RotationPolicyUtil; +import com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.NotificationShadeWindowController; -import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; import com.android.systemui.statusbar.phone.CentralSurfaces; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index 69aa450a9d4c..89dce032c727 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -48,8 +48,8 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_I import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING; import static com.android.systemui.shared.system.QuickStepContract.isGesturalMode; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; -import static com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode; import static com.android.systemui.statusbar.phone.CentralSurfaces.DEBUG_WINDOW_STATE; import static com.android.systemui.statusbar.phone.CentralSurfaces.dumpBarTransitions; import static com.android.systemui.util.Utils.isGesturalModeOnDefaultDisplay; @@ -137,6 +137,7 @@ import com.android.systemui.shared.navigationbar.RegionSamplingHelper; import com.android.systemui.shared.recents.utilities.Utilities; import com.android.systemui.shared.rotation.RotationButtonController; import com.android.systemui.shared.rotation.RotationPolicyUtil; +import com.android.systemui.shared.statusbar.phone.BarTransitions; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.shared.system.TaskStackChangeListener; @@ -149,7 +150,6 @@ import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.AutoHideController; -import com.android.systemui.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.phone.CentralSurfaces; import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java index a601d7f25b6e..c801662b2a66 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java @@ -19,7 +19,7 @@ package com.android.systemui.navigationbar; import androidx.annotation.Nullable; import com.android.internal.statusbar.RegisterStatusBarResult; -import com.android.systemui.statusbar.phone.BarTransitions; +import com.android.systemui.shared.statusbar.phone.BarTransitions; /** A controller to handle navigation bars. */ public interface NavigationBarController { diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerEmptyImpl.kt b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerEmptyImpl.kt index e73b078a3d88..06a78c59ef04 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerEmptyImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerEmptyImpl.kt @@ -18,7 +18,7 @@ package com.android.systemui.navigationbar import com.android.internal.statusbar.RegisterStatusBarResult import com.android.systemui.dagger.SysUISingleton -import com.android.systemui.statusbar.phone.BarTransitions +import com.android.systemui.shared.statusbar.phone.BarTransitions import javax.inject.Inject /** A no-op version of [NavigationBarController] for variants like Arc and TV. */ diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java index 1c2a0871f3f9..f0207aa69bf9 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java @@ -56,11 +56,11 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.model.SysUiState; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.settings.DisplayTracker; +import com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.AutoHideController; -import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.settings.SecureSettings; @@ -431,6 +431,8 @@ public class NavigationBarControllerImpl implements NavigationBar navBar = mNavigationBars.get(displayId); if (navBar != null) { navBar.checkNavBarModes(); + } else { + mTaskbarDelegate.checkNavBarModes(); } } @@ -439,6 +441,8 @@ public class NavigationBarControllerImpl implements NavigationBar navBar = mNavigationBars.get(displayId); if (navBar != null) { navBar.finishBarAnimations(); + } else { + mTaskbarDelegate.finishBarAnimations(); } } @@ -447,6 +451,8 @@ public class NavigationBarControllerImpl implements NavigationBar navBar = mNavigationBars.get(displayId); if (navBar != null) { navBar.touchAutoDim(); + } else { + mTaskbarDelegate.touchAutoDim(); } } @@ -455,6 +461,8 @@ public class NavigationBarControllerImpl implements NavigationBar navBar = mNavigationBars.get(displayId); if (navBar != null) { navBar.transitionTo(barMode, animate); + } else { + mTaskbarDelegate.transitionTo(barMode, animate); } } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarTransitions.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarTransitions.java index 201e58625098..54425985cb8c 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarTransitions.java @@ -28,7 +28,7 @@ import com.android.systemui.navigationbar.NavigationBarComponent.NavigationBarSc import com.android.systemui.navigationbar.buttons.ButtonDispatcher; import com.android.systemui.res.R; import com.android.systemui.settings.DisplayTracker; -import com.android.systemui.statusbar.phone.BarTransitions; +import com.android.systemui.shared.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.phone.LightBarTransitionsController; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java index b360af098fa0..d022c1c2e948 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -24,6 +24,7 @@ import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_B import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static com.android.systemui.navigationbar.NavBarHelper.transitionMode; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY; @@ -34,7 +35,6 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_I import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING; -import static com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; import android.app.StatusBarManager; import android.app.StatusBarManager.WindowVisibleState; @@ -63,13 +63,16 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; +import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.shared.statusbar.phone.BarTransitions; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.AutoHideUiElement; import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.phone.LightBarTransitionsController; @@ -117,6 +120,11 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, boolean longPressHomeEnabled) { updateAssistantAvailability(available, longPressHomeEnabled); } + + @Override + public void updateWallpaperVisibility(boolean visible, int displayId) { + updateWallpaperVisible(displayId, visible); + } }; private int mDisabledFlags; private @WindowVisibleState int mTaskBarWindowState = WINDOW_STATE_SHOWING; @@ -150,6 +158,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, private final AutoHideUiElement mAutoHideUiElement = new AutoHideUiElement() { @Override public void synchronizeState() { + checkNavBarModes(); } @Override @@ -165,11 +174,13 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, private BackAnimation mBackAnimation; - private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; + private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; + private final StatusBarStateController mStatusBarStateController; @Inject public TaskbarDelegate(Context context, LightBarTransitionsController.Factory lightBarTransitionsControllerFactory, - StatusBarKeyguardViewManager statusBarKeyguardViewManager) { + StatusBarKeyguardViewManager statusBarKeyguardViewManager, + StatusBarStateController statusBarStateController) { mLightBarTransitionsControllerFactory = lightBarTransitionsControllerFactory; mContext = context; @@ -179,6 +190,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, }; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mStatusBarKeyguardViewManager.setTaskbarDelegate(this); + mStatusBarStateController = statusBarStateController; } public void setDependencies(CommandQueue commandQueue, @@ -324,6 +336,68 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, return (mSysUiState.getFlags() & View.STATUS_BAR_DISABLE_RECENT) == 0; } + void onTransitionModeUpdated(int barMode, boolean checkBarModes) { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + mOverviewProxyService.getProxy().onTransitionModeUpdated(barMode, checkBarModes); + } catch (RemoteException e) { + Log.e(TAG, "onTransitionModeUpdated() failed, barMode: " + barMode, e); + } + } + + void checkNavBarModes() { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + mOverviewProxyService.getProxy().checkNavBarModes(); + } catch (RemoteException e) { + Log.e(TAG, "checkNavBarModes() failed", e); + } + } + + void finishBarAnimations() { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + mOverviewProxyService.getProxy().finishBarAnimations(); + } catch (RemoteException e) { + Log.e(TAG, "finishBarAnimations() failed", e); + } + } + + void touchAutoDim() { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + int state = mStatusBarStateController.getState(); + boolean shouldReset = + state != StatusBarState.KEYGUARD && state != StatusBarState.SHADE_LOCKED; + mOverviewProxyService.getProxy().touchAutoDim(shouldReset); + } catch (RemoteException e) { + Log.e(TAG, "touchAutoDim() failed", e); + } + } + + void transitionTo(@BarTransitions.TransitionMode int barMode, boolean animate) { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + mOverviewProxyService.getProxy().transitionTo(barMode, animate); + } catch (RemoteException e) { + Log.e(TAG, "transitionTo() failed, barMode: " + barMode, e); + } + } private void updateAssistantAvailability(boolean assistantAvailable, boolean longPressHomeEnabled) { if (mOverviewProxyService.getProxy() == null) { @@ -338,6 +412,18 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, } } + private void updateWallpaperVisible(int displayId, boolean visible) { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + mOverviewProxyService.getProxy().updateWallpaperVisibility(displayId, visible); + } catch (RemoteException e) { + Log.e(TAG, "updateWallpaperVisibility() failed, visible: " + visible, e); + } + } + @Override public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition, boolean showImeSwitcher) { @@ -465,9 +551,11 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, private boolean updateTransitionMode(int barMode) { if (mTransitionMode != barMode) { mTransitionMode = barMode; + onTransitionModeUpdated(barMode, true); if (mAutoHideController != null) { mAutoHideController.touchAutoHide(); } + return true; } return false; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/model/StatusBarMode.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/model/StatusBarMode.kt index 933d0ab880bd..b4670320bdc0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/data/model/StatusBarMode.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/model/StatusBarMode.kt @@ -16,13 +16,13 @@ package com.android.systemui.statusbar.data.model -import com.android.systemui.statusbar.phone.BarTransitions -import com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE -import com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT -import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode +import com.android.systemui.shared.statusbar.phone.BarTransitions +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode /** * The possible status bar modes. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java deleted file mode 100644 index f62a79f199e9..000000000000 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (C) 2013 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.statusbar.phone; - -import android.annotation.IntDef; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.ColorFilter; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.graphics.PorterDuff; -import android.graphics.PorterDuff.Mode; -import android.graphics.PorterDuffColorFilter; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.os.SystemClock; -import android.util.Log; -import android.view.View; - -import com.android.app.animation.Interpolators; -import com.android.settingslib.Utils; -import com.android.systemui.res.R; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -public class BarTransitions { - private static final boolean DEBUG = false; - private static final boolean DEBUG_COLORS = false; - - public static final int MODE_TRANSPARENT = 0; - public static final int MODE_SEMI_TRANSPARENT = 1; - public static final int MODE_TRANSLUCENT = 2; - public static final int MODE_LIGHTS_OUT = 3; - public static final int MODE_OPAQUE = 4; - public static final int MODE_WARNING = 5; - public static final int MODE_LIGHTS_OUT_TRANSPARENT = 6; - - @IntDef(flag = true, prefix = { "MODE_" }, value = { - MODE_OPAQUE, - MODE_SEMI_TRANSPARENT, - MODE_TRANSLUCENT, - MODE_LIGHTS_OUT, - MODE_TRANSPARENT, - MODE_WARNING, - MODE_LIGHTS_OUT_TRANSPARENT - }) - @Retention(RetentionPolicy.SOURCE) - public @interface TransitionMode {} - - public static final int LIGHTS_IN_DURATION = 250; - public static final int LIGHTS_OUT_DURATION = 1500; - public static final int BACKGROUND_DURATION = 200; - - private final String mTag; - private final View mView; - protected final BarBackgroundDrawable mBarBackground; - - private @TransitionMode int mMode; - private boolean mAlwaysOpaque = false; - - public BarTransitions(View view, int gradientResourceId) { - mTag = "BarTransitions." + view.getClass().getSimpleName(); - mView = view; - mBarBackground = new BarBackgroundDrawable(mView.getContext(), gradientResourceId); - mView.setBackground(mBarBackground); - } - - public void destroy() { - // To be overridden - } - - public int getMode() { - return mMode; - } - - public void setAutoDim(boolean autoDim) { - // Default is don't care. - } - - /** - * @param alwaysOpaque if {@code true}, the bar's background will always be opaque, regardless - * of what mode it is currently set to. - */ - public void setAlwaysOpaque(boolean alwaysOpaque) { - mAlwaysOpaque = alwaysOpaque; - } - - public boolean isAlwaysOpaque() { - // Low-end devices do not support translucent modes, fallback to opaque - return mAlwaysOpaque; - } - - public void transitionTo(int mode, boolean animate) { - if (isAlwaysOpaque() && (mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSLUCENT - || mode == MODE_TRANSPARENT)) { - mode = MODE_OPAQUE; - } - if (isAlwaysOpaque() && (mode == MODE_LIGHTS_OUT_TRANSPARENT)) { - mode = MODE_LIGHTS_OUT; - } - if (mMode == mode) return; - int oldMode = mMode; - mMode = mode; - if (DEBUG) Log.d(mTag, String.format("%s -> %s animate=%s", - modeToString(oldMode), modeToString(mode), animate)); - onTransition(oldMode, mMode, animate); - } - - protected void onTransition(int oldMode, int newMode, boolean animate) { - applyModeBackground(oldMode, newMode, animate); - } - - protected void applyModeBackground(int oldMode, int newMode, boolean animate) { - if (DEBUG) Log.d(mTag, String.format("applyModeBackground oldMode=%s newMode=%s animate=%s", - modeToString(oldMode), modeToString(newMode), animate)); - mBarBackground.applyModeBackground(oldMode, newMode, animate); - } - - public static String modeToString(int mode) { - if (mode == MODE_OPAQUE) return "MODE_OPAQUE"; - if (mode == MODE_SEMI_TRANSPARENT) return "MODE_SEMI_TRANSPARENT"; - if (mode == MODE_TRANSLUCENT) return "MODE_TRANSLUCENT"; - if (mode == MODE_LIGHTS_OUT) return "MODE_LIGHTS_OUT"; - if (mode == MODE_TRANSPARENT) return "MODE_TRANSPARENT"; - if (mode == MODE_WARNING) return "MODE_WARNING"; - if (mode == MODE_LIGHTS_OUT_TRANSPARENT) return "MODE_LIGHTS_OUT_TRANSPARENT"; - throw new IllegalArgumentException("Unknown mode " + mode); - } - - public void finishAnimations() { - mBarBackground.finishAnimation(); - } - - protected boolean isLightsOut(int mode) { - return mode == MODE_LIGHTS_OUT || mode == MODE_LIGHTS_OUT_TRANSPARENT; - } - - protected static class BarBackgroundDrawable extends Drawable { - private final int mOpaque; - private final int mSemiTransparent; - private final int mTransparent; - private final int mWarning; - private final Drawable mGradient; - - private int mMode = -1; - private boolean mAnimating; - private long mStartTime; - private long mEndTime; - - private int mGradientAlpha; - private int mColor; - private float mOverrideAlpha = 1f; - private PorterDuffColorFilter mTintFilter; - private Paint mPaint = new Paint(); - - private int mGradientAlphaStart; - private int mColorStart; - private Rect mFrame; - - - public BarBackgroundDrawable(Context context, int gradientResourceId) { - final Resources res = context.getResources(); - if (DEBUG_COLORS) { - mOpaque = 0xff0000ff; - mSemiTransparent = 0x7f0000ff; - mTransparent = 0x2f0000ff; - mWarning = 0xffff0000; - } else { - mOpaque = context.getColor(R.color.system_bar_background_opaque); - mSemiTransparent = context.getColor( - com.android.internal.R.color.system_bar_background_semi_transparent); - mTransparent = context.getColor(R.color.system_bar_background_transparent); - mWarning = Utils.getColorAttrDefaultColor(context, android.R.attr.colorError); - } - mGradient = context.getDrawable(gradientResourceId); - } - - public void setFrame(Rect frame) { - mFrame = frame; - } - - public void setOverrideAlpha(float overrideAlpha) { - mOverrideAlpha = overrideAlpha; - invalidateSelf(); - } - - public float getOverrideAlpha() { - return mOverrideAlpha; - } - - public int getColor() { - return mColor; - } - - public Rect getFrame() { - return mFrame; - } - - @Override - public void setAlpha(int alpha) { - // noop - } - - @Override - public void setColorFilter(ColorFilter colorFilter) { - // noop - } - - @Override - public void setTint(int color) { - PorterDuff.Mode targetMode = mTintFilter == null ? Mode.SRC_IN : - mTintFilter.getMode(); - if (mTintFilter == null || mTintFilter.getColor() != color) { - mTintFilter = new PorterDuffColorFilter(color, targetMode); - } - invalidateSelf(); - } - - @Override - public void setTintMode(Mode tintMode) { - int targetColor = mTintFilter == null ? 0 : mTintFilter.getColor(); - if (mTintFilter == null || mTintFilter.getMode() != tintMode) { - mTintFilter = new PorterDuffColorFilter(targetColor, tintMode); - } - invalidateSelf(); - } - - @Override - protected void onBoundsChange(Rect bounds) { - super.onBoundsChange(bounds); - mGradient.setBounds(bounds); - } - - public void applyModeBackground(int oldMode, int newMode, boolean animate) { - if (mMode == newMode) return; - mMode = newMode; - mAnimating = animate; - if (animate) { - long now = SystemClock.elapsedRealtime(); - mStartTime = now; - mEndTime = now + BACKGROUND_DURATION; - mGradientAlphaStart = mGradientAlpha; - mColorStart = mColor; - } - invalidateSelf(); - } - - @Override - public int getOpacity() { - return PixelFormat.TRANSLUCENT; - } - - public void finishAnimation() { - if (mAnimating) { - mAnimating = false; - invalidateSelf(); - } - } - - @Override - public void draw(Canvas canvas) { - int targetGradientAlpha = 0, targetColor = 0; - if (mMode == MODE_WARNING) { - targetColor = mWarning; - } else if (mMode == MODE_TRANSLUCENT) { - targetColor = mSemiTransparent; - } else if (mMode == MODE_SEMI_TRANSPARENT) { - targetColor = mSemiTransparent; - } else if (mMode == MODE_TRANSPARENT || mMode == MODE_LIGHTS_OUT_TRANSPARENT) { - targetColor = mTransparent; - } else { - targetColor = mOpaque; - } - - if (!mAnimating) { - mColor = targetColor; - mGradientAlpha = targetGradientAlpha; - } else { - final long now = SystemClock.elapsedRealtime(); - if (now >= mEndTime) { - mAnimating = false; - mColor = targetColor; - mGradientAlpha = targetGradientAlpha; - } else { - final float t = (now - mStartTime) / (float)(mEndTime - mStartTime); - final float v = Math.max(0, Math.min( - Interpolators.LINEAR.getInterpolation(t), 1)); - mGradientAlpha = (int)(v * targetGradientAlpha + mGradientAlphaStart * (1 - v)); - mColor = Color.argb( - (int)(v * Color.alpha(targetColor) + Color.alpha(mColorStart) * (1 - v)), - (int)(v * Color.red(targetColor) + Color.red(mColorStart) * (1 - v)), - (int)(v * Color.green(targetColor) + Color.green(mColorStart) * (1 - v)), - (int)(v * Color.blue(targetColor) + Color.blue(mColorStart) * (1 - v))); - } - } - if (mGradientAlpha > 0) { - mGradient.setAlpha(mGradientAlpha); - mGradient.draw(canvas); - } - - if (Color.alpha(mColor) > 0) { - mPaint.setColor(mColor); - if (mTintFilter != null) { - mPaint.setColorFilter(mTintFilter); - } - mPaint.setAlpha((int) (Color.alpha(mColor) * mOverrideAlpha)); - if (mFrame != null) { - canvas.drawRect(mFrame, mPaint); - } else { - canvas.drawPaint(mPaint); - } - } - if (mAnimating) { - invalidateSelf(); // keep going - } - } - } -} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java index d75a738898b3..0a02381da4d5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java @@ -44,6 +44,7 @@ import com.android.systemui.display.data.repository.DisplayMetricsRepository; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.qs.QSPanelController; +import com.android.systemui.shared.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.util.Compile; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index 5c262f3124a9..28117e9c9f93 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -181,6 +181,7 @@ import com.android.systemui.shade.ShadeLogger; import com.android.systemui.shade.ShadeSurface; import com.android.systemui.shade.ShadeViewController; import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.shared.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.AutoHideUiElement; import com.android.systemui.statusbar.CircleReveal; import com.android.systemui.statusbar.CommandQueue; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java index eec617bf91d3..a33996b99900 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java @@ -19,8 +19,8 @@ package com.android.systemui.statusbar.phone; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT; import android.content.Context; import android.graphics.Rect; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java index ae3f92355510..6676a7f7cdf8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.view.View; import com.android.systemui.res.R; +import com.android.systemui.shared.statusbar.phone.BarTransitions; public final class PhoneStatusBarTransitions extends BarTransitions { private static final float ICON_ALPHA_WHEN_NOT_OPAQUE = 1; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java index 29c13723ca89..25b8bfe0da25 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java @@ -16,11 +16,11 @@ package com.android.systemui.statusbar.phone; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSLUCENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_WARNING; import static com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentModule.OPERATOR_NAME_VIEW; import android.annotation.NonNull; diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java index fbfd35fd5b9c..c7a92d2a390d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java @@ -36,7 +36,7 @@ import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.settings.FakeDisplayTracker; -import com.android.systemui.statusbar.phone.BarTransitions; +import com.android.systemui.shared.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.phone.LightBarTransitionsController; import com.android.systemui.statusbar.policy.KeyguardStateController; diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt index 5ed8a11e862f..eae6cdbe4d2c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt @@ -7,6 +7,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.dump.DumpManager import com.android.systemui.model.SysUiState import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler +import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.recents.OverviewProxyService import com.android.systemui.shared.system.QuickStepContract import com.android.systemui.shared.system.TaskStackChangeListeners @@ -70,6 +71,8 @@ class TaskbarDelegateTest : SysuiTestCase() { lateinit var mCurrentSysUiState: NavBarHelper.CurrentSysuiState @Mock lateinit var mStatusBarKeyguardViewManager: StatusBarKeyguardViewManager + @Mock + lateinit var mStatusBarStateController: StatusBarStateController @Before fun setup() { @@ -80,7 +83,7 @@ class TaskbarDelegateTest : SysuiTestCase() { `when`(mSysUiState.setFlag(anyLong(), anyBoolean())).thenReturn(mSysUiState) mTaskStackChangeListeners = TaskStackChangeListeners.getTestInstance() mTaskbarDelegate = TaskbarDelegate(context, mLightBarControllerFactory, - mStatusBarKeyguardViewManager) + mStatusBarKeyguardViewManager, mStatusBarStateController) mTaskbarDelegate.setDependencies(mCommandQueue, mOverviewProxyService, mNavBarHelper, mNavigationModeController, mSysUiState, mDumpManager, mAutoHideController, mLightBarController, mOptionalPip, mBackAnimation, mTaskStackChangeListeners) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java index a27073c77eb4..88ec18dd65f3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java @@ -18,7 +18,7 @@ package com.android.systemui.statusbar.phone; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT; +import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT; import static junit.framework.Assert.assertTrue; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitionsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitionsTest.kt index c4568a9ecfe6..318656b1a94d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitionsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitionsTest.kt @@ -21,12 +21,12 @@ import android.view.View import androidx.test.filters.SmallTest import com.android.systemui.res.R import com.android.systemui.SysuiTestCase -import com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE -import com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT -import com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSLUCENT +import com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever -- cgit v1.2.3-59-g8ed1b