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

Commit 3ed54cd0 authored by Aurélien Pomini's avatar Aurélien Pomini Committed by Automerger Merge Worker
Browse files

Merge "Rename WallpaperColorExtractor to WallpaperLocalColorExtractor" into...

Merge "Rename WallpaperColorExtractor to WallpaperLocalColorExtractor" into tm-qpr-dev am: e27ad032 am: 9e89a09b

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



Change-Id: Iebb6c164cb9efaed3a266dc3ec6326c9dd0571dc
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 6e420f9b 9e89a09b
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.wallpapers.canvas.WallpaperColorExtractor;
import com.android.systemui.wallpapers.canvas.WallpaperLocalColorExtractor;
import com.android.systemui.wallpapers.gl.EglHelper;
import com.android.systemui.wallpapers.gl.ImageWallpaperRenderer;

@@ -521,7 +521,7 @@ public class ImageWallpaper extends WallpaperService {

    class CanvasEngine extends WallpaperService.Engine implements DisplayListener {
        private WallpaperManager mWallpaperManager;
        private final WallpaperColorExtractor mWallpaperColorExtractor;
        private final WallpaperLocalColorExtractor mWallpaperLocalColorExtractor;
        private SurfaceHolder mSurfaceHolder;
        @VisibleForTesting
        static final int MIN_SURFACE_WIDTH = 128;
@@ -543,9 +543,9 @@ public class ImageWallpaper extends WallpaperService {
            super();
            setFixedSizeAllowed(true);
            setShowForAllUsers(true);
            mWallpaperColorExtractor = new WallpaperColorExtractor(
            mWallpaperLocalColorExtractor = new WallpaperLocalColorExtractor(
                    mBackgroundExecutor,
                    new WallpaperColorExtractor.WallpaperColorExtractorCallback() {
                    new WallpaperLocalColorExtractor.WallpaperLocalColorExtractorCallback() {
                        @Override
                        public void onColorsProcessed(List<RectF> regions,
                                List<WallpaperColors> colors) {
@@ -570,7 +570,7 @@ public class ImageWallpaper extends WallpaperService {

            // if the number of pages is already computed, transmit it to the color extractor
            if (mPagesComputed) {
                mWallpaperColorExtractor.onPageChanged(mPages);
                mWallpaperLocalColorExtractor.onPageChanged(mPages);
            }
        }

@@ -597,7 +597,7 @@ public class ImageWallpaper extends WallpaperService {
        public void onDestroy() {
            getDisplayContext().getSystemService(DisplayManager.class)
                    .unregisterDisplayListener(this);
            mWallpaperColorExtractor.cleanUp();
            mWallpaperLocalColorExtractor.cleanUp();
            unloadBitmap();
        }

@@ -813,7 +813,7 @@ public class ImageWallpaper extends WallpaperService {

        @VisibleForTesting
        void recomputeColorExtractorMiniBitmap() {
            mWallpaperColorExtractor.onBitmapChanged(mBitmap);
            mWallpaperLocalColorExtractor.onBitmapChanged(mBitmap);
        }

        @VisibleForTesting
@@ -830,14 +830,14 @@ public class ImageWallpaper extends WallpaperService {
        public void addLocalColorsAreas(@NonNull List<RectF> regions) {
            // this call will activate the offset notifications
            // if no colors were being processed before
            mWallpaperColorExtractor.addLocalColorsAreas(regions);
            mWallpaperLocalColorExtractor.addLocalColorsAreas(regions);
        }

        @Override
        public void removeLocalColorsAreas(@NonNull List<RectF> regions) {
            // this call will deactivate the offset notifications
            // if we are no longer processing colors
            mWallpaperColorExtractor.removeLocalColorAreas(regions);
            mWallpaperLocalColorExtractor.removeLocalColorAreas(regions);
        }

        @Override
@@ -853,7 +853,7 @@ public class ImageWallpaper extends WallpaperService {
            if (pages != mPages || !mPagesComputed) {
                mPages = pages;
                mPagesComputed = true;
                mWallpaperColorExtractor.onPageChanged(mPages);
                mWallpaperLocalColorExtractor.onPageChanged(mPages);
            }
        }

@@ -881,7 +881,7 @@ public class ImageWallpaper extends WallpaperService {
                    .getSystemService(WindowManager.class)
                    .getCurrentWindowMetrics()
                    .getBounds();
            mWallpaperColorExtractor.setDisplayDimensions(window.width(), window.height());
            mWallpaperLocalColorExtractor.setDisplayDimensions(window.width(), window.height());
        }


@@ -902,7 +902,7 @@ public class ImageWallpaper extends WallpaperService {
                    : mBitmap.isRecycled() ? "recycled"
                    : mBitmap.getWidth() + "x" + mBitmap.getHeight());

            mWallpaperColorExtractor.dump(prefix, fd, out, args);
            mWallpaperLocalColorExtractor.dump(prefix, fd, out, args);
        }
    }
}
+14 −14
Original line number Diff line number Diff line
@@ -45,14 +45,14 @@ import java.util.concurrent.Executor;
 * It uses a background executor, and uses callbacks to inform that the work is done.
 * It uses  a downscaled version of the wallpaper to extract the colors.
 */
public class WallpaperColorExtractor {
public class WallpaperLocalColorExtractor {

    private Bitmap mMiniBitmap;

    @VisibleForTesting
    static final int SMALL_SIDE = 128;

    private static final String TAG = WallpaperColorExtractor.class.getSimpleName();
    private static final String TAG = WallpaperLocalColorExtractor.class.getSimpleName();
    private static final @NonNull RectF LOCAL_COLOR_BOUNDS =
            new RectF(0, 0, 1, 1);

@@ -70,12 +70,12 @@ public class WallpaperColorExtractor {
    @Background
    private final Executor mBackgroundExecutor;

    private final WallpaperColorExtractorCallback mWallpaperColorExtractorCallback;
    private final WallpaperLocalColorExtractorCallback mWallpaperLocalColorExtractorCallback;

    /**
     * Interface to handle the callbacks after the different steps of the color extraction
     */
    public interface WallpaperColorExtractorCallback {
    public interface WallpaperLocalColorExtractorCallback {
        /**
         * Callback after the colors of new regions have been extracted
         * @param regions the list of new regions that have been processed
@@ -103,13 +103,13 @@ public class WallpaperColorExtractor {
    /**
     * Creates a new color extractor.
     * @param backgroundExecutor the executor on which the color extraction will be performed
     * @param wallpaperColorExtractorCallback an interface to handle the callbacks from
     * @param wallpaperLocalColorExtractorCallback an interface to handle the callbacks from
     *                                        the color extractor.
     */
    public WallpaperColorExtractor(@Background Executor backgroundExecutor,
            WallpaperColorExtractorCallback wallpaperColorExtractorCallback) {
    public WallpaperLocalColorExtractor(@Background Executor backgroundExecutor,
            WallpaperLocalColorExtractorCallback wallpaperLocalColorExtractorCallback) {
        mBackgroundExecutor = backgroundExecutor;
        mWallpaperColorExtractorCallback = wallpaperColorExtractorCallback;
        mWallpaperLocalColorExtractorCallback = wallpaperLocalColorExtractorCallback;
    }

    /**
@@ -157,7 +157,7 @@ public class WallpaperColorExtractor {
            mBitmapWidth = bitmap.getWidth();
            mBitmapHeight = bitmap.getHeight();
            mMiniBitmap = createMiniBitmap(bitmap);
            mWallpaperColorExtractorCallback.onMiniBitmapUpdated();
            mWallpaperLocalColorExtractorCallback.onMiniBitmapUpdated();
            recomputeColors();
        }
    }
@@ -206,7 +206,7 @@ public class WallpaperColorExtractor {
            boolean wasActive = isActive();
            mPendingRegions.addAll(regions);
            if (!wasActive && isActive()) {
                mWallpaperColorExtractorCallback.onActivated();
                mWallpaperLocalColorExtractorCallback.onActivated();
            }
            processColorsInternal();
        }
@@ -228,7 +228,7 @@ public class WallpaperColorExtractor {
            mPendingRegions.removeAll(regions);
            regions.forEach(mProcessedRegions::remove);
            if (wasActive && !isActive()) {
                mWallpaperColorExtractorCallback.onDeactivated();
                mWallpaperLocalColorExtractorCallback.onDeactivated();
            }
        }
    }
@@ -252,7 +252,7 @@ public class WallpaperColorExtractor {
    }

    private Bitmap createMiniBitmap(@NonNull Bitmap bitmap) {
        Trace.beginSection("WallpaperColorExtractor#createMiniBitmap");
        Trace.beginSection("WallpaperLocalColorExtractor#createMiniBitmap");
        // if both sides of the image are larger than SMALL_SIDE, downscale the bitmap.
        int smallestSide = Math.min(bitmap.getWidth(), bitmap.getHeight());
        float scale = Math.min(1.0f, (float) SMALL_SIDE / smallestSide);
@@ -359,7 +359,7 @@ public class WallpaperColorExtractor {
         */
        if (mDisplayWidth < 0 || mDisplayHeight < 0 || mPages < 0) return;

        Trace.beginSection("WallpaperColorExtractor#processColorsInternal");
        Trace.beginSection("WallpaperLocalColorExtractor#processColorsInternal");
        List<WallpaperColors> processedColors = new ArrayList<>();
        for (int i = 0; i < mPendingRegions.size(); i++) {
            RectF nextArea = mPendingRegions.get(i);
@@ -372,7 +372,7 @@ public class WallpaperColorExtractor {
        mPendingRegions.clear();
        Trace.endSection();

        mWallpaperColorExtractorCallback.onColorsProcessed(processedRegions, processedColors);
        mWallpaperLocalColorExtractorCallback.onColorsProcessed(processedRegions, processedColors);
    }

    /**
+42 −42
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ import java.util.concurrent.Executor;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class WallpaperColorExtractorTest extends SysuiTestCase {
public class WallpaperLocalColorExtractorTest extends SysuiTestCase {
    private static final int LOW_BMP_WIDTH = 128;
    private static final int LOW_BMP_HEIGHT = 128;
    private static final int HIGH_BMP_WIDTH = 3000;
@@ -105,11 +105,11 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
        return bitmap;
    }

    private WallpaperColorExtractor getSpyWallpaperColorExtractor() {
    private WallpaperLocalColorExtractor getSpyWallpaperLocalColorExtractor() {

        WallpaperColorExtractor wallpaperColorExtractor = new WallpaperColorExtractor(
        WallpaperLocalColorExtractor colorExtractor = new WallpaperLocalColorExtractor(
                mBackgroundExecutor,
                new WallpaperColorExtractor.WallpaperColorExtractorCallback() {
                new WallpaperLocalColorExtractor.WallpaperLocalColorExtractorCallback() {
                    @Override
                    public void onColorsProcessed(List<RectF> regions,
                            List<WallpaperColors> colors) {
@@ -132,25 +132,25 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
                        mDeactivatedCount++;
                    }
                });
        WallpaperColorExtractor spyWallpaperColorExtractor = spy(wallpaperColorExtractor);
        WallpaperLocalColorExtractor spyColorExtractor = spy(colorExtractor);

        doAnswer(invocation -> {
            mMiniBitmapWidth = invocation.getArgument(1);
            mMiniBitmapHeight = invocation.getArgument(2);
            return getMockBitmap(mMiniBitmapWidth, mMiniBitmapHeight);
        }).when(spyWallpaperColorExtractor).createMiniBitmap(any(Bitmap.class), anyInt(), anyInt());
        }).when(spyColorExtractor).createMiniBitmap(any(Bitmap.class), anyInt(), anyInt());


        doAnswer(invocation -> getMockBitmap(
                        invocation.getArgument(1),
                        invocation.getArgument(2)))
                .when(spyWallpaperColorExtractor)
                .when(spyColorExtractor)
                .createMiniBitmap(any(Bitmap.class), anyInt(), anyInt());

        doReturn(new WallpaperColors(Color.valueOf(0), Color.valueOf(0), Color.valueOf(0)))
                .when(spyWallpaperColorExtractor).getLocalWallpaperColors(any(Rect.class));
                .when(spyColorExtractor).getLocalWallpaperColors(any(Rect.class));

        return spyWallpaperColorExtractor;
        return spyColorExtractor;
    }

    private RectF randomArea() {
@@ -180,18 +180,18 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
     */
    @Test
    public void testMiniBitmapCreation() {
        WallpaperColorExtractor spyWallpaperColorExtractor = getSpyWallpaperColorExtractor();
        WallpaperLocalColorExtractor spyColorExtractor = getSpyWallpaperLocalColorExtractor();
        int nSimulations = 10;
        for (int i = 0; i < nSimulations; i++) {
            resetCounters();
            int width = randomBetween(LOW_BMP_WIDTH, HIGH_BMP_WIDTH);
            int height = randomBetween(LOW_BMP_HEIGHT, HIGH_BMP_HEIGHT);
            Bitmap bitmap = getMockBitmap(width, height);
            spyWallpaperColorExtractor.onBitmapChanged(bitmap);
            spyColorExtractor.onBitmapChanged(bitmap);

            assertThat(mMiniBitmapUpdatedCount).isEqualTo(1);
            assertThat(Math.min(mMiniBitmapWidth, mMiniBitmapHeight))
                    .isAtMost(WallpaperColorExtractor.SMALL_SIDE);
                    .isAtMost(WallpaperLocalColorExtractor.SMALL_SIDE);
        }
    }

@@ -201,18 +201,18 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
     */
    @Test
    public void testSmallMiniBitmapCreation() {
        WallpaperColorExtractor spyWallpaperColorExtractor = getSpyWallpaperColorExtractor();
        WallpaperLocalColorExtractor spyColorExtractor = getSpyWallpaperLocalColorExtractor();
        int nSimulations = 10;
        for (int i = 0; i < nSimulations; i++) {
            resetCounters();
            int width = randomBetween(VERY_LOW_BMP_WIDTH, LOW_BMP_WIDTH);
            int height = randomBetween(VERY_LOW_BMP_HEIGHT, LOW_BMP_HEIGHT);
            Bitmap bitmap = getMockBitmap(width, height);
            spyWallpaperColorExtractor.onBitmapChanged(bitmap);
            spyColorExtractor.onBitmapChanged(bitmap);

            assertThat(mMiniBitmapUpdatedCount).isEqualTo(1);
            assertThat(Math.max(mMiniBitmapWidth, mMiniBitmapHeight))
                    .isAtMost(WallpaperColorExtractor.SMALL_SIDE);
                    .isAtMost(WallpaperLocalColorExtractor.SMALL_SIDE);
        }
    }

@@ -228,15 +228,15 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
        int nSimulations = 10;
        for (int i = 0; i < nSimulations; i++) {
            resetCounters();
            WallpaperColorExtractor spyWallpaperColorExtractor = getSpyWallpaperColorExtractor();
            WallpaperLocalColorExtractor spyColorExtractor = getSpyWallpaperLocalColorExtractor();
            List<RectF> regions = listOfRandomAreas(MIN_AREAS, MAX_AREAS);
            int nPages = randomBetween(PAGES_LOW, PAGES_HIGH);
            List<Runnable> tasks = Arrays.asList(
                    () -> spyWallpaperColorExtractor.onPageChanged(nPages),
                    () -> spyWallpaperColorExtractor.onBitmapChanged(bitmap),
                    () -> spyWallpaperColorExtractor.setDisplayDimensions(
                    () -> spyColorExtractor.onPageChanged(nPages),
                    () -> spyColorExtractor.onBitmapChanged(bitmap),
                    () -> spyColorExtractor.setDisplayDimensions(
                            DISPLAY_WIDTH, DISPLAY_HEIGHT),
                    () -> spyWallpaperColorExtractor.addLocalColorsAreas(
                    () -> spyColorExtractor.addLocalColorsAreas(
                            regions));
            Collections.shuffle(tasks);
            tasks.forEach(Runnable::run);
@@ -245,7 +245,7 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
            assertThat(mMiniBitmapUpdatedCount).isEqualTo(1);
            assertThat(mColorsProcessed).isEqualTo(regions.size());

            spyWallpaperColorExtractor.removeLocalColorAreas(regions);
            spyColorExtractor.removeLocalColorAreas(regions);
            assertThat(mDeactivatedCount).isEqualTo(1);
        }
    }
@@ -260,7 +260,7 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
        int nSimulations = 10;
        for (int i = 0; i < nSimulations; i++) {
            resetCounters();
            WallpaperColorExtractor spyWallpaperColorExtractor = getSpyWallpaperColorExtractor();
            WallpaperLocalColorExtractor spyColorExtractor = getSpyWallpaperLocalColorExtractor();
            List<RectF> regions1 = listOfRandomAreas(MIN_AREAS / 2, MAX_AREAS / 2);
            List<RectF> regions2 = listOfRandomAreas(MIN_AREAS / 2, MAX_AREAS / 2);
            List<RectF> regions = new ArrayList<>();
@@ -268,20 +268,20 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
            regions.addAll(regions2);
            int nPages = randomBetween(PAGES_LOW, PAGES_HIGH);
            List<Runnable> tasks = Arrays.asList(
                    () -> spyWallpaperColorExtractor.onPageChanged(nPages),
                    () -> spyWallpaperColorExtractor.onBitmapChanged(bitmap),
                    () -> spyWallpaperColorExtractor.setDisplayDimensions(
                    () -> spyColorExtractor.onPageChanged(nPages),
                    () -> spyColorExtractor.onBitmapChanged(bitmap),
                    () -> spyColorExtractor.setDisplayDimensions(
                            DISPLAY_WIDTH, DISPLAY_HEIGHT),
                    () -> spyWallpaperColorExtractor.removeLocalColorAreas(regions1));
                    () -> spyColorExtractor.removeLocalColorAreas(regions1));

            spyWallpaperColorExtractor.addLocalColorsAreas(regions);
            spyColorExtractor.addLocalColorsAreas(regions);
            assertThat(mActivatedCount).isEqualTo(1);
            Collections.shuffle(tasks);
            tasks.forEach(Runnable::run);

            assertThat(mMiniBitmapUpdatedCount).isEqualTo(1);
            assertThat(mDeactivatedCount).isEqualTo(0);
            spyWallpaperColorExtractor.removeLocalColorAreas(regions2);
            spyColorExtractor.removeLocalColorAreas(regions2);
            assertThat(mDeactivatedCount).isEqualTo(1);
        }
    }
@@ -295,18 +295,18 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
    @Test
    public void testRecomputeColorExtraction() {
        Bitmap bitmap = getMockBitmap(HIGH_BMP_WIDTH, HIGH_BMP_HEIGHT);
        WallpaperColorExtractor spyWallpaperColorExtractor = getSpyWallpaperColorExtractor();
        WallpaperLocalColorExtractor spyColorExtractor = getSpyWallpaperLocalColorExtractor();
        List<RectF> regions1 = listOfRandomAreas(MIN_AREAS / 2, MAX_AREAS / 2);
        List<RectF> regions2 = listOfRandomAreas(MIN_AREAS / 2, MAX_AREAS / 2);
        List<RectF> regions = new ArrayList<>();
        regions.addAll(regions1);
        regions.addAll(regions2);
        spyWallpaperColorExtractor.addLocalColorsAreas(regions);
        spyColorExtractor.addLocalColorsAreas(regions);
        assertThat(mActivatedCount).isEqualTo(1);
        int nPages = PAGES_LOW;
        spyWallpaperColorExtractor.onBitmapChanged(bitmap);
        spyWallpaperColorExtractor.onPageChanged(nPages);
        spyWallpaperColorExtractor.setDisplayDimensions(DISPLAY_WIDTH, DISPLAY_HEIGHT);
        spyColorExtractor.onBitmapChanged(bitmap);
        spyColorExtractor.onPageChanged(nPages);
        spyColorExtractor.setDisplayDimensions(DISPLAY_WIDTH, DISPLAY_HEIGHT);

        int nSimulations = 20;
        for (int i = 0; i < nSimulations; i++) {
@@ -315,22 +315,22 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
            // verify that if we remove some regions, they are not recomputed after other changes
            if (i == nSimulations / 2) {
                regions.removeAll(regions2);
                spyWallpaperColorExtractor.removeLocalColorAreas(regions2);
                spyColorExtractor.removeLocalColorAreas(regions2);
            }

            if (Math.random() >= 0.5) {
                int nPagesNew = randomBetween(PAGES_LOW, PAGES_HIGH);
                if (nPagesNew == nPages) continue;
                nPages = nPagesNew;
                spyWallpaperColorExtractor.onPageChanged(nPagesNew);
                spyColorExtractor.onPageChanged(nPagesNew);
            } else {
                Bitmap newBitmap = getMockBitmap(HIGH_BMP_WIDTH, HIGH_BMP_HEIGHT);
                spyWallpaperColorExtractor.onBitmapChanged(newBitmap);
                spyColorExtractor.onBitmapChanged(newBitmap);
                assertThat(mMiniBitmapUpdatedCount).isEqualTo(1);
            }
            assertThat(mColorsProcessed).isEqualTo(regions.size());
        }
        spyWallpaperColorExtractor.removeLocalColorAreas(regions);
        spyColorExtractor.removeLocalColorAreas(regions);
        assertThat(mDeactivatedCount).isEqualTo(1);
    }

@@ -339,12 +339,12 @@ public class WallpaperColorExtractorTest extends SysuiTestCase {
        resetCounters();
        Bitmap bitmap = getMockBitmap(HIGH_BMP_WIDTH, HIGH_BMP_HEIGHT);
        doNothing().when(bitmap).recycle();
        WallpaperColorExtractor spyWallpaperColorExtractor = getSpyWallpaperColorExtractor();
        spyWallpaperColorExtractor.onPageChanged(PAGES_LOW);
        spyWallpaperColorExtractor.onBitmapChanged(bitmap);
        WallpaperLocalColorExtractor spyColorExtractor = getSpyWallpaperLocalColorExtractor();
        spyColorExtractor.onPageChanged(PAGES_LOW);
        spyColorExtractor.onBitmapChanged(bitmap);
        assertThat(mMiniBitmapUpdatedCount).isEqualTo(1);
        spyWallpaperColorExtractor.cleanUp();
        spyWallpaperColorExtractor.addLocalColorsAreas(listOfRandomAreas(MIN_AREAS, MAX_AREAS));
        spyColorExtractor.cleanUp();
        spyColorExtractor.addLocalColorsAreas(listOfRandomAreas(MIN_AREAS, MAX_AREAS));
        assertThat(mColorsProcessed).isEqualTo(0);
    }
}