Merge "Make LightBarTransitionsController injectable." into tm-dev am: 383cc0c9a4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17185258

Change-Id: Ida21402daeef59c19253aee89983428c58c55f3f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Dave Mankoff
2022-04-08 19:54:20 +00:00
committed by Automerger Merge Worker
5 changed files with 65 additions and 29 deletions

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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