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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user