Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46abcd15 authored by Lucas Dupin's avatar Lucas Dupin Committed by android-build-merger
Browse files

Merge "Fix issue where scrim color event would be skipped" into qt-dev am: a288fae7

am: adb0533f

Change-Id: Ibe306ffe70bedc271c49a8e144cba49bf5ec0bdc
parents be93706d adb0533f
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.colorextraction;
package com.android.systemui.colorextraction;


import android.annotation.ColorInt;
import android.app.WallpaperColors;
import android.app.WallpaperColors;
import android.app.WallpaperManager;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Context;
@@ -113,7 +114,11 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
        super.onColorsChanged(colors, which);
        super.onColorsChanged(colors, which);


        if ((which & WallpaperManager.FLAG_SYSTEM) != 0) {
        if ((which & WallpaperManager.FLAG_SYSTEM) != 0) {
            @ColorInt int oldColor = mWpHiddenColors.getMainColor();
            updateDefaultGradients(colors);
            updateDefaultGradients(colors);
            if (oldColor != mWpHiddenColors.getMainColor()) {
                triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
            }
        }
        }
    }
    }


@@ -121,6 +126,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
    public void onUiModeChanged() {
    public void onUiModeChanged() {
        WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
        WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
        updateDefaultGradients(systemColors);
        updateDefaultGradients(systemColors);
        triggerColorsChanged(WallpaperManager.FLAG_SYSTEM);
    }
    }


    /**
    /**
+44 −36
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.colorextraction;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.reset;
@@ -36,8 +37,10 @@ import com.android.internal.colorextraction.types.Tonal;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;


import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;


/**
/**
 * Tests color extraction generation.
 * Tests color extraction generation.
@@ -54,62 +57,68 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
            ColorExtractor.TYPE_DARK,
            ColorExtractor.TYPE_DARK,
            ColorExtractor.TYPE_EXTRA_DARK};
            ColorExtractor.TYPE_EXTRA_DARK};


    private ColorExtractor.GradientColors mColors;
    private SysuiColorExtractor mColorExtractor;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mColors = new ColorExtractor.GradientColors();
        mColors.setMainColor(Color.RED);
        mColors.setSecondaryColor(Color.RED);
        mColorExtractor = new SysuiColorExtractor(getContext(),
                (inWallpaperColors, outGradientColorsNormal, outGradientColorsDark,
                        outGradientColorsExtraDark) -> {
                    outGradientColorsNormal.set(mColors);
                    outGradientColorsDark.set(mColors);
                    outGradientColorsExtraDark.set(mColors);
                }, mock(ConfigurationController.class), false);
    }

    @Test
    @Test
    public void getColors_usesGreyIfWallpaperNotVisible() {
    public void getColors_usesGreyIfWallpaperNotVisible() {
        ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
        simulateEvent(mColorExtractor);
        colors.setMainColor(Color.RED);
        mColorExtractor.setWallpaperVisible(false);
        colors.setSecondaryColor(Color.RED);


        SysuiColorExtractor extractor = getTestableExtractor(colors);
        ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors();
        simulateEvent(extractor);
        extractor.setWallpaperVisible(false);

        ColorExtractor.GradientColors fallbackColors = extractor.getNeutralColors();


        for (int type : sTypes) {
        for (int type : sTypes) {
            assertEquals("Not using fallback!",
            assertEquals("Not using fallback!",
                    extractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
                    mColorExtractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
            assertNotEquals("Wallpaper visibility event should not affect lock wallpaper.",
            assertNotEquals("Wallpaper visibility event should not affect lock wallpaper.",
                    extractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
                    mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
        }
        }
    }
    }


    @Test
    @Test
    public void getColors_doesntUseFallbackIfVisible() {
    public void getColors_doesntUseFallbackIfVisible() {
        ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
        mColors.setMainColor(Color.RED);
        colors.setMainColor(Color.RED);
        mColors.setSecondaryColor(Color.RED);
        colors.setSecondaryColor(Color.RED);


        SysuiColorExtractor extractor = getTestableExtractor(colors);
        simulateEvent(mColorExtractor);
        simulateEvent(extractor);
        mColorExtractor.setWallpaperVisible(true);
        extractor.setWallpaperVisible(true);


        for (int which : sWhich) {
        for (int which : sWhich) {
            for (int type : sTypes) {
            for (int type : sTypes) {
                assertEquals("Not using extracted colors!",
                assertEquals("Not using extracted colors!",
                        extractor.getColors(which, type), colors);
                        mColorExtractor.getColors(which, type), mColors);
            }
            }
        }
        }
    }
    }


    @Test
    @Test
    public void getColors_fallbackWhenMediaIsVisible() {
    public void getColors_fallbackWhenMediaIsVisible() {
        ColorExtractor.GradientColors colors = new ColorExtractor.GradientColors();
        simulateEvent(mColorExtractor);
        colors.setMainColor(Color.RED);
        mColorExtractor.setWallpaperVisible(true);
        colors.setSecondaryColor(Color.RED);
        mColorExtractor.setHasBackdrop(true);

        SysuiColorExtractor extractor = getTestableExtractor(colors);
        simulateEvent(extractor);
        extractor.setWallpaperVisible(true);
        extractor.setHasBackdrop(true);


        ColorExtractor.GradientColors fallbackColors = extractor.getNeutralColors();
        ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors();


        for (int type : sTypes) {
        for (int type : sTypes) {
            assertEquals("Not using fallback!",
            assertEquals("Not using fallback!",
                    extractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
                    mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors);
            assertNotEquals("Media visibility should not affect system wallpaper.",
            assertNotEquals("Media visibility should not affect system wallpaper.",
                    extractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
                    mColorExtractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors);
        }
        }
    }
    }


@@ -126,14 +135,13 @@ public class SysuiColorExtractorTests extends SysuiTestCase {
        verify(tonal).applyFallback(any(), any());
        verify(tonal).applyFallback(any(), any());
    }
    }


    private SysuiColorExtractor getTestableExtractor(ColorExtractor.GradientColors colors) {
    @Test
        return new SysuiColorExtractor(getContext(),
    public void onUiModeChanged_notifiesListener() {
                (inWallpaperColors, outGradientColorsNormal, outGradientColorsDark,
        ColorExtractor.OnColorsChangedListener listener = mock(
                        outGradientColorsExtraDark) -> {
                ColorExtractor.OnColorsChangedListener.class);
                    outGradientColorsNormal.set(colors);
        mColorExtractor.addOnColorsChangedListener(listener);
                    outGradientColorsDark.set(colors);
        mColorExtractor.onUiModeChanged();
                    outGradientColorsExtraDark.set(colors);
        verify(listener).onColorsChanged(any(), anyInt());
                }, mock(ConfigurationController.class), false);
    }
    }


    private void simulateEvent(SysuiColorExtractor extractor) {
    private void simulateEvent(SysuiColorExtractor extractor) {