| 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..e4641776c9f190fc682a582ff010297b6975535e 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
|
| @@ -8,9 +8,11 @@ import android.test.InstrumentationTestCase;
|
| import android.test.UiThreadTest;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| +import org.chromium.base.ContextUtils;
|
| 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,22 +26,27 @@ 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);
|
| + mContext = new AdvancedMockContext(ContextUtils.getApplicationContext());
|
| + mPreferences = new HashMap[ActivityAssigner.ACTIVITY_TYPE_COUNT];
|
| + for (int i = 0; i < ActivityAssigner.ACTIVITY_TYPE_COUNT; ++i) {
|
| + mPreferences[i] = new HashMap<String, Object>();
|
| + mContext.addSharedPreferences(ActivityAssigner.PREF_PACKAGE[i], mPreferences[i]);
|
| + }
|
| + ContextUtils.initApplicationContextForTests(mContext);
|
| }
|
|
|
| @UiThreadTest
|
| @SmallTest
|
| @Feature({"Webapps"})
|
| public void testEntriesCreated() {
|
| - ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| + String webappId = BASE_WEBAPP_ID;
|
| + ActivityAssigner assigner = ActivityAssigner.instance(webappId);
|
|
|
| // Make sure that no webapps have been assigned to any Activities for a fresh install.
|
| checkState(assigner);
|
| @@ -60,9 +67,12 @@ 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);
|
| + String webappId = BASE_WEBAPP_ID;
|
| + int index = ActivityAssigner.getIndex(webappId);
|
| + createPreferences(numSavedEntries, index);
|
|
|
| - ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| + ActivityAssigner assigner = ActivityAssigner.instance(webappId);
|
| + assertEquals(index, assigner.getActivityTypeIndex());
|
| checkState(assigner);
|
| }
|
|
|
| @@ -74,10 +84,13 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| @Feature({"Webapps"})
|
| public void testCorruptedPreferences() {
|
| String wrongVariableType = "omgwtfbbq";
|
| - mPreferences.clear();
|
| - mPreferences.put(ActivityAssigner.PREF_NUM_SAVED_ENTRIES, wrongVariableType);
|
| + String webappId = BASE_WEBAPP_ID;
|
| + int index = ActivityAssigner.getIndex(BASE_WEBAPP_ID);
|
| + mPreferences[index].clear();
|
| + mPreferences[index].put(ActivityAssigner.PREF_NUM_SAVED_ENTRIES[index], wrongVariableType);
|
|
|
| - ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| + ActivityAssigner assigner = ActivityAssigner.instance(webappId);
|
| + assertEquals(index, assigner.getActivityTypeIndex());
|
| checkState(assigner);
|
| }
|
|
|
| @@ -85,7 +98,10 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| @SmallTest
|
| @Feature({"Webapps"})
|
| public void testAssignment() {
|
| - ActivityAssigner assigner = ActivityAssigner.instance(mContext);
|
| + String webappId = BASE_WEBAPP_ID;
|
| + ActivityAssigner assigner = ActivityAssigner.instance(webappId);
|
| + int index = assigner.getActivityTypeIndex();
|
| +
|
| checkState(assigner);
|
|
|
| // Assign all of the Activities to webapps.
|
| @@ -115,6 +131,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, ActivityAssigner.getIndex(overflowWebappId));
|
| int overflowActivityIndex = assigner.assign(overflowWebappId);
|
|
|
| String lastAssignedWebappId = BASE_WEBAPP_ID + (ActivityAssigner.NUM_WEBAPP_ACTIVITIES - 1);
|
| @@ -129,28 +146,43 @@ public class ActivityAssignerTest extends InstrumentationTestCase {
|
| checkState(assigner);
|
| }
|
|
|
| + @UiThreadTest
|
| + @SmallTest
|
| + @Feature({"WebApk"})
|
| + public void testGetIndex() {
|
| + String webappId = BASE_WEBAPP_ID;
|
| + assertEquals(ActivityAssigner.WEBAPP_ACTIVITY_INDEX, ActivityAssigner.getIndex(webappId));
|
| +
|
| + String webApkId = WebApkConstants.WEBAPK_ID_PREFIX + "id";
|
| + assertEquals(ActivityAssigner.WEBAPK_ACTIVITY_INDEX, ActivityAssigner.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 activityTypeIndex) {
|
| + mPreferences[activityTypeIndex].clear();
|
| + mPreferences[activityTypeIndex].put(
|
| + ActivityAssigner.PREF_NUM_SAVED_ENTRIES[activityTypeIndex], 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[activityTypeIndex] + i;
|
| + mPreferences[activityTypeIndex].put(activityIndexKey, i);
|
|
|
| - String webappIdKey = ActivityAssigner.PREF_WEBAPP_ID + i;
|
| + String webappIdKey = ActivityAssigner.PREF_WEBAPP_ID[activityTypeIndex] + i;
|
| String webappIdValue = BASE_WEBAPP_ID + i;
|
| - mPreferences.put(webappIdKey, webappIdValue);
|
| + mPreferences[activityTypeIndex].put(webappIdKey, webappIdValue);
|
| }
|
| }
|
|
|
| /** Checks the saved state to make sure it makes sense. */
|
| private void checkState(ActivityAssigner assigner) {
|
| List<ActivityAssigner.ActivityEntry> entries = assigner.getEntries();
|
| + int activityTypeIndex = assigner.getActivityTypeIndex();
|
|
|
| // 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,
|
| - (int) (Integer) mPreferences.get(ActivityAssigner.PREF_NUM_SAVED_ENTRIES));
|
| + (int) (Integer) mPreferences[activityTypeIndex].get(
|
| + ActivityAssigner.PREF_NUM_SAVED_ENTRIES[activityTypeIndex]));
|
|
|
| // Confirm that the Activity indices go from 0 to NUM_WEBAPP_ACTIVITIES - 1.
|
| HashSet<Integer> assignedActivities = new HashSet<Integer>();
|
|
|