summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tony Wickham <twickham@google.com> 2021-11-22 22:24:28 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-11-22 22:24:28 +0000
commit99e406deabf3912f0055306f07c561485ed16821 (patch)
treeea727be994e82809f6ce29354fda3b11ef0f7e5a
parent3153178eee8ba1bbbf96496b07e07c55422c0297 (diff)
parentf74f259b830ae698b947f01a795d6ae7f94f8fb3 (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
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl5
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java39
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java4
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();
}