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

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

Merge "Removing ShortcutInfoCompat and directly using ShortcutInfo" into ub-launcher3-qt-dev

parents d5f95bf8 6bbf6004
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.launcher3.shortcuts;

import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ShortcutInfo;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -55,7 +56,7 @@ public class DeepShortcutManager {
        return false;
    }

    public void onShortcutsChanged(List<ShortcutInfoCompat> shortcuts) {
    public void onShortcutsChanged(List<ShortcutInfo> shortcuts) {
    }

    /**
@@ -64,7 +65,7 @@ public class DeepShortcutManager {
     * This method is intended to get the full details for shortcuts when they are added or updated,
     * because we only get "key" fields in onShortcutsChanged().
     */
    public List<ShortcutInfoCompat> queryForFullDetails(String packageName,
    public List<ShortcutInfo> queryForFullDetails(String packageName,
            List<String> shortcutIds, UserHandle user) {
        return Collections.emptyList();
    }
@@ -73,7 +74,7 @@ public class DeepShortcutManager {
     * Gets all the manifest and dynamic shortcuts associated with the given package and user,
     * to be displayed in the shortcuts container on long press.
     */
    public List<ShortcutInfoCompat> queryForShortcutsContainer(ComponentName activity,
    public List<ShortcutInfo> queryForShortcutsContainer(ComponentName activity,
            UserHandle user) {
        return Collections.emptyList();
    }
@@ -96,7 +97,7 @@ public class DeepShortcutManager {
            Bundle startActivityOptions, UserHandle user) {
    }

    public Drawable getShortcutIconDrawable(ShortcutInfoCompat shortcutInfo, int density) {
    public Drawable getShortcutIconDrawable(ShortcutInfo shortcutInfo, int density) {
        return null;
    }

@@ -105,16 +106,16 @@ public class DeepShortcutManager {
     *
     * If packageName is null, returns all pinned shortcuts regardless of package.
     */
    public List<ShortcutInfoCompat> queryForPinnedShortcuts(String packageName, UserHandle user) {
    public List<ShortcutInfo> queryForPinnedShortcuts(String packageName, UserHandle user) {
        return Collections.emptyList();
    }

    public List<ShortcutInfoCompat> queryForPinnedShortcuts(String packageName,
    public List<ShortcutInfo> queryForPinnedShortcuts(String packageName,
            List<String> shortcutIds, UserHandle user) {
        return Collections.emptyList();
    }

    public List<ShortcutInfoCompat> queryForAllShortcuts(UserHandle user) {
    public List<ShortcutInfo> queryForAllShortcuts(UserHandle user) {
        return Collections.emptyList();
    }

+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@
    <string name="wallpaper_picker_package" translatable="false"></string>

    <!-- Whitelisted package to retrieve packagename for badge. Can be empty. -->
    <string name="shortcutinfocompat_badgepkg_whitelist" translatable="false"></string>
    <string name="shortcutinfo_badgepkg_whitelist" translatable="false"></string>

    <!-- View ID to use for QSB widget -->
    <item type="id" name="qsb_widget" />
+0 −1
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ public class FlagOverrideSampleTest {
    public final FlagOverrideRule flags = new FlagOverrideRule();

    @FlagOverride(key = "EXAMPLE_FLAG", value = true)
    @FlagOverride(key = "QUICK_SWITCH", value = false)
    @Test
    public void withFlagOn() {
        assertTrue(FeatureFlags.EXAMPLE_FLAG.get());
+7 −3
Original line number Diff line number Diff line
@@ -10,8 +10,8 @@ import android.graphics.Point;

import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.config.FlagOverrideRule;
import com.android.launcher3.config.FlagOverrideRule.FlagOverride;
import com.android.launcher3.model.GridSizeMigrationTask.MultiStepMigrationTask;
import com.android.launcher3.util.IntArray;

@@ -210,9 +210,11 @@ public class GridSizeMigrationTaskTest extends BaseGridChangesTestCase {
        }});
    }

    @FlagOverride(key = "QSB_ON_FIRST_SCREEN", value = true)
    @Test
    public void testWorkspace_first_row_blocked() throws Exception {
        if (!FeatureFlags.QSB_ON_FIRST_SCREEN) {
            return;
        }
        // The first screen has one item on the 4th column which needs moving, as the first row
        // will be kept empty.
        int[][][] ids = createGrid(new int[][][]{{
@@ -236,9 +238,11 @@ public class GridSizeMigrationTaskTest extends BaseGridChangesTestCase {
        }});
    }

    @FlagOverride(key = "QSB_ON_FIRST_SCREEN", value = true)
    @Test
    public void testWorkspace_items_moved_to_empty_first_row() throws Exception {
        if (!FeatureFlags.QSB_ON_FIRST_SCREEN) {
            return;
        }
        // Items will get moved to the next screen to keep the first screen empty.
        int[][][] ids = createGrid(new int[][][]{{
                { -1, -1, -1, -1},
+23 −52
Original line number Diff line number Diff line
@@ -22,16 +22,15 @@ import static com.android.launcher3.popup.PopupPopulator.NUM_DYNAMIC;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;

import android.content.pm.ShortcutInfo;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.launcher3.shortcuts.ShortcutInfoCompat;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

import java.util.ArrayList;
import java.util.Collections;
@@ -40,8 +39,7 @@ import java.util.List;
/**
 * Tests the sorting and filtering of shortcuts in {@link PopupPopulator}.
 */
@SmallTest
@RunWith(AndroidJUnit4.class)
@RunWith(RobolectricTestRunner.class)
public class PopupPopulatorTest {

    @Test
@@ -81,20 +79,20 @@ public class PopupPopulatorTest {
    }

    private void filterShortcutsAndAssertNumStaticAndDynamic(
            List<ShortcutInfoCompat> shortcuts, int expectedStatic, int expectedDynamic) {
            List<ShortcutInfo> shortcuts, int expectedStatic, int expectedDynamic) {
        filterShortcutsAndAssertNumStaticAndDynamic(shortcuts, expectedStatic, expectedDynamic, null);
    }

    private void filterShortcutsAndAssertNumStaticAndDynamic(List<ShortcutInfoCompat> shortcuts,
    private void filterShortcutsAndAssertNumStaticAndDynamic(List<ShortcutInfo> shortcuts,
            int expectedStatic, int expectedDynamic, String shortcutIdToRemove) {
        Collections.shuffle(shortcuts);
        List<ShortcutInfoCompat> filteredShortcuts = PopupPopulator.sortAndFilterShortcuts(
        List<ShortcutInfo> filteredShortcuts = PopupPopulator.sortAndFilterShortcuts(
                shortcuts, shortcutIdToRemove);
        assertIsSorted(filteredShortcuts);

        int numStatic = 0;
        int numDynamic = 0;
        for (ShortcutInfoCompat shortcut : filteredShortcuts) {
        for (ShortcutInfo shortcut : filteredShortcuts) {
            if (shortcut.isDeclaredInManifest()) {
                numStatic++;
            }
@@ -106,11 +104,11 @@ public class PopupPopulatorTest {
        assertEquals(expectedDynamic, numDynamic);
    }

    private void assertIsSorted(List<ShortcutInfoCompat> shortcuts) {
    private void assertIsSorted(List<ShortcutInfo> shortcuts) {
        int lastStaticRank = -1;
        int lastDynamicRank = -1;
        boolean hasSeenDynamic = false;
        for (ShortcutInfoCompat shortcut : shortcuts) {
        for (ShortcutInfo shortcut : shortcuts) {
            int rank = shortcut.getRank();
            if (shortcut.isDeclaredInManifest()) {
                assertFalse("Static shortcuts should come before all dynamic shortcuts.",
@@ -126,51 +124,24 @@ public class PopupPopulatorTest {
        }
    }

    private List<ShortcutInfoCompat> createShortcutsList(int numStatic, int numDynamic) {
        List<ShortcutInfoCompat> shortcuts = new ArrayList<>();
    private List<ShortcutInfo> createShortcutsList(int numStatic, int numDynamic) {
        List<ShortcutInfo> shortcuts = new ArrayList<>();
        for (int i = 0; i < numStatic; i++) {
            shortcuts.add(new Shortcut(true, i));
            shortcuts.add(createInfo(true, i));
        }
        for (int i = 0; i < numDynamic; i++) {
            shortcuts.add(new Shortcut(false, i));
            shortcuts.add(createInfo(false, i));
        }
        return shortcuts;
    }

    private class Shortcut extends ShortcutInfoCompat {
        private boolean mIsStatic;
        private int mRank;
        private String mId;

        public Shortcut(ShortcutInfo shortcutInfo) {
            super(shortcutInfo);
        }

        public Shortcut(boolean isStatic, int rank) {
            this(null);
            mIsStatic = isStatic;
            mRank = rank;
            mId = generateId(isStatic, rank);
        }

        @Override
        public boolean isDeclaredInManifest() {
            return mIsStatic;
        }

        @Override
        public boolean isDynamic() {
            return !mIsStatic;
        }

        @Override
        public int getRank() {
            return mRank;
        }

        @Override
        public String getId() {
            return mId;
        }
    private ShortcutInfo createInfo(boolean isStatic, int rank) {
        ShortcutInfo info = spy(new ShortcutInfo.Builder(
                RuntimeEnvironment.application, generateId(isStatic, rank))
                .setRank(rank)
                .build());
        doReturn(isStatic).when(info).isDeclaredInManifest();
        doReturn(!isStatic).when(info).isDynamic();
        return info;
    }
}
 No newline at end of file
Loading