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

Commit bcec37ae authored by Nick Chameyev's avatar Nick Chameyev
Browse files

Do not use pool of SimpleIconFactory objects in Chooser/ResolverActivity

Disables pooling of SimpleIconFactory objects as it caches
density which could be changed in runtime in tests.

Test: presubmit
Bug: 245354130
Change-Id: I124e02e078ba7e6ed3a42b543698c2758e5d0c0e
parent 9fefe95b
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.util.Pools.SynchronizedPool;
import android.util.TypedValue;

import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;

import org.xmlpull.v1.XmlPullParser;

@@ -69,6 +70,7 @@ public class SimpleIconFactory {

    private static final SynchronizedPool<SimpleIconFactory> sPool =
            new SynchronizedPool<>(Runtime.getRuntime().availableProcessors());
    private static boolean sPoolEnabled = true;

    private static final int DEFAULT_WRAPPER_BACKGROUND = Color.WHITE;
    private static final float BLUR_FACTOR = 1.5f / 48;
@@ -92,7 +94,7 @@ public class SimpleIconFactory {
     */
    @Deprecated
    public static SimpleIconFactory obtain(Context ctx) {
        SimpleIconFactory instance = sPool.acquire();
        SimpleIconFactory instance = sPoolEnabled ? sPool.acquire() : null;
        if (instance == null) {
            final ActivityManager am = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
            final int iconDpi = (am == null) ? 0 : am.getLauncherLargeIconDensity();
@@ -106,6 +108,17 @@ public class SimpleIconFactory {
        return instance;
    }

    /**
     * Enables or disables SimpleIconFactory objects pooling. It is enabled in production, you
     * could use this method in tests and disable the pooling to make the icon rendering more
     * deterministic because some sizing parameters will not be cached. Please ensure that you
     * reset this value back after finishing the test.
     */
    @VisibleForTesting
    public static void setPoolEnabled(boolean poolEnabled) {
        sPoolEnabled = poolEnabled;
    }

    private static int getAttrDimFromContext(Context ctx, @AttrRes int attrId, String errorMsg) {
        final Resources res = ctx.getResources();
        TypedValue outVal = new TypedValue();