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.R;
|
||||
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.phone.BarTransitions;
|
||||
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -83,7 +85,11 @@ public final class NavigationBarTransitions extends BarTransitions implements
|
||||
super(view, R.drawable.nav_background);
|
||||
mView = view;
|
||||
mLightTransitionsController = new LightBarTransitionsController(
|
||||
view.getContext(), this, commandQueue);
|
||||
view.getContext(),
|
||||
this,
|
||||
commandQueue,
|
||||
Dependency.get(KeyguardStateController.class),
|
||||
Dependency.get(StatusBarStateController.class));
|
||||
mAllowAutoDimWallpaperNotVisible = view.getContext().getResources()
|
||||
.getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper);
|
||||
mDarkIntensityListeners = new ArrayList();
|
||||
|
||||
@@ -55,8 +55,8 @@ import android.view.WindowInsetsController.Behavior;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.internal.view.AppearanceRegion;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.Dumpable;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
|
||||
@@ -78,9 +78,9 @@ import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
/** */
|
||||
@SysUISingleton
|
||||
public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
OverviewProxyService.OverviewProxyListener, NavigationModeController.ModeChangedListener,
|
||||
ComponentCallbacks, Dumpable {
|
||||
@@ -88,6 +88,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
|
||||
private final EdgeBackGestureHandler mEdgeBackGestureHandler;
|
||||
private final NavigationBarOverlayController mNavBarOverlayController;
|
||||
private final LightBarTransitionsController.Factory mLightBarTransitionsControllerFactory;
|
||||
private boolean mInitialized;
|
||||
private CommandQueue mCommandQueue;
|
||||
private OverviewProxyService mOverviewProxyService;
|
||||
@@ -154,10 +155,15 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
private BackAnimation mBackAnimation;
|
||||
|
||||
@Inject
|
||||
public TaskbarDelegate(Context context) {
|
||||
mEdgeBackGestureHandler = Dependency.get(EdgeBackGestureHandler.Factory.class)
|
||||
.create(context);
|
||||
mNavBarOverlayController = Dependency.get(NavigationBarOverlayController.class);
|
||||
public TaskbarDelegate(
|
||||
Context context,
|
||||
EdgeBackGestureHandler.Factory edgeBackGestureHandlerFactory,
|
||||
NavigationBarOverlayController navigationBarOverlayController,
|
||||
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory
|
||||
) {
|
||||
mLightBarTransitionsControllerFactory = lightBarTransitionsControllerFactory;
|
||||
mEdgeBackGestureHandler = edgeBackGestureHandlerFactory.create(context);
|
||||
mNavBarOverlayController = navigationBarOverlayController;
|
||||
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
||||
mNavBarOverlayController.init(mNavbarOverlayVisibilityChangeCallback,
|
||||
mEdgeBackGestureHandler::updateNavigationBarOverlayExcludeRegion);
|
||||
@@ -185,14 +191,15 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
dumpManager.registerDumpable(this);
|
||||
mAutoHideController = autoHideController;
|
||||
mLightBarController = lightBarController;
|
||||
mLightBarTransitionsController = createLightBarTransitionsController();
|
||||
mPipOptional = pipOptional;
|
||||
mBackAnimation = backAnimation;
|
||||
mLightBarTransitionsController = createLightBarTransitionsController();
|
||||
}
|
||||
|
||||
// Separated into a method to keep setDependencies() clean/readable.
|
||||
private LightBarTransitionsController createLightBarTransitionsController() {
|
||||
return new LightBarTransitionsController(mContext,
|
||||
|
||||
LightBarTransitionsController controller = mLightBarTransitionsControllerFactory.create(
|
||||
new LightBarTransitionsController.DarkIntensityApplier() {
|
||||
@Override
|
||||
public void applyDarkIntensity(float darkIntensity) {
|
||||
@@ -203,13 +210,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
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;
|
||||
}
|
||||
};
|
||||
});
|
||||
controller.overrideIconTintForNavMode(true);
|
||||
|
||||
return controller;
|
||||
}
|
||||
|
||||
public void init(int displayId) {
|
||||
|
||||
@@ -26,7 +26,6 @@ import android.widget.ImageView;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -53,12 +52,12 @@ public class DarkIconDispatcherImpl implements SysuiDarkIconDispatcher,
|
||||
@Inject
|
||||
public DarkIconDispatcherImpl(
|
||||
Context context,
|
||||
CommandQueue commandQueue,
|
||||
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory,
|
||||
DumpManager dumpManager) {
|
||||
mDarkModeIconColorSingleTone = context.getColor(R.color.dark_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);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import android.os.SystemClock;
|
||||
import android.util.MathUtils;
|
||||
import android.util.TimeUtils;
|
||||
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.Dumpable;
|
||||
import com.android.systemui.animation.Interpolators;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
@@ -35,6 +34,10 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
|
||||
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.
|
||||
*/
|
||||
@@ -69,13 +72,19 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
|
||||
};
|
||||
|
||||
private final Context mContext;
|
||||
private Boolean mOverrideIconTintForNavMode;
|
||||
|
||||
public LightBarTransitionsController(Context context, DarkIntensityApplier applier,
|
||||
CommandQueue commandQueue) {
|
||||
@AssistedInject
|
||||
public LightBarTransitionsController(
|
||||
Context context,
|
||||
@Assisted DarkIntensityApplier applier,
|
||||
CommandQueue commandQueue,
|
||||
KeyguardStateController keyguardStateController,
|
||||
StatusBarStateController statusBarStateController) {
|
||||
mApplier = applier;
|
||||
mHandler = new Handler();
|
||||
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
|
||||
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mCommandQueue = commandQueue;
|
||||
mCommandQueue.addCallback(this);
|
||||
mStatusBarStateController.addCallback(this);
|
||||
@@ -229,12 +238,20 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
|
||||
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.
|
||||
*/
|
||||
public boolean supportsIconTintForNavMode(int navigationMode) {
|
||||
// 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);
|
||||
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
|
||||
private DarkIntensityApplier mApplier;
|
||||
@Mock
|
||||
private KeyguardStateController mKeyguardStateController;
|
||||
@Mock
|
||||
private StatusBarStateController mStatusBarStateController;
|
||||
|
||||
private LightBarTransitionsController mLightBarTransitionsController;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mDependency.injectMockDependency(KeyguardStateController.class);
|
||||
mDependency.injectMockDependency(StatusBarStateController.class);
|
||||
mLightBarTransitionsController = new LightBarTransitionsController(mContext, mApplier,
|
||||
new CommandQueue(mContext));
|
||||
new CommandQueue(mContext), mKeyguardStateController, mStatusBarStateController);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user