| Index: chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ActivityAssignerTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ActivityAssignerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ActivityAssignerTest.java
|
| index ae88be18b938d734df850f474025389a82390d0c..d1cda61577e33eb219bfb1063df3db3a474572ec 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ActivityAssignerTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/ActivityAssignerTest.java
|
| @@ -11,6 +11,7 @@ import android.test.suitebuilder.annotation.SmallTest;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.base.test.util.AdvancedMockContext;
|
| import org.chromium.base.test.util.Feature;
|
| +import org.chromium.webapk.lib.common.WebApkConstants;
|
|
|
| import java.util.HashMap;
|
| import java.util.HashSet;
|
| @@ -24,15 +25,18 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| private static final String BASE_WEBAPP_ID = "BASE_WEBAPP_ID_";
|
|
|
| private AdvancedMockContext mContext;
|
| - private HashMap<String, Object> mPreferences;
|
| + private HashMap<String, Object>[] mPreferences;
|
|
|
| @Override
|
| protected void setUp() throws Exception {
|
| super.setUp();
|
| RecordHistogram.disableForTests();
|
| mContext = new AdvancedMockContext();
|
| - mPreferences = new HashMap<String, Object>();
|
| - mContext.addSharedPreferences(ActivityAssigner.PREF_PACKAGE, mPreferences);
|
| + mPreferences = new HashMap[ActivityAssigner.ACTIVITY_TYPES];
|
| + for (int i = 0; i < ActivityAssigner.ACTIVITY_TYPES; ++i) {
|
| + mPreferences[i] = new HashMap<String, Object>();
|
| + mContext.addSharedPreferences(ActivityAssigner.PREF_PACKAGE[i], mPreferences[i]);
|
| + }
|
| }
|
|
|
| @UiThreadTest
|
| @@ -42,11 +46,13 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
|
|
| // Make sure that no webapps have been assigned to any Activities for a fresh install.
|
| - checkState(assigner);
|
| - List<ActivityAssigner.ActivityEntry> entries = assigner.getEntries();
|
| - assertEquals(ActivityAssigner.NUM_WEBAPP_ACTIVITIES, entries.size());
|
| - for (ActivityAssigner.ActivityEntry entry : entries) {
|
| - assertEquals(null, entry.mWebappId);
|
| + List<ActivityAssigner.ActivityEntry>[] entries = assigner.getEntries();
|
| + for (int i = 0; i < entries.length; ++i) {
|
| + checkState(assigner, i);
|
| + assertEquals(ActivityAssigner.NUM_WEBAPP_ACTIVITIES, entries[i].size());
|
| + for (ActivityAssigner.ActivityEntry entry : entries[i]) {
|
| + assertEquals(null, entry.mWebappId);
|
| + }
|
| }
|
| }
|
|
|
| @@ -60,10 +66,11 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| public void testEntriesDownsized() {
|
| // Store preferences indicating that more Activities existed previously than there are now.
|
| int numSavedEntries = ActivityAssigner.NUM_WEBAPP_ACTIVITIES + 1;
|
| - createPreferences(numSavedEntries);
|
| + int index = ActivityAssigner.WEBAPP_ACTIVITY_INDEX;
|
| + createPreferences(numSavedEntries, index);
|
|
|
| ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| - checkState(assigner);
|
| + checkState(assigner, index);
|
| }
|
|
|
| /**
|
| @@ -74,11 +81,12 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| @Feature({"Webapps"})
|
| public void testCorruptedPreferences() {
|
| String wrongVariableType = "omgwtfbbq";
|
| - mPreferences.clear();
|
| - mPreferences.put(ActivityAssigner.PREF_NUM_SAVED_ENTRIES, wrongVariableType);
|
| + int index = ActivityAssigner.WEBAPP_ACTIVITY_INDEX;
|
| + mPreferences[index].clear();
|
| + mPreferences[index].put(ActivityAssigner.PREF_NUM_SAVED_ENTRIES[index], wrongVariableType);
|
|
|
| ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| - checkState(assigner);
|
| + checkState(assigner, index);
|
| }
|
|
|
| @UiThreadTest
|
| @@ -86,7 +94,8 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| @Feature({"Webapps"})
|
| public void testAssignment() {
|
| ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| - checkState(assigner);
|
| + int index = assigner.getIndex(BASE_WEBAPP_ID);
|
| + checkState(assigner, index);
|
|
|
| // Assign all of the Activities to webapps.
|
| // Go backwards to make sure ordering doesn't matter.
|
| @@ -115,6 +124,7 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
|
|
| // Make sure that the least recently used Activity is repurposed when we run out.
|
| String overflowWebappId = "OVERFLOW_ID";
|
| + assertEquals(index, assigner.getIndex(overflowWebappId));
|
| int overflowActivityIndex = assigner.assign(overflowWebappId);
|
|
|
| String lastAssignedWebappId = BASE_WEBAPP_ID + (ActivityAssigner.NUM_WEBAPP_ACTIVITIES - 1);
|
| @@ -126,35 +136,50 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| assertNotSame("Webapp did not get reassigned to a new Activity.",
|
| lastAssignedPreviousActivityIndex, lastAssignedCurrentActivityIndex);
|
|
|
| - checkState(assigner);
|
| + checkState(assigner, index);
|
| + }
|
| +
|
| + @UiThreadTest
|
| + @SmallTest
|
| + @Feature({"WebApk"})
|
| + public void testGetIndex() {
|
| + String webappId = BASE_WEBAPP_ID;
|
| + ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| + assertEquals(ActivityAssigner.WEBAPP_ACTIVITY_INDEX, assigner.getIndex(webappId));
|
| +
|
| + String webApkId = WebApkConstants.WEBAPK_ID_PREFIX + "id";
|
| + assertEquals(ActivityAssigner.WEBAPK_ACTIVITY_INDEX, assigner.getIndex(webApkId));
|
| }
|
|
|
| /** Saves state indicating that a number of WebappActivities have already been saved out. */
|
| - private void createPreferences(int numSavedEntries) {
|
| - mPreferences.clear();
|
| - mPreferences.put(ActivityAssigner.PREF_NUM_SAVED_ENTRIES, numSavedEntries);
|
| + private void createPreferences(int numSavedEntries, int activityType) {
|
| + mPreferences[activityType].clear();
|
| + mPreferences[activityType].put(ActivityAssigner.PREF_NUM_SAVED_ENTRIES[activityType],
|
| + numSavedEntries);
|
| for (int i = 0; i < numSavedEntries; ++i) {
|
| - String activityIndexKey = ActivityAssigner.PREF_ACTIVITY_INDEX + i;
|
| - mPreferences.put(activityIndexKey, i);
|
| + String activityIndexKey =
|
| + ActivityAssigner.PREF_ACTIVITY_INDEX[activityType] + i;
|
| + mPreferences[activityType].put(activityIndexKey, i);
|
|
|
| - String webappIdKey = ActivityAssigner.PREF_WEBAPP_ID + i;
|
| + String webappIdKey = ActivityAssigner.PREF_WEBAPP_ID[activityType] + i;
|
| String webappIdValue = BASE_WEBAPP_ID + i;
|
| - mPreferences.put(webappIdKey, webappIdValue);
|
| + mPreferences[activityType].put(webappIdKey, webappIdValue);
|
| }
|
| }
|
|
|
| /** Checks the saved state to make sure it makes sense. */
|
| - private void checkState(ActivityAssigner assigner) {
|
| - List<ActivityAssigner.ActivityEntry> entries = assigner.getEntries();
|
| + private void checkState(ActivityAssigner assigner, int index) {
|
| + List<ActivityAssigner.ActivityEntry>[] entries = assigner.getEntries();
|
|
|
| // Confirm that the right number of entries in memory and in the preferences.
|
| - assertEquals(ActivityAssigner.NUM_WEBAPP_ACTIVITIES, entries.size());
|
| + assertEquals(ActivityAssigner.NUM_WEBAPP_ACTIVITIES, entries[index].size());
|
| assertEquals(ActivityAssigner.NUM_WEBAPP_ACTIVITIES,
|
| - (int) (Integer) mPreferences.get(ActivityAssigner.PREF_NUM_SAVED_ENTRIES));
|
| + (int) (Integer) mPreferences[index].get(
|
| + ActivityAssigner.PREF_NUM_SAVED_ENTRIES[index]));
|
|
|
| // Confirm that the Activity indices go from 0 to NUM_WEBAPP_ACTIVITIES - 1.
|
| HashSet<Integer> assignedActivities = new HashSet<Integer>();
|
| - for (ActivityAssigner.ActivityEntry entry : entries) {
|
| + for (ActivityAssigner.ActivityEntry entry : entries[index]) {
|
| assignedActivities.add(entry.mActivityIndex);
|
| }
|
| for (int i = 0; i < ActivityAssigner.NUM_WEBAPP_ACTIVITIES; ++i) {
|
|
|