package com.android.systemui.colorextraction;
-import android.annotation.ColorInt;
-import android.annotation.IntDef;
import android.app.WallpaperColors;
import android.app.WallpaperManager;
import android.content.Context;
import com.android.internal.colorextraction.types.Tonal;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dumpable;
-import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.policy.ConfigurationController;
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import javax.inject.Inject;
public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
ConfigurationController.ConfigurationListener {
private static final String TAG = "SysuiColorExtractor";
-
- public static final int SCRIM_TYPE_REGULAR = 1;
- public static final int SCRIM_TYPE_LIGHT = 2;
- public static final int SCRIM_TYPE_DARK = 3;
-
- @IntDef(prefix = {"SCRIM_TYPE_"}, value = {
- SCRIM_TYPE_REGULAR,
- SCRIM_TYPE_LIGHT,
- SCRIM_TYPE_DARK
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface ScrimType {
- }
-
private final Tonal mTonal;
- private final OverviewProxyService mOverviewProxyService;
private boolean mWallpaperVisible;
private boolean mHasBackdrop;
// Colors to return when the wallpaper isn't visible
private final GradientColors mWpHiddenColors;
@Inject
- public SysuiColorExtractor(Context context, ConfigurationController configurationController,
- OverviewProxyService overviewProxyService) {
- this(context, new Tonal(context), configurationController, true, overviewProxyService);
+ public SysuiColorExtractor(Context context, ConfigurationController configurationController) {
+ this(context, new Tonal(context), configurationController, true);
}
@VisibleForTesting
public SysuiColorExtractor(Context context, ExtractionType type,
- ConfigurationController configurationController, boolean registerVisibility,
- OverviewProxyService overviewProxyService) {
+ ConfigurationController configurationController, boolean registerVisibility) {
super(context, type, false /* immediately */);
mTonal = type instanceof Tonal ? (Tonal) type : new Tonal(context);
mWpHiddenColors = new GradientColors();
- mOverviewProxyService = overviewProxyService;
configurationController.addCallback(this);
WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
return;
}
+ super.onColorsChanged(colors, which);
+
if ((which & WallpaperManager.FLAG_SYSTEM) != 0) {
updateDefaultGradients(colors);
}
- super.onColorsChanged(colors, which);
}
@Override
public void onUiModeChanged() {
WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
updateDefaultGradients(systemColors);
- triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
- }
-
- @Override
- protected void triggerColorsChanged(int which) {
- super.triggerColorsChanged(which);
-
- if (mWpHiddenColors != null && (which & WallpaperManager.FLAG_SYSTEM) != 0) {
- @ColorInt int colorInt = mWpHiddenColors.getMainColor();
- @ScrimType int scrimType;
- if (colorInt == Tonal.MAIN_COLOR_LIGHT) {
- scrimType = SCRIM_TYPE_LIGHT;
- } else if (colorInt == Tonal.MAIN_COLOR_DARK) {
- scrimType = SCRIM_TYPE_DARK;
- } else {
- scrimType = SCRIM_TYPE_REGULAR;
- }
- mOverviewProxyService.onScrimColorsChanged(colorInt, scrimType);
- }
}
/**
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
-import android.annotation.ColorInt;
import android.annotation.FloatRange;
import android.app.ActivityTaskManager;
import android.content.BroadcastReceiver;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.SysUiServiceProvider;
-import com.android.systemui.colorextraction.SysuiColorExtractor.ScrimType;
import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
dispatchNavButtonBounds();
}
- public void onScrimColorsChanged(@ColorInt int color, @ScrimType int type) {
- if (mOverviewProxy != null) {
- try {
- mOverviewProxy.onScrimColorsChanged(color, type);
- } catch (RemoteException e) {
- Log.e(TAG_OPS, "Failed to call onScrimColorsChanged()", e);
- }
- }
- }
-
private void dispatchNavButtonBounds() {
if (mOverviewProxy != null && mActiveNavBarRegion != null) {
try {
import com.android.internal.colorextraction.ColorExtractor;
import com.android.internal.colorextraction.types.Tonal;
import com.android.systemui.SysuiTestCase;
-import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.policy.ConfigurationController;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
/**
* Tests color extraction generation.
ColorExtractor.TYPE_NORMAL,
ColorExtractor.TYPE_DARK,
ColorExtractor.TYPE_EXTRA_DARK};
- @Mock
- private OverviewProxyService mOverviewProxyService;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- }
@Test
public void getColors_usesGreyIfWallpaperNotVisible() {
Tonal tonal = mock(Tonal.class);
ConfigurationController configurationController = mock(ConfigurationController.class);
SysuiColorExtractor sysuiColorExtractor = new SysuiColorExtractor(getContext(),
- tonal, configurationController, false /* registerVisibility */,
- mOverviewProxyService);
+ tonal, configurationController, false /* registerVisibility */);
verify(configurationController).addCallback(eq(sysuiColorExtractor));
reset(tonal);
outGradientColorsNormal.set(colors);
outGradientColorsDark.set(colors);
outGradientColorsExtraDark.set(colors);
- }, mock(ConfigurationController.class), false, mOverviewProxyService);
+ }, mock(ConfigurationController.class), false);
}
private void simulateEvent(SysuiColorExtractor extractor) {