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

Commit 1330244f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fixing shortcuts not getting theme icons" into tm-qpr-dev

parents aa14bd45 ce4896cf
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -249,12 +249,13 @@ public class TaskIconCache implements DisplayInfoChangeListener {
    private BitmapInfo getBitmapInfo(Drawable drawable, int userId,
            int primaryColor, boolean isInstantApp) {
        try (BaseIconFactory bif = getIconFactory()) {
            bif.disableColorExtraction();
            bif.setWrapperBackgroundColor(primaryColor);

            // User version code O, so that the icon is always wrapped in an adaptive icon container
            return bif.createBadgedIconBitmap(drawable,
                    new IconOptions().setUser(UserHandle.of(userId)).setInstantApp(isInstantApp));
                    new IconOptions().setUser(UserHandle.of(userId))
                            .setInstantApp(isInstantApp)
                            .setExtractedColor(0));
        }
    }

+3 −3
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.launcher3.LauncherAppState;
import com.android.launcher3.icons.BaseIconFactory.IconOptions;
import com.android.launcher3.icons.cache.CachingLogic;
import com.android.launcher3.shortcuts.ShortcutKey;
import com.android.launcher3.util.Themes;
@@ -76,9 +77,8 @@ public class ShortcutCachingLogic implements CachingLogic<ShortcutInfo> {
            Drawable unbadgedDrawable = ShortcutCachingLogic.getIcon(
                    context, info, LauncherAppState.getIDP(context).fillResIconDpi);
            if (unbadgedDrawable == null) return BitmapInfo.LOW_RES_INFO;
            return new BitmapInfo(
                    li.createScaledBitmap(unbadgedDrawable, BaseIconFactory.MODE_WITH_SHADOW),
                    Themes.getColorAccent(context));
            return li.createBadgedIconBitmap(unbadgedDrawable,
                    new IconOptions().setExtractedColor(Themes.getColorAccent(context)));
        }
    }

+1 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android" >
    <shortcut
        android:shortcutId="shortcut1"
        android:icon="@drawable/test_theme_icon"
        android:shortcutShortLabel="@string/shortcut1">
        <intent android:action="com.android.launcher3.intent.action.test_shortcut"/>
    </shortcut>
+47 −6
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import com.android.launcher3.BubbleTextView;
import com.android.launcher3.icons.ThemedIconDrawable;
import com.android.launcher3.tapl.HomeAllApps;
import com.android.launcher3.tapl.HomeAppIcon;
import com.android.launcher3.tapl.HomeAppIconMenuItem;
import com.android.launcher3.ui.AbstractLauncherUiTest;
import com.android.launcher3.ui.TaplTestsLauncher3;

@@ -49,6 +50,8 @@ import java.util.Queue;
public class ThemeIconsTest extends AbstractLauncherUiTest {

    private static final String APP_NAME = "ThemeIconTestActivity";
    private static final String SHORTCUT_APP_NAME = "LauncherTestApp";
    private static final String SHORTCUT_NAME = "Shortcut 1";

    @Test
    public void testIconWithoutTheme() throws Exception {
@@ -60,9 +63,28 @@ public class ThemeIconsTest extends AbstractLauncherUiTest {

        try {
            HomeAppIcon icon = allApps.getAppIcon(APP_NAME);
            executeOnLauncher(l -> verifyIconTheme(l.getAppsView(), false));
            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getAppsView(), false));
            icon.dragToWorkspace(false, false);
            executeOnLauncher(l -> verifyIconTheme(l.getWorkspace(), false));
            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getWorkspace(), false));
        } finally {
            allApps.unfreeze();
        }
    }

    @Test
    public void testShortcutIconWithoutTheme() throws Exception {
        setThemeEnabled(false);
        TaplTestsLauncher3.initialize(this);

        HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
        allApps.freeze();

        try {
            HomeAppIcon icon = allApps.getAppIcon(SHORTCUT_APP_NAME);
            HomeAppIconMenuItem shortcutItem =
                    (HomeAppIconMenuItem) icon.openDeepShortcutMenu().getMenuItem(SHORTCUT_NAME);
            shortcutItem.dragToWorkspace(false, false);
            executeOnLauncher(l -> verifyIconTheme(SHORTCUT_NAME, l.getWorkspace(), false));
        } finally {
            allApps.unfreeze();
        }
@@ -78,15 +100,34 @@ public class ThemeIconsTest extends AbstractLauncherUiTest {

        try {
            HomeAppIcon icon = allApps.getAppIcon(APP_NAME);
            executeOnLauncher(l -> verifyIconTheme(l.getAppsView(), false));
            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getAppsView(), false));
            icon.dragToWorkspace(false, false);
            executeOnLauncher(l -> verifyIconTheme(l.getWorkspace(), true));
            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getWorkspace(), true));
        } finally {
            allApps.unfreeze();
        }
    }

    @Test
    public void testShortcutIconWithTheme() throws Exception {
        setThemeEnabled(true);
        TaplTestsLauncher3.initialize(this);

        HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
        allApps.freeze();

        try {
            HomeAppIcon icon = allApps.getAppIcon(SHORTCUT_APP_NAME);
            HomeAppIconMenuItem shortcutItem =
                    (HomeAppIconMenuItem) icon.openDeepShortcutMenu().getMenuItem(SHORTCUT_NAME);
            shortcutItem.dragToWorkspace(false, false);
            executeOnLauncher(l -> verifyIconTheme(SHORTCUT_NAME, l.getWorkspace(), true));
        } finally {
            allApps.unfreeze();
        }
    }

    private void verifyIconTheme(ViewGroup parent, boolean isThemed) {
    private void verifyIconTheme(String title, ViewGroup parent, boolean isThemed) {
        // Find the app icon
        Queue<View> viewQueue = new ArrayDeque<>();
        viewQueue.add(parent);
@@ -100,7 +141,7 @@ public class ThemeIconsTest extends AbstractLauncherUiTest {
                }
            } else if (view instanceof BubbleTextView) {
                BubbleTextView btv = (BubbleTextView) view;
                if (APP_NAME.equals(btv.getText())) {
                if (title.equals(btv.getText())) {
                    icon = btv;
                    break;
                }