package com.farmerbb.taskbar.ui;
import android.app.SearchManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.LauncherActivityInfo;
+import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.UserManager;
import android.view.Gravity;
import androidx.test.core.app.ApplicationProvider;
+import com.farmerbb.taskbar.Constants;
import com.farmerbb.taskbar.R;
+import com.farmerbb.taskbar.shadow.TaskbarShadowLauncherApps;
+import com.farmerbb.taskbar.util.AppEntry;
+import com.farmerbb.taskbar.util.IconCache;
import com.farmerbb.taskbar.util.TaskbarPosition;
import com.farmerbb.taskbar.util.U;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.robolectric.RobolectricTestRunner;
+import java.util.ArrayList;
+import java.util.List;
+
import static com.farmerbb.taskbar.util.Constants.POSITION_BOTTOM_LEFT;
import static com.farmerbb.taskbar.util.Constants.POSITION_BOTTOM_RIGHT;
import static com.farmerbb.taskbar.util.Constants.POSITION_BOTTOM_VERTICAL_LEFT;
"android.*", "androidx.*", "com.farmerbb.taskbar.shadow.*"})
@PrepareForTest(value = {U.class, TaskbarPosition.class})
public class StartMenuControllerTest {
- private static final String UNSUPPORTED = "unsupported";
private static final String NON_URL_QUERY = "test-query";
@Rule
prefs.edit().putString(PREF_SHOW_SEARCH_BAR, "never").apply();
assertFalse(uiController.shouldShowSearchBox(prefs, true));
- prefs.edit().putString(PREF_SHOW_SEARCH_BAR, UNSUPPORTED).apply();
+ prefs.edit().putString(PREF_SHOW_SEARCH_BAR, Constants.UNSUPPORTED).apply();
assertFalse(uiController.shouldShowSearchBox(prefs, true));
}
assertEquals("/search", uri.getPath());
assertEquals(NON_URL_QUERY, uri.getQueryParameter("q"));
}
+
+ @Test
+ public void testGenerateAppEntries() {
+ List<LauncherActivityInfo> queryList = new ArrayList<>();
+ UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+ PackageManager packageManager = context.getPackageManager();
+
+ List<AppEntry> appEntries =
+ uiController.generateAppEntries(context, userManager, packageManager, queryList);
+ assertEquals(0, appEntries.size());
+
+ ActivityInfo activityInfo = new ActivityInfo();
+ activityInfo.packageName = Constants.ENTRY_TEST_PACKAGE;
+ activityInfo.name = Constants.ENTRY_TEST_LABEL;
+ activityInfo.nonLocalizedLabel = activityInfo.name;
+ activityInfo.applicationInfo = new ApplicationInfo();
+ activityInfo.applicationInfo.packageName = activityInfo.packageName;
+ LauncherActivityInfo launcherActivityInfo =
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, activityInfo, Constants.DEFAULT_TEST_USER_ID
+ );
+ queryList.add(launcherActivityInfo);
+ appEntries =
+ uiController.generateAppEntries(context, userManager, packageManager, queryList);
+ assertEquals(1, appEntries.size());
+ verifyAppEntryContent(activityInfo, appEntries.get(0));
+
+ queryList.add(launcherActivityInfo);
+ appEntries =
+ uiController.generateAppEntries(context, userManager, packageManager, queryList);
+ assertEquals(2, appEntries.size());
+
+ verifyAppEntryContent(activityInfo, appEntries.get(0));
+ verifyAppEntryContent(activityInfo, appEntries.get(1));
+ }
+
+ private void verifyAppEntryContent(ActivityInfo activityInfo, AppEntry appEntry) {
+ assertEquals(activityInfo.nonLocalizedLabel, appEntry.getLabel());
+ assertEquals(activityInfo.packageName, appEntry.getPackageName());
+ ComponentName componentNameOne =
+ new ComponentName(activityInfo.packageName, activityInfo.name);
+ assertEquals(componentNameOne.flattenToString(), appEntry.getComponentName());
+ assertEquals(Constants.DEFAULT_TEST_USER_ID, appEntry.getUserId(context));
+ }
}
import androidx.test.core.app.ApplicationProvider;
+import com.farmerbb.taskbar.Constants;
import com.farmerbb.taskbar.R;
import com.farmerbb.taskbar.activity.HomeActivity;
import com.farmerbb.taskbar.activity.HomeActivityDelegate;
import static org.junit.Assert.assertTrue;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.robolectric.Shadows.shadowOf;
-import static org.robolectric.util.ReflectionHelpers.ClassParameter.from;
@RunWith(RobolectricTestRunner.class)
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*",
"android.*", "androidx.*", "com.farmerbb.taskbar.shadow.*"})
@PrepareForTest(value = {U.class, TaskbarPosition.class})
public class TaskbarControllerTest {
- private static final String UNSUPPORTED = "unsupported";
- private static final String ENTRY_TEST_PACKAGE = "test-package";
- private static final String ENTRY_TEST_COMPONENT = "test-component";
- private static final String ENTRY_TEST_LABEL = "test-label";
- private static final String ENTRY_TEST_NAME = "test-name";
-
- private static final int DEFAULT_TEST_USER_ID = 0;
- private static final int DEFAULT_TEST_USER_PROFILE_ID = 200000;
@Rule
public PowerMockRule rule = new PowerMockRule();
);
assertEquals(
Gravity.BOTTOM | Gravity.LEFT,
- uiController.getTaskbarGravity(UNSUPPORTED)
+ uiController.getTaskbarGravity(Constants.UNSUPPORTED)
);
}
);
assertEquals(
R.layout.tb_taskbar_left,
- uiController.getTaskbarLayoutId(UNSUPPORTED)
+ uiController.getTaskbarLayoutId(Constants.UNSUPPORTED)
);
}
searchInterval = uiController.getSearchInterval(prefs);
assertEquals(-1, searchInterval);
- prefs.edit().putString(PREF_RECENTS_AMOUNT, UNSUPPORTED).apply();
+ prefs.edit().putString(PREF_RECENTS_AMOUNT, Constants.UNSUPPORTED).apply();
searchInterval = uiController.getSearchInterval(prefs);
assertEquals(-1, searchInterval);
List<String> applicationIdsToRemove = new ArrayList<>();
UsageStatsManager usageStatsManager =
(UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
- final String entryTestPackage1 = ENTRY_TEST_PACKAGE + "-1";
+ final String entryTestPackage1 = Constants.ENTRY_TEST_PACKAGE + "-1";
UsageEvents.Event event =
EventBuilder
.buildEvent()
.buildEvent()
.setEventType(MOVE_TO_BACKGROUND)
.setTimeStamp(200L)
- .setPackage(ENTRY_TEST_PACKAGE + "-2")
+ .setPackage(Constants.ENTRY_TEST_PACKAGE + "-2")
.build();
shadowOf(usageStatsManager).addEvent(event);
uiController.filterForegroundApp(context, prefs, searchInterval, applicationIdsToRemove);
uiController.filterForegroundApp(context, prefs, searchInterval, applicationIdsToRemove);
assertEquals(InvisibleActivityFreeform.class.getCanonicalName(), applicationIdsToRemove.remove(0));
- event = buildTaskbarForegroundAppEvent(UNSUPPORTED, 800L);
+ event = buildTaskbarForegroundAppEvent(Constants.UNSUPPORTED, 800L);
shadowOf(usageStatsManager).addEvent(event);
uiController.filterForegroundApp(context, prefs, searchInterval, applicationIdsToRemove);
- assertEquals(UNSUPPORTED, applicationIdsToRemove.remove(0));
+ assertEquals(Constants.UNSUPPORTED, applicationIdsToRemove.remove(0));
prefs.edit().remove(PREF_HIDE_FOREGROUND).apply();
uiController.filterForegroundApp(context, prefs, searchInterval, applicationIdsToRemove);
positions.add(POSITION_TOP_RIGHT);
positions.add(POSITION_TOP_VERTICAL_LEFT);
positions.add(POSITION_TOP_VERTICAL_RIGHT);
- positions.add(UNSUPPORTED);
+ positions.add(Constants.UNSUPPORTED);
String sortOrder = "false";
for (String position : positions) {
}
}
- sortOrder = UNSUPPORTED;
+ sortOrder = Constants.UNSUPPORTED;
for (String position : positions) {
positionAnswer.answer = position;
assertFalse(uiController.needToReverseOrder(context, sortOrder));
pinnedApps.add(appEntry);
taskbarShadowLauncherApps
.addEnabledPackage(
- UserHandle.getUserHandleForUid(DEFAULT_TEST_USER_ID),
+ UserHandle.getUserHandleForUid(Constants.DEFAULT_TEST_USER_ID),
appEntry.getPackageName()
);
realNumOfPinnedApps = uiController.filterRealPinnedApps(
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
shadowOf(userManager)
- .addUserProfile(UserHandle.getUserHandleForUid(DEFAULT_TEST_USER_ID));
+ .addUserProfile(UserHandle.getUserHandleForUid(Constants.DEFAULT_TEST_USER_ID));
shadowOf(userManager)
- .addUserProfile(UserHandle.getUserHandleForUid(DEFAULT_TEST_USER_PROFILE_ID));
+ .addUserProfile(
+ UserHandle.getUserHandleForUid(Constants.DEFAULT_TEST_USER_PROFILE_ID)
+ );
LauncherApps launcherApps =
(LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE);
TaskbarShadowLauncherApps taskbarShadowLauncherApps =
info.name = appEntry.getLabel();
info.nonLocalizedLabel = appEntry.getLabel();
LauncherActivityInfo launcherActivityInfo =
- generateTestLauncherActivityInfo(context, info, DEFAULT_TEST_USER_ID);
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, info, Constants.DEFAULT_TEST_USER_ID
+ );
taskbarShadowLauncherApps.addActivity(launcherActivityInfo.getUser(), launcherActivityInfo);
uiController.generateAppEntries(context, 1, usageStatsList, entries, launcherAppCache);
secondInfo.name = appEntry.getLabel() + "-second";
secondInfo.nonLocalizedLabel = appEntry.getLabel();
LauncherActivityInfo secondLauncherActivityInfo =
- generateTestLauncherActivityInfo(context, secondInfo, DEFAULT_TEST_USER_ID);
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, secondInfo, Constants.DEFAULT_TEST_USER_ID
+ );
taskbarShadowLauncherApps
.addActivity(secondLauncherActivityInfo.getUser(), secondLauncherActivityInfo);
uiController.generateAppEntries(context, 1, usageStatsList, entries, launcherAppCache);
launcherAppCache.clear();
LauncherActivityInfo launcherActivityInfoForProfile =
- generateTestLauncherActivityInfo(context, info, DEFAULT_TEST_USER_PROFILE_ID);
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, info, Constants.DEFAULT_TEST_USER_PROFILE_ID
+ );
taskbarShadowLauncherApps.addActivity(
- UserHandle.getUserHandleForUid(DEFAULT_TEST_USER_PROFILE_ID),
+ UserHandle.getUserHandleForUid(Constants.DEFAULT_TEST_USER_PROFILE_ID),
launcherActivityInfoForProfile
);
uiController.generateAppEntries(context, 1, usageStatsList, entries, launcherAppCache);
appEntry =
new AppEntry(
"com.google.android.googlequicksearchbox",
- ENTRY_TEST_COMPONENT,
- ENTRY_TEST_LABEL,
+ Constants.ENTRY_TEST_COMPONENT,
+ Constants.ENTRY_TEST_LABEL,
null,
false
);
thirdInfo.name = appEntry.getLabel();
thirdInfo.nonLocalizedLabel = appEntry.getLabel();
LauncherActivityInfo thirdLauncherActivityInfo =
- generateTestLauncherActivityInfo(context, thirdInfo, DEFAULT_TEST_USER_ID);
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, thirdInfo, Constants.DEFAULT_TEST_USER_ID
+ );
taskbarShadowLauncherApps
.addActivity(thirdLauncherActivityInfo.getUser(), thirdLauncherActivityInfo);
uiController.generateAppEntries(context, 1, usageStatsList, entries, launcherAppCache);
ActivityInfo forthInfo = new ActivityInfo(thirdInfo);
forthInfo.name = "com.google.android.googlequicksearchbox.SearchActivity";
LauncherActivityInfo forthLauncherActivityInfo =
- generateTestLauncherActivityInfo(context, forthInfo, DEFAULT_TEST_USER_ID);
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, forthInfo, Constants.DEFAULT_TEST_USER_ID
+ );
taskbarShadowLauncherApps
.addActivity(forthLauncherActivityInfo.getUser(), forthLauncherActivityInfo);
uiController.generateAppEntries(context, 1, usageStatsList, entries, launcherAppCache);
assertSame(appEntry, entries.get(0));
AppEntry firstEntry = appEntry;
- appEntry = new AppEntry(ENTRY_TEST_PACKAGE, null, null, null, false);
+ appEntry = new AppEntry(Constants.ENTRY_TEST_PACKAGE, null, null, null, false);
appEntry.setLastTimeUsed(System.currentTimeMillis());
entries.add(appEntry);
ActivityInfo info = new ActivityInfo();
info.packageName = appEntry.getPackageName();
- info.name = ENTRY_TEST_NAME;
- info.nonLocalizedLabel = ENTRY_TEST_LABEL;
+ info.name = Constants.ENTRY_TEST_NAME;
+ info.nonLocalizedLabel = Constants.ENTRY_TEST_LABEL;
LauncherActivityInfo launcherActivityInfo =
- generateTestLauncherActivityInfo(context, info, DEFAULT_TEST_USER_ID);
+ TaskbarShadowLauncherApps
+ .generateTestLauncherActivityInfo(
+ context, info, Constants.DEFAULT_TEST_USER_ID
+ );
launcherAppCache.add(launcherActivityInfo);
uiController.populateAppEntries(context, pm, entries, launcherAppCache);
assertEquals(2, entries.size());
populatedEntry.getComponentName()
);
assertEquals(info.nonLocalizedLabel.toString(), populatedEntry.getLabel());
- assertEquals(DEFAULT_TEST_USER_ID, populatedEntry.getUserId(context));
+ assertEquals(Constants.DEFAULT_TEST_USER_ID, populatedEntry.getUserId(context));
assertEquals(appEntry.getLastTimeUsed(), populatedEntry.getLastTimeUsed());
}
- private LauncherActivityInfo generateTestLauncherActivityInfo(Context context,
- ActivityInfo activityInfo,
- int userHandleId) {
- return
- ReflectionHelpers.callConstructor(
- LauncherActivityInfo.class,
- from(Context.class, context),
- from(ActivityInfo.class, activityInfo),
- from(UserHandle.class, UserHandle.getUserHandleForUid(userHandleId))
- );
- }
-
private AppEntry generateTestAppEntry(int index) {
AppEntry appEntry =
new AppEntry(
- ENTRY_TEST_PACKAGE + "-" + index,
- ENTRY_TEST_COMPONENT + "-" + index,
- ENTRY_TEST_LABEL + "-" + index,
+ Constants.ENTRY_TEST_PACKAGE + "-" + index,
+ Constants.ENTRY_TEST_COMPONENT + "-" + index,
+ Constants.ENTRY_TEST_LABEL + "-" + index,
null,
false
);
- appEntry.setUserId(DEFAULT_TEST_USER_ID);
+ appEntry.setUserId(Constants.DEFAULT_TEST_USER_ID);
return appEntry;
}