diff options
| author | 2021-11-22 22:24:28 +0000 | |
|---|---|---|
| committer | 2021-11-22 22:24:28 +0000 | |
| commit | 99e406deabf3912f0055306f07c561485ed16821 (patch) | |
| tree | ea727be994e82809f6ce29354fda3b11ef0f7e5a | |
| parent | 3153178eee8ba1bbbf96496b07e07c55422c0297 (diff) | |
| parent | f74f259b830ae698b947f01a795d6ae7f94f8fb3 (diff) | |
Merge "Pipe dark intensity through OverviewProxy" into sc-v2-dev am: f74f259b83
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16250155
Change-Id: I5abb8abad90bb24bf7472977be3d76d0045cffb7
7 files changed, 72 insertions, 6 deletions
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 8bd0f910dac3..01497516e0b1 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 @@ -95,4 +95,9 @@ oneway interface IOverviewProxy { * Sent when screen turned on and ready to use (blocker scrim is hidden) */ void onScreenTurnedOn() = 21; + + /** + * Sent when the desired dark intensity of the nav buttons has changed + */ + void onNavButtonsDarkIntensityChanged(float darkIntensity) = 22; } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java index 339877824b16..0429c022234d 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java @@ -57,6 +57,7 @@ import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.CommandQueue.Callbacks; 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 java.io.FileDescriptor; @@ -104,7 +105,8 @@ public class NavigationBarController implements TaskbarDelegate taskbarDelegate, NavigationBar.Factory navigationBarFactory, DumpManager dumpManager, - AutoHideController autoHideController) { + AutoHideController autoHideController, + LightBarController lightBarController) { mContext = context; mHandler = mainHandler; mNavigationBarFactory = navigationBarFactory; @@ -116,7 +118,7 @@ public class NavigationBarController implements mTaskbarDelegate = taskbarDelegate; mTaskbarDelegate.setDependencies(commandQueue, overviewProxyService, navBarHelper, navigationModeController, sysUiFlagsContainer, - dumpManager, autoHideController); + dumpManager, autoHideController, lightBarController); mIsTablet = isTablet(mContext); dumpManager.registerDumpable(this); } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java index 428d9d6993b7..3d58a5a81251 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -64,6 +64,9 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.statusbar.AutoHideUiElement; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.AutoHideController; +import com.android.systemui.statusbar.phone.BarTransitions; +import com.android.systemui.statusbar.phone.LightBarController; +import com.android.systemui.statusbar.phone.LightBarTransitionsController; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -85,6 +88,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, private NavigationModeController mNavigationModeController; private SysUiState mSysUiState; private AutoHideController mAutoHideController; + private LightBarController mLightBarController; + private LightBarTransitionsController mLightBarTransitionsController; private int mDisplayId; private int mNavigationIconHints; private final NavBarHelper.NavbarTaskbarStateUpdater mNavbarTaskbarStateUpdater = @@ -141,7 +146,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, NavBarHelper navBarHelper, NavigationModeController navigationModeController, SysUiState sysUiState, DumpManager dumpManager, - AutoHideController autoHideController) { + AutoHideController autoHideController, + LightBarController lightBarController) { // TODO: adding this in the ctor results in a dagger dependency cycle :( mCommandQueue = commandQueue; mOverviewProxyService = overviewProxyService; @@ -150,6 +156,30 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, mSysUiState = sysUiState; dumpManager.registerDumpable(this); mAutoHideController = autoHideController; + mLightBarController = lightBarController; + mLightBarTransitionsController = createLightBarTransitionsController(); + } + + // Separated into a method to keep setDependencies() clean/readable. + private LightBarTransitionsController createLightBarTransitionsController() { + return new LightBarTransitionsController(mContext, + new LightBarTransitionsController.DarkIntensityApplier() { + @Override + public void applyDarkIntensity(float darkIntensity) { + mOverviewProxyService.onNavButtonsDarkIntensityChanged(darkIntensity); + } + + @Override + public int getTintAnimationDuration() { + return LightBarTransitionsController.DEFAULT_TINT_ANIMATION_DURATION; + } + }, mCommandQueue) { + @Override + public boolean supportsIconTintForNavMode(int navigationMode) { + // Always tint taskbar nav buttons (region sampling handles gesture bar separately). + return true; + } + }; } public void init(int displayId) { @@ -171,6 +201,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, // Set initial state for any listeners updateSysuiFlags(); mAutoHideController.setNavigationBar(mAutoHideUiElement); + mLightBarController.setNavigationBar(mLightBarTransitionsController); mInitialized = true; } @@ -189,6 +220,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, mWindowContext = null; } mAutoHideController.setNavigationBar(null); + mLightBarTransitionsController.destroy(mContext); + mLightBarController.setNavigationBar(null); mInitialized = false; } @@ -268,6 +301,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior, InsetsVisibilities requestedVisibilities, String packageName) { mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior); + if (mLightBarController != null && displayId == mDisplayId) { + mLightBarController.onNavigationBarAppearanceChanged(appearance, false/*nbModeChanged*/, + BarTransitions.MODE_TRANSPARENT /*navigationBarMode*/, navbarColorManagedByIme); + } if (mBehavior != behavior) { mBehavior = behavior; updateSysuiFlags(); diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index fa874b19c2cc..3ed7e84af020 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -986,6 +986,18 @@ public class OverviewProxyService extends CurrentUserTracker implements } } + public void onNavButtonsDarkIntensityChanged(float darkIntensity) { + try { + if (mOverviewProxy != null) { + mOverviewProxy.onNavButtonsDarkIntensityChanged(darkIntensity); + } else { + Log.e(TAG_OPS, "Failed to get overview proxy to update nav buttons dark intensity"); + } + } catch (RemoteException e) { + Log.e(TAG_OPS, "Failed to call onNavButtonsDarkIntensityChanged()", e); + } + } + private void updateEnabledState() { final int currentUser = ActivityManagerWrapper.getInstance().getCurrentUserId(); mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent, 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 570b0ca3564c..88ae0db5bad0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java @@ -37,7 +37,6 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.DarkIconDispatcher; -import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.policy.BatteryController; import java.io.FileDescriptor; @@ -251,7 +250,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC private void updateNavigation() { if (mNavigationBarController != null - && !QuickStepContract.isGesturalMode(mNavigationMode)) { + && mNavigationBarController.supportsIconTintForNavMode(mNavigationMode)) { mNavigationBarController.setIconsDark(mNavigationLight, animateChange()); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java index 9021b74d1518..415fb92e37ce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java @@ -28,6 +28,7 @@ import com.android.systemui.Dependency; import com.android.systemui.Dumpable; import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.CommandQueue.Callbacks; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -230,6 +231,14 @@ public class LightBarTransitionsController implements Dumpable, Callbacks, } /** + * Return whether to use the tint calculated in this class for nav icons. + */ + public boolean supportsIconTintForNavMode(int navigationMode) { + // In gesture mode, we already do region sampling to update tint based on content beneath. + return !QuickStepContract.isGesturalMode(navigationMode); + } + + /** * Interface to apply a specific dark intensity. */ public interface DarkIntensityApplier { diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java index 31d88303485c..9d2541c0150f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java @@ -45,6 +45,7 @@ import com.android.systemui.model.SysUiState; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.AutoHideController; +import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.policy.ConfigurationController; import org.junit.After; @@ -86,7 +87,8 @@ public class NavigationBarControllerTest extends SysuiTestCase { mock(TaskbarDelegate.class), mNavigationBarFactory, mock(DumpManager.class), - mock(AutoHideController.class))); + mock(AutoHideController.class), + mock(LightBarController.class))); initializeNavigationBars(); } |