Chromium Code Reviews| 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..5cda91377e2f565feeb7cf23212ae85e3ec51b7d 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,26 +25,30 @@ 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_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]); |
| + } |
| } |
| @UiThreadTest |
| @SmallTest |
| @Feature({"Webapps"}) |
| public void testEntriesCreated() { |
| - ActivityAssigner assigner = ActivityAssigner.instance(mContext); |
| + String webappId = BASE_WEBAPP_ID; |
| + ActivityAssigner assigner = ActivityAssigner.instance(mContext, webappId); |
| // Make sure that no webapps have been assigned to any Activities for a fresh install. |
| - checkState(assigner); |
| List<ActivityAssigner.ActivityEntry> entries = assigner.getEntries(); |
|
gone
2016/05/26 18:20:36
This ordering change seems unnecessary.
Xi Han
2016/05/26 20:54:58
Done.
|
| + checkState(assigner); |
| assertEquals(ActivityAssigner.NUM_WEBAPP_ACTIVITIES, entries.size()); |
| for (ActivityAssigner.ActivityEntry entry : entries) { |
| assertEquals(null, entry.mWebappId); |
| @@ -60,9 +65,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(mContext, webappId); |
| + assertEquals(index, assigner.getActivityTypeIndex()); |
| checkState(assigner); |
| } |
| @@ -74,10 +82,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(mContext, webappId); |
| + assertEquals(index, assigner.getActivityTypeIndex()); |
| checkState(assigner); |
| } |
| @@ -85,7 +96,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(mContext, webappId); |
| + int index = assigner.getActivityTypeIndex(); |
| + |
| checkState(assigner); |
| // Assign all of the Activities to webapps. |
| @@ -115,6 +129,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 +144,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>(); |