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
This commit is contained in:
Tony Wickham
2021-11-22 22:24:28 +00:00
committed by Automerger Merge Worker
7 changed files with 72 additions and 6 deletions

View File

@@ -95,4 +95,9 @@ oneway interface IOverviewProxy {
* Sent when screen turned on and ready to use (blocker scrim is hidden) * Sent when screen turned on and ready to use (blocker scrim is hidden)
*/ */
void onScreenTurnedOn() = 21; void onScreenTurnedOn() = 21;
/**
* Sent when the desired dark intensity of the nav buttons has changed
*/
void onNavButtonsDarkIntensityChanged(float darkIntensity) = 22;
} }

View File

@@ -57,6 +57,7 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue.Callbacks; import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; 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.statusbar.policy.ConfigurationController;
import java.io.FileDescriptor; import java.io.FileDescriptor;
@@ -104,7 +105,8 @@ public class NavigationBarController implements
TaskbarDelegate taskbarDelegate, TaskbarDelegate taskbarDelegate,
NavigationBar.Factory navigationBarFactory, NavigationBar.Factory navigationBarFactory,
DumpManager dumpManager, DumpManager dumpManager,
AutoHideController autoHideController) { AutoHideController autoHideController,
LightBarController lightBarController) {
mContext = context; mContext = context;
mHandler = mainHandler; mHandler = mainHandler;
mNavigationBarFactory = navigationBarFactory; mNavigationBarFactory = navigationBarFactory;
@@ -116,7 +118,7 @@ public class NavigationBarController implements
mTaskbarDelegate = taskbarDelegate; mTaskbarDelegate = taskbarDelegate;
mTaskbarDelegate.setDependencies(commandQueue, overviewProxyService, mTaskbarDelegate.setDependencies(commandQueue, overviewProxyService,
navBarHelper, navigationModeController, sysUiFlagsContainer, navBarHelper, navigationModeController, sysUiFlagsContainer,
dumpManager, autoHideController); dumpManager, autoHideController, lightBarController);
mIsTablet = isTablet(mContext); mIsTablet = isTablet(mContext);
dumpManager.registerDumpable(this); dumpManager.registerDumpable(this);
} }

View File

@@ -64,6 +64,9 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.statusbar.AutoHideUiElement; import com.android.systemui.statusbar.AutoHideUiElement;
import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.AutoHideController; 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.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
@@ -85,6 +88,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
private NavigationModeController mNavigationModeController; private NavigationModeController mNavigationModeController;
private SysUiState mSysUiState; private SysUiState mSysUiState;
private AutoHideController mAutoHideController; private AutoHideController mAutoHideController;
private LightBarController mLightBarController;
private LightBarTransitionsController mLightBarTransitionsController;
private int mDisplayId; private int mDisplayId;
private int mNavigationIconHints; private int mNavigationIconHints;
private final NavBarHelper.NavbarTaskbarStateUpdater mNavbarTaskbarStateUpdater = private final NavBarHelper.NavbarTaskbarStateUpdater mNavbarTaskbarStateUpdater =
@@ -141,7 +146,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
NavBarHelper navBarHelper, NavBarHelper navBarHelper,
NavigationModeController navigationModeController, NavigationModeController navigationModeController,
SysUiState sysUiState, DumpManager dumpManager, SysUiState sysUiState, DumpManager dumpManager,
AutoHideController autoHideController) { AutoHideController autoHideController,
LightBarController lightBarController) {
// TODO: adding this in the ctor results in a dagger dependency cycle :( // TODO: adding this in the ctor results in a dagger dependency cycle :(
mCommandQueue = commandQueue; mCommandQueue = commandQueue;
mOverviewProxyService = overviewProxyService; mOverviewProxyService = overviewProxyService;
@@ -150,6 +156,30 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
mSysUiState = sysUiState; mSysUiState = sysUiState;
dumpManager.registerDumpable(this); dumpManager.registerDumpable(this);
mAutoHideController = autoHideController; 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) { public void init(int displayId) {
@@ -171,6 +201,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
// Set initial state for any listeners // Set initial state for any listeners
updateSysuiFlags(); updateSysuiFlags();
mAutoHideController.setNavigationBar(mAutoHideUiElement); mAutoHideController.setNavigationBar(mAutoHideUiElement);
mLightBarController.setNavigationBar(mLightBarTransitionsController);
mInitialized = true; mInitialized = true;
} }
@@ -189,6 +220,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
mWindowContext = null; mWindowContext = null;
} }
mAutoHideController.setNavigationBar(null); mAutoHideController.setNavigationBar(null);
mLightBarTransitionsController.destroy(mContext);
mLightBarController.setNavigationBar(null);
mInitialized = false; mInitialized = false;
} }
@@ -268,6 +301,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior, AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
InsetsVisibilities requestedVisibilities, String packageName) { InsetsVisibilities requestedVisibilities, String packageName) {
mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior); mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
if (mLightBarController != null && displayId == mDisplayId) {
mLightBarController.onNavigationBarAppearanceChanged(appearance, false/*nbModeChanged*/,
BarTransitions.MODE_TRANSPARENT /*navigationBarMode*/, navbarColorManagedByIme);
}
if (mBehavior != behavior) { if (mBehavior != behavior) {
mBehavior = behavior; mBehavior = behavior;
updateSysuiFlags(); updateSysuiFlags();

View File

@@ -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() { private void updateEnabledState() {
final int currentUser = ActivityManagerWrapper.getInstance().getCurrentUserId(); final int currentUser = ActivityManagerWrapper.getInstance().getCurrentUserId();
mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent, mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent,

View File

@@ -37,7 +37,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController;
import java.io.FileDescriptor; import java.io.FileDescriptor;
@@ -251,7 +250,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
private void updateNavigation() { private void updateNavigation() {
if (mNavigationBarController != null if (mNavigationBarController != null
&& !QuickStepContract.isGesturalMode(mNavigationMode)) { && mNavigationBarController.supportsIconTintForNavMode(mNavigationMode)) {
mNavigationBarController.setIconsDark(mNavigationLight, animateChange()); mNavigationBarController.setIconsDark(mNavigationLight, animateChange());
} }
} }

View File

@@ -28,6 +28,7 @@ import com.android.systemui.Dependency;
import com.android.systemui.Dumpable; import com.android.systemui.Dumpable;
import com.android.systemui.animation.Interpolators; import com.android.systemui.animation.Interpolators;
import com.android.systemui.plugins.statusbar.StatusBarStateController; 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;
import com.android.systemui.statusbar.CommandQueue.Callbacks; import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -229,6 +230,14 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
dispatchDark(); dispatchDark();
} }
/**
* 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. * Interface to apply a specific dark intensity.
*/ */

View File

@@ -45,6 +45,7 @@ import com.android.systemui.model.SysUiState;
import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import org.junit.After; import org.junit.After;
@@ -86,7 +87,8 @@ public class NavigationBarControllerTest extends SysuiTestCase {
mock(TaskbarDelegate.class), mock(TaskbarDelegate.class),
mNavigationBarFactory, mNavigationBarFactory,
mock(DumpManager.class), mock(DumpManager.class),
mock(AutoHideController.class))); mock(AutoHideController.class),
mock(LightBarController.class)));
initializeNavigationBars(); initializeNavigationBars();
} }