Merge "Make LightBarTransitionsController injectable." into tm-dev
This commit is contained in:
@@ -32,9 +32,11 @@ import android.view.View;
|
|||||||
import com.android.systemui.Dependency;
|
import com.android.systemui.Dependency;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.navigationbar.buttons.ButtonDispatcher;
|
import com.android.systemui.navigationbar.buttons.ButtonDispatcher;
|
||||||
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.phone.BarTransitions;
|
import com.android.systemui.statusbar.phone.BarTransitions;
|
||||||
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
|
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
|
||||||
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -83,7 +85,11 @@ public final class NavigationBarTransitions extends BarTransitions implements
|
|||||||
super(view, R.drawable.nav_background);
|
super(view, R.drawable.nav_background);
|
||||||
mView = view;
|
mView = view;
|
||||||
mLightTransitionsController = new LightBarTransitionsController(
|
mLightTransitionsController = new LightBarTransitionsController(
|
||||||
view.getContext(), this, commandQueue);
|
view.getContext(),
|
||||||
|
this,
|
||||||
|
commandQueue,
|
||||||
|
Dependency.get(KeyguardStateController.class),
|
||||||
|
Dependency.get(StatusBarStateController.class));
|
||||||
mAllowAutoDimWallpaperNotVisible = view.getContext().getResources()
|
mAllowAutoDimWallpaperNotVisible = view.getContext().getResources()
|
||||||
.getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper);
|
.getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper);
|
||||||
mDarkIntensityListeners = new ArrayList();
|
mDarkIntensityListeners = new ArrayList();
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ import android.view.WindowInsetsController.Behavior;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.systemui.Dependency;
|
|
||||||
import com.android.systemui.Dumpable;
|
import com.android.systemui.Dumpable;
|
||||||
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.model.SysUiState;
|
import com.android.systemui.model.SysUiState;
|
||||||
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
|
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
|
||||||
@@ -78,9 +78,9 @@ import java.util.Optional;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
|
||||||
|
|
||||||
@Singleton
|
/** */
|
||||||
|
@SysUISingleton
|
||||||
public class TaskbarDelegate implements CommandQueue.Callbacks,
|
public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||||
OverviewProxyService.OverviewProxyListener, NavigationModeController.ModeChangedListener,
|
OverviewProxyService.OverviewProxyListener, NavigationModeController.ModeChangedListener,
|
||||||
ComponentCallbacks, Dumpable {
|
ComponentCallbacks, Dumpable {
|
||||||
@@ -88,6 +88,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
|||||||
|
|
||||||
private final EdgeBackGestureHandler mEdgeBackGestureHandler;
|
private final EdgeBackGestureHandler mEdgeBackGestureHandler;
|
||||||
private final NavigationBarOverlayController mNavBarOverlayController;
|
private final NavigationBarOverlayController mNavBarOverlayController;
|
||||||
|
private final LightBarTransitionsController.Factory mLightBarTransitionsControllerFactory;
|
||||||
private boolean mInitialized;
|
private boolean mInitialized;
|
||||||
private CommandQueue mCommandQueue;
|
private CommandQueue mCommandQueue;
|
||||||
private OverviewProxyService mOverviewProxyService;
|
private OverviewProxyService mOverviewProxyService;
|
||||||
@@ -154,10 +155,15 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
|||||||
private BackAnimation mBackAnimation;
|
private BackAnimation mBackAnimation;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public TaskbarDelegate(Context context) {
|
public TaskbarDelegate(
|
||||||
mEdgeBackGestureHandler = Dependency.get(EdgeBackGestureHandler.Factory.class)
|
Context context,
|
||||||
.create(context);
|
EdgeBackGestureHandler.Factory edgeBackGestureHandlerFactory,
|
||||||
mNavBarOverlayController = Dependency.get(NavigationBarOverlayController.class);
|
NavigationBarOverlayController navigationBarOverlayController,
|
||||||
|
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory
|
||||||
|
) {
|
||||||
|
mLightBarTransitionsControllerFactory = lightBarTransitionsControllerFactory;
|
||||||
|
mEdgeBackGestureHandler = edgeBackGestureHandlerFactory.create(context);
|
||||||
|
mNavBarOverlayController = navigationBarOverlayController;
|
||||||
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
||||||
mNavBarOverlayController.init(mNavbarOverlayVisibilityChangeCallback,
|
mNavBarOverlayController.init(mNavbarOverlayVisibilityChangeCallback,
|
||||||
mEdgeBackGestureHandler::updateNavigationBarOverlayExcludeRegion);
|
mEdgeBackGestureHandler::updateNavigationBarOverlayExcludeRegion);
|
||||||
@@ -185,14 +191,15 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
|||||||
dumpManager.registerDumpable(this);
|
dumpManager.registerDumpable(this);
|
||||||
mAutoHideController = autoHideController;
|
mAutoHideController = autoHideController;
|
||||||
mLightBarController = lightBarController;
|
mLightBarController = lightBarController;
|
||||||
mLightBarTransitionsController = createLightBarTransitionsController();
|
|
||||||
mPipOptional = pipOptional;
|
mPipOptional = pipOptional;
|
||||||
mBackAnimation = backAnimation;
|
mBackAnimation = backAnimation;
|
||||||
|
mLightBarTransitionsController = createLightBarTransitionsController();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Separated into a method to keep setDependencies() clean/readable.
|
// Separated into a method to keep setDependencies() clean/readable.
|
||||||
private LightBarTransitionsController createLightBarTransitionsController() {
|
private LightBarTransitionsController createLightBarTransitionsController() {
|
||||||
return new LightBarTransitionsController(mContext,
|
|
||||||
|
LightBarTransitionsController controller = mLightBarTransitionsControllerFactory.create(
|
||||||
new LightBarTransitionsController.DarkIntensityApplier() {
|
new LightBarTransitionsController.DarkIntensityApplier() {
|
||||||
@Override
|
@Override
|
||||||
public void applyDarkIntensity(float darkIntensity) {
|
public void applyDarkIntensity(float darkIntensity) {
|
||||||
@@ -203,13 +210,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
|||||||
public int getTintAnimationDuration() {
|
public int getTintAnimationDuration() {
|
||||||
return LightBarTransitionsController.DEFAULT_TINT_ANIMATION_DURATION;
|
return LightBarTransitionsController.DEFAULT_TINT_ANIMATION_DURATION;
|
||||||
}
|
}
|
||||||
}, mCommandQueue) {
|
});
|
||||||
@Override
|
controller.overrideIconTintForNavMode(true);
|
||||||
public boolean supportsIconTintForNavMode(int navigationMode) {
|
|
||||||
// Always tint taskbar nav buttons (region sampling handles gesture bar separately).
|
return controller;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init(int displayId) {
|
public void init(int displayId) {
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import android.widget.ImageView;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.dagger.SysUISingleton;
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -53,12 +52,12 @@ public class DarkIconDispatcherImpl implements SysuiDarkIconDispatcher,
|
|||||||
@Inject
|
@Inject
|
||||||
public DarkIconDispatcherImpl(
|
public DarkIconDispatcherImpl(
|
||||||
Context context,
|
Context context,
|
||||||
CommandQueue commandQueue,
|
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory,
|
||||||
DumpManager dumpManager) {
|
DumpManager dumpManager) {
|
||||||
mDarkModeIconColorSingleTone = context.getColor(R.color.dark_mode_icon_color_single_tone);
|
mDarkModeIconColorSingleTone = context.getColor(R.color.dark_mode_icon_color_single_tone);
|
||||||
mLightModeIconColorSingleTone = context.getColor(R.color.light_mode_icon_color_single_tone);
|
mLightModeIconColorSingleTone = context.getColor(R.color.light_mode_icon_color_single_tone);
|
||||||
|
|
||||||
mTransitionsController = new LightBarTransitionsController(context, this, commandQueue);
|
mTransitionsController = lightBarTransitionsControllerFactory.create(this);
|
||||||
|
|
||||||
dumpManager.registerDumpable(getClass().getSimpleName(), this);
|
dumpManager.registerDumpable(getClass().getSimpleName(), this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.os.SystemClock;
|
|||||||
import android.util.MathUtils;
|
import android.util.MathUtils;
|
||||||
import android.util.TimeUtils;
|
import android.util.TimeUtils;
|
||||||
|
|
||||||
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;
|
||||||
@@ -35,6 +34,10 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
|
|||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
import dagger.assisted.Assisted;
|
||||||
|
import dagger.assisted.AssistedFactory;
|
||||||
|
import dagger.assisted.AssistedInject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to control all aspects about light bar changes.
|
* Class to control all aspects about light bar changes.
|
||||||
*/
|
*/
|
||||||
@@ -69,13 +72,19 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
|
|||||||
};
|
};
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
private Boolean mOverrideIconTintForNavMode;
|
||||||
|
|
||||||
public LightBarTransitionsController(Context context, DarkIntensityApplier applier,
|
@AssistedInject
|
||||||
CommandQueue commandQueue) {
|
public LightBarTransitionsController(
|
||||||
|
Context context,
|
||||||
|
@Assisted DarkIntensityApplier applier,
|
||||||
|
CommandQueue commandQueue,
|
||||||
|
KeyguardStateController keyguardStateController,
|
||||||
|
StatusBarStateController statusBarStateController) {
|
||||||
mApplier = applier;
|
mApplier = applier;
|
||||||
mHandler = new Handler();
|
mHandler = new Handler();
|
||||||
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
|
mKeyguardStateController = keyguardStateController;
|
||||||
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
|
mStatusBarStateController = statusBarStateController;
|
||||||
mCommandQueue = commandQueue;
|
mCommandQueue = commandQueue;
|
||||||
mCommandQueue.addCallback(this);
|
mCommandQueue.addCallback(this);
|
||||||
mStatusBarStateController.addCallback(this);
|
mStatusBarStateController.addCallback(this);
|
||||||
@@ -229,12 +238,20 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
|
|||||||
dispatchDark();
|
dispatchDark();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify an override value to return for {@link #overrideIconTintForNavMode(boolean)}.
|
||||||
|
*/
|
||||||
|
public void overrideIconTintForNavMode(boolean overrideValue) {
|
||||||
|
mOverrideIconTintForNavMode = overrideValue;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Return whether to use the tint calculated in this class for nav icons.
|
* Return whether to use the tint calculated in this class for nav icons.
|
||||||
*/
|
*/
|
||||||
public boolean supportsIconTintForNavMode(int navigationMode) {
|
public boolean supportsIconTintForNavMode(int navigationMode) {
|
||||||
// In gesture mode, we already do region sampling to update tint based on content beneath.
|
// In gesture mode, we already do region sampling to update tint based on content beneath.
|
||||||
return !QuickStepContract.isGesturalMode(navigationMode);
|
return mOverrideIconTintForNavMode != null
|
||||||
|
? mOverrideIconTintForNavMode
|
||||||
|
: !QuickStepContract.isGesturalMode(navigationMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -244,4 +261,11 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
|
|||||||
void applyDarkIntensity(float darkIntensity);
|
void applyDarkIntensity(float darkIntensity);
|
||||||
int getTintAnimationDuration();
|
int getTintAnimationDuration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Injectable factory for construction a LightBarTransitionsController. */
|
||||||
|
@AssistedFactory
|
||||||
|
public interface Factory {
|
||||||
|
/** */
|
||||||
|
LightBarTransitionsController create(DarkIntensityApplier darkIntensityApplier);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,15 +45,18 @@ public class LightBarTransitionsControllerTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private DarkIntensityApplier mApplier;
|
private DarkIntensityApplier mApplier;
|
||||||
|
@Mock
|
||||||
|
private KeyguardStateController mKeyguardStateController;
|
||||||
|
@Mock
|
||||||
|
private StatusBarStateController mStatusBarStateController;
|
||||||
|
|
||||||
private LightBarTransitionsController mLightBarTransitionsController;
|
private LightBarTransitionsController mLightBarTransitionsController;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mDependency.injectMockDependency(KeyguardStateController.class);
|
|
||||||
mDependency.injectMockDependency(StatusBarStateController.class);
|
|
||||||
mLightBarTransitionsController = new LightBarTransitionsController(mContext, mApplier,
|
mLightBarTransitionsController = new LightBarTransitionsController(mContext, mApplier,
|
||||||
new CommandQueue(mContext));
|
new CommandQueue(mContext), mKeyguardStateController, mStatusBarStateController);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user