import org.robolectric.shadows.ShadowLauncherApps;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
@Implements(value = LauncherApps.class, minSdk = LOLLIPOP)
public class TaskbarShadowLauncherApps extends ShadowLauncherApps {
- private static final List<String> enabledPackages = new ArrayList<>();
+ private Map<UserHandle, List<String>> enabledPackages = new HashMap<>();
- public static void addEnabledPackages(String packageName) {
- if (!enabledPackages.contains(packageName)) {
- enabledPackages.add(packageName);
- }
- }
-
- public static void removeEnabledPackage(String packageName) {
- enabledPackages.remove(packageName);
+ public void reset() {
+ enabledPackages.clear();
}
- public static void reset() {
- enabledPackages.clear();
+ /**
+ * Adds an enabled package to be checked by {@link #isPackageEnabled(String, UserHandle)}.
+ *
+ * @param userHandle the user handle to be added.
+ * @param packageName the package name to be added.
+ */
+ public void addEnabledPackage(UserHandle userHandle, String packageName) {
+ List<String> packages = enabledPackages.get(userHandle);
+ if (packages == null) {
+ packages = new ArrayList<>();
+ }
+ if (!packages.contains(packageName)) {
+ packages.add(packageName);
+ }
+ enabledPackages.put(userHandle, packages);
}
@Implementation
protected boolean isPackageEnabled(String packageName, UserHandle user) {
- return enabledPackages.contains(packageName);
+ List<String> packages = enabledPackages.get(user);
+ return packages != null && packages.contains(packageName);
}
}
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.LauncherActivityInfo;
+import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowUsageStatsManager.EventBuilder;
import org.robolectric.util.ReflectionHelpers;
@After
public void tearDown() {
prefs.edit().remove(PREF_START_BUTTON_IMAGE).apply();
- TaskbarShadowLauncherApps.reset();
uiController.onDestroyHost(host);
}
);
assertEquals(0, realNumOfPinnedApps);
+ LauncherApps launcherApps =
+ (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE);
+ TaskbarShadowLauncherApps taskbarShadowLauncherApps =
+ (TaskbarShadowLauncherApps) shadowOf(launcherApps);
AppEntry appEntry = generateTestAppEntry(1);
pinnedApps.add(appEntry);
- TaskbarShadowLauncherApps.addEnabledPackages(appEntry.getPackageName());
+ taskbarShadowLauncherApps
+ .addEnabledPackage(
+ UserHandle.getUserHandleForUid(DEFAULT_TEST_USER_ID),
+ appEntry.getPackageName()
+ );
realNumOfPinnedApps = uiController.filterRealPinnedApps(
context, pinnedApps, entries, applicationIdsToRemove
);
assertEquals(1, realNumOfPinnedApps);
assertEquals(2, applicationIdsToRemove.size());
assertEquals(1, entries.size());
+
+ taskbarShadowLauncherApps.reset();
}
@Test