Pipe dark intensity through OverviewProxy
Test: in 3 button mode, nav buttons in taskbar are dark on light wallpaper; in both 3 button and fully gestural, IME dismiss button is dark on light IME Bug: 204256643 Change-Id: Ib6488a393e9cf021c806a5caf5b81654cf5164eb
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -229,6 +230,14 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
|
||||
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.
|
||||
*/
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user