Loading go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java +8 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -55,7 +56,7 @@ public class DeepShortcutManager { return false; } public void onShortcutsChanged(List<ShortcutInfoCompat> shortcuts) { public void onShortcutsChanged(List<ShortcutInfo> shortcuts) { } /** Loading @@ -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(); } Loading @@ -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(); } Loading @@ -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; } Loading @@ -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(); } Loading res/values/config.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" /> Loading robolectric_tests/src/com/android/launcher3/config/FlagOverrideSampleTest.java +0 −1 Original line number Diff line number Diff line Loading @@ -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()); Loading robolectric_tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java +7 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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[][][]{{ Loading @@ -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}, Loading tests/src/com/android/launcher3/popup/PopupPopulatorTest.java→robolectric_tests/src/com/android/launcher3/popup/PopupPopulatorTest.java +23 −52 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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++; } Loading @@ -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.", Loading @@ -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
go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java +8 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -55,7 +56,7 @@ public class DeepShortcutManager { return false; } public void onShortcutsChanged(List<ShortcutInfoCompat> shortcuts) { public void onShortcutsChanged(List<ShortcutInfo> shortcuts) { } /** Loading @@ -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(); } Loading @@ -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(); } Loading @@ -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; } Loading @@ -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(); } Loading
res/values/config.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" /> Loading
robolectric_tests/src/com/android/launcher3/config/FlagOverrideSampleTest.java +0 −1 Original line number Diff line number Diff line Loading @@ -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()); Loading
robolectric_tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java +7 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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[][][]{{ Loading @@ -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}, Loading
tests/src/com/android/launcher3/popup/PopupPopulatorTest.java→robolectric_tests/src/com/android/launcher3/popup/PopupPopulatorTest.java +23 −52 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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++; } Loading @@ -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.", Loading @@ -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