Index: chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java |
index 028e84c11f859966ee11c1641c1e52d1c38743f6..7a6c6a8d2972d1a646ce073f8781778d6632f9da 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassinTest.java |
@@ -612,6 +612,45 @@ public class DocumentModeAssassinTest extends NativeLibraryTestBase { |
assertFalse(prefs.contains(keyToBeDeleted)); |
} |
+ @SmallTest |
+ public void testIsOptedOutOfDocumentModeMigration() throws Exception { |
+ TabPersistentStore.setBaseStateDirectoryForTests(mTabbedModeDirectory.getBaseDirectory()); |
+ SharedPreferences.Editor sharedPreferencesEditor = |
+ ContextUtils.getAppSharedPreferences().edit(); |
+ |
+ // If no preferences for document mode are set, the user is not in document mode. |
+ sharedPreferencesEditor.remove(DocumentModeAssassin.MIGRATION_ON_UPGRADE_ATTEMPTED); |
+ sharedPreferencesEditor.remove(DocumentModeAssassin.OPT_OUT_STATE); |
+ sharedPreferencesEditor.apply(); |
+ assertTrue(DocumentModeAssassin.isOptedOutOfDocumentMode()); |
+ |
+ // If the preference for opting out of document mode is set, the user is not in document |
+ // mode. |
+ sharedPreferencesEditor.remove(DocumentModeAssassin.MIGRATION_ON_UPGRADE_ATTEMPTED); |
+ sharedPreferencesEditor.putInt(DocumentModeAssassin.OPT_OUT_STATE, |
+ DocumentModeAssassin.OPTED_OUT_OF_DOCUMENT_MODE); |
+ sharedPreferencesEditor.apply(); |
+ assertTrue(DocumentModeAssassin.isOptedOutOfDocumentMode()); |
+ |
+ // If the user has been migrated into document mode and no preference has been set for |
+ // OPT_OUT_STATE, the user should still be in document mode. |
+ sharedPreferencesEditor.putBoolean(DocumentModeAssassin.MIGRATION_ON_UPGRADE_ATTEMPTED, |
+ true); |
+ sharedPreferencesEditor.remove(DocumentModeAssassin.OPT_OUT_STATE); |
+ sharedPreferencesEditor.apply(); |
+ assertFalse(DocumentModeAssassin.isOptedOutOfDocumentMode()); |
+ |
+ // If the user has been migrated into document mode and no preference has been set for |
+ // OPT_OUT_STATE, but a "new" tabbed mode metadata file exists, migration has already been |
+ // attempted or incorrectly skipped. The user is not in document mode. |
+ sharedPreferencesEditor.putBoolean(DocumentModeAssassin.MIGRATION_ON_UPGRADE_ATTEMPTED, |
+ true); |
+ sharedPreferencesEditor.remove(DocumentModeAssassin.OPT_OUT_STATE); |
+ sharedPreferencesEditor.apply(); |
+ mTabbedModeDirectory.writeTabModelFiles(TestTabModelDirectory.TAB_MODEL_METADATA_V5, false); |
+ assertTrue(DocumentModeAssassin.isOptedOutOfDocumentMode()); |
+ } |
+ |
/** Creates a DocumentModeAssassin with all of its calls pointing at our mocked classes. |
* @param isMigrationNecessary TODO(dfalcantara):*/ |
private DocumentModeAssassinForTesting createAssassinForTesting( |