Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3432)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java

Issue 2766373004: Convert the rest of chrome_public_test_apk InstrumentationTestCases to JUnit4 (Closed)
Patch Set: Change imports Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java
index af2ae55371e2a5edd5c827f0deef3686509780ee..2f1b403e7778dd244e1067151148b781a7355372 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java
@@ -4,15 +4,20 @@
package org.chromium.chrome.browser.customtabs;
-import static android.test.MoreAsserts.assertContentsInAnyOrder;
-import static android.test.MoreAsserts.assertEmpty;
-
import android.app.Activity;
import android.os.AsyncTask;
+import android.support.test.InstrumentationRegistry;
import android.support.test.filters.MediumTest;
import android.support.test.filters.SmallTest;
-import android.test.InstrumentationTestCase;
-import android.test.UiThreadTest;
+import android.support.test.rule.UiThreadTestRule;
+
+import org.hamcrest.Matchers;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus;
@@ -32,6 +37,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorImpl;
import org.chromium.chrome.browser.tabmodel.TabPersistencePolicy;
import org.chromium.chrome.browser.tabmodel.TabPersistentStore;
import org.chromium.chrome.browser.tabmodel.TestTabModelDirectory;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel;
import java.io.File;
@@ -50,17 +56,19 @@ import javax.annotation.Nullable;
/**
* Tests for the Custom Tab persistence logic.
*/
-public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
-
+@RunWith(ChromeJUnit4ClassRunner.class)
+public class CustomTabTabPersistencePolicyTest {
private TestTabModelDirectory mMockDirectory;
private AdvancedMockContext mAppContext;
- @Override
- public void setUp() throws Exception {
- super.setUp();
+ @Rule
+ public UiThreadTestRule mRule = new UiThreadTestRule();
- mAppContext = new AdvancedMockContext(
- getInstrumentation().getTargetContext().getApplicationContext());
+ @Before
+ public void setUp() throws Exception {
+ mAppContext = new AdvancedMockContext(InstrumentationRegistry.getInstrumentation()
+ .getTargetContext()
+ .getApplicationContext());
ContextUtils.initApplicationContextForTests(mAppContext);
mMockDirectory = new TestTabModelDirectory(
@@ -69,7 +77,7 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
TabPersistentStore.setBaseStateDirectoryForTests(mMockDirectory.getBaseDirectory());
}
- @Override
+ @After
public void tearDown() throws Exception {
mMockDirectory.tearDown();
@@ -79,17 +87,18 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
if (activity == null) continue;
ApplicationStatus.onStateChangeForTesting(activity, ActivityState.DESTROYED);
}
- super.tearDown();
}
+ @Test
@Feature("TabPersistentStore")
@SmallTest
public void testDeletableMetadataSelection_NoFiles() {
List<File> deletableFiles = CustomTabTabPersistencePolicy.getMetadataFilesForDeletion(
System.currentTimeMillis(), new ArrayList<File>());
- assertEmpty(deletableFiles);
+ Assert.assertThat(deletableFiles, Matchers.emptyIterableOf(File.class));
}
+ @Test
@Feature("TabPersistentStore")
@SmallTest
public void testDeletableMetadataSelection_MaximumValidFiles() {
@@ -100,9 +109,10 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
filesToTest.addAll(generateMaximumStateFiles(currentTime));
List<File> deletableFiles = CustomTabTabPersistencePolicy.getMetadataFilesForDeletion(
currentTime, filesToTest);
- assertEmpty(deletableFiles);
+ Assert.assertThat(deletableFiles, Matchers.emptyIterableOf(File.class));
}
+ @Test
@Feature("TabPersistentStore")
@SmallTest
public void testDeletableMetadataSelection_ExceedsMaximumValidFiles() {
@@ -117,9 +127,10 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
filesToTest.add(filesToTest.size() / 2, slightlyOlderFile);
List<File> deletableFiles = CustomTabTabPersistencePolicy.getMetadataFilesForDeletion(
currentTime, filesToTest);
- assertContentsInAnyOrder(deletableFiles, slightlyOlderFile);
+ Assert.assertThat(deletableFiles, Matchers.containsInAnyOrder(slightlyOlderFile));
}
+ @Test
@Feature("TabPersistentStore")
@SmallTest
public void testDeletableMetadataSelection_ExceedExpiryThreshold() {
@@ -133,88 +144,97 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
filesToTest.add(expiredFile);
List<File> deletableFiles = CustomTabTabPersistencePolicy.getMetadataFilesForDeletion(
currentTime, filesToTest);
- assertContentsInAnyOrder(deletableFiles, expiredFile);
+ Assert.assertThat(deletableFiles, Matchers.containsInAnyOrder(expiredFile));
}
/**
* Test to ensure that an existing metadata files are deleted if no restore is requested.
*/
+ @Test
@Feature("TabPersistentStore")
@MediumTest
public void testExistingMetadataFileDeletedIfNoRestore() throws Exception {
File baseStateDirectory = TabPersistentStore.getOrCreateBaseStateDirectory();
- assertNotNull(baseStateDirectory);
+ Assert.assertNotNull(baseStateDirectory);
CustomTabTabPersistencePolicy policy = new CustomTabTabPersistencePolicy(7, false);
File stateDirectory = policy.getOrCreateStateDirectory();
- assertNotNull(stateDirectory);
+ Assert.assertNotNull(stateDirectory);
String stateFileName = policy.getStateFileName();
File existingStateFile = new File(stateDirectory, stateFileName);
- assertTrue(existingStateFile.createNewFile());
+ Assert.assertTrue(existingStateFile.createNewFile());
- assertTrue(existingStateFile.exists());
+ Assert.assertTrue(existingStateFile.exists());
policy.performInitialization(AsyncTask.SERIAL_EXECUTOR);
policy.waitForInitializationToFinish();
- assertFalse(existingStateFile.exists());
+ Assert.assertFalse(existingStateFile.exists());
}
/**
* Test the logic that gets all the live tab and task IDs.
*/
+ @Test
@Feature("TabPersistentStore")
@SmallTest
- @UiThreadTest
- public void testGettingTabAndTaskIds() {
- Set<Integer> tabIds = new HashSet<>();
- Set<Integer> taskIds = new HashSet<>();
- CustomTabTabPersistencePolicy.getAllLiveTabAndTaskIds(tabIds, taskIds);
- assertEmpty(tabIds);
- assertEmpty(taskIds);
-
- tabIds.clear();
- taskIds.clear();
-
- CustomTabActivity cct1 = buildTestCustomTabActivity(1, new int[] {4, 8, 9}, null);
- ApplicationStatus.onStateChangeForTesting(cct1, ActivityState.CREATED);
-
- CustomTabActivity cct2 = buildTestCustomTabActivity(5, new int[] {458}, new int[] {9878});
- ApplicationStatus.onStateChangeForTesting(cct2, ActivityState.CREATED);
-
- // Add a tabbed mode activity to ensure that its IDs are not included in the returned CCT
- // ID sets.
- final TabModelSelectorImpl tabbedSelector =
- buildTestTabModelSelector(new int[] {12121212}, new int[] {1515151515});
- ChromeTabbedActivity tabbedActivity = new ChromeTabbedActivity() {
+ public void testGettingTabAndTaskIds() throws Throwable {
+ mRule.runOnUiThread(new Runnable() {
Ted C 2017/03/29 00:06:41 We should figure out a way to have our own annotat
the real yoland 2017/03/29 01:13:23 Aha, one thing we can do is move things that neede
@Override
- public int getTaskId() {
- return 888;
- }
+ public void run() {
+ Set<Integer> tabIds = new HashSet<>();
+ Set<Integer> taskIds = new HashSet<>();
+ CustomTabTabPersistencePolicy.getAllLiveTabAndTaskIds(tabIds, taskIds);
+ Assert.assertThat(tabIds, Matchers.emptyIterable());
+ Assert.assertThat(taskIds, Matchers.emptyIterable());
+
+ tabIds.clear();
+ taskIds.clear();
+
+ CustomTabActivity cct1 = buildTestCustomTabActivity(1, new int[] {4, 8, 9}, null);
+ ApplicationStatus.onStateChangeForTesting(cct1, ActivityState.CREATED);
+
+ CustomTabActivity cct2 =
+ buildTestCustomTabActivity(5, new int[] {458}, new int[] {9878});
+ ApplicationStatus.onStateChangeForTesting(cct2, ActivityState.CREATED);
+
+ // Add a tabbed mode activity to ensure that its IDs are not included in the
+ // returned CCT ID sets.
+ final TabModelSelectorImpl tabbedSelector =
+ buildTestTabModelSelector(new int[] {12121212}, new int[] {1515151515});
+ ChromeTabbedActivity tabbedActivity = new ChromeTabbedActivity() {
+ @Override
+ public int getTaskId() {
+ return 888;
+ }
- @Override
- public TabModelSelector getTabModelSelector() {
- return tabbedSelector;
- }
- };
- ApplicationStatus.onStateChangeForTesting(tabbedActivity, ActivityState.CREATED);
+ @Override
+ public TabModelSelector getTabModelSelector() {
+ return tabbedSelector;
+ }
+ };
+ ApplicationStatus.onStateChangeForTesting(tabbedActivity, ActivityState.CREATED);
- CustomTabTabPersistencePolicy.getAllLiveTabAndTaskIds(tabIds, taskIds);
- assertContentsInAnyOrder(tabIds, 4, 8, 9, 458, 9878);
- assertContentsInAnyOrder(taskIds, 1, 5);
+ CustomTabTabPersistencePolicy.getAllLiveTabAndTaskIds(tabIds, taskIds);
+ Assert.assertThat(tabIds, Matchers.containsInAnyOrder(4, 8, 9, 458, 9878));
+ Assert.assertThat(taskIds, Matchers.containsInAnyOrder(1, 5));
+ }
+ });
}
/**
* Test the full cleanup task path that determines what files are eligible for deletion.
+ * @throws Throwable
Ted C 2017/03/29 00:06:41 remove
the real yoland 2017/03/29 01:13:23 Done
*/
+ @Test
@Feature("TabPersistentStore")
@MediumTest
- public void testCleanupTask() throws Exception {
+ public void testCleanupTask() throws Throwable {
File baseStateDirectory = TabPersistentStore.getOrCreateBaseStateDirectory();
- assertNotNull(baseStateDirectory);
+ Assert.assertNotNull(baseStateDirectory);
CustomTabTabPersistencePolicy policy = new CustomTabTabPersistencePolicy(2, false);
File stateDirectory = policy.getOrCreateStateDirectory();
- assertNotNull(stateDirectory);
+ Assert.assertNotNull(stateDirectory);
final AtomicReference<List<String>> filesToDelete = new AtomicReference<>();
final CallbackHelper callbackSignal = new CallbackHelper();
@@ -229,29 +249,34 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
// Test when no files have been created.
policy.cleanupUnusedFiles(filesToDeleteCallback);
callbackSignal.waitForCallback(0);
- assertEmpty(filesToDelete.get());
+ Assert.assertThat(filesToDelete.get(), Matchers.emptyIterable());
// Create an unreferenced tab state file and ensure it is marked for deletion.
File tab999File = TabState.getTabStateFile(stateDirectory, 999, false);
- assertTrue(tab999File.createNewFile());
+ Assert.assertTrue(tab999File.createNewFile());
policy.cleanupUnusedFiles(filesToDeleteCallback);
callbackSignal.waitForCallback(1);
- assertContentsInAnyOrder(filesToDelete.get(), tab999File.getName());
+ Assert.assertThat(filesToDelete.get(), Matchers.containsInAnyOrder(tab999File.getName()));
// Reference the tab state file and ensure it is no longer marked for deletion.
- CustomTabActivity cct1 = buildTestCustomTabActivity(1, new int[] {999}, null);
- ApplicationStatus.onStateChangeForTesting(cct1, ActivityState.CREATED);
+ mRule.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ CustomTabActivity cct1 = buildTestCustomTabActivity(1, new int[] {999}, null);
+ ApplicationStatus.onStateChangeForTesting(cct1, ActivityState.CREATED);
+ }
+ });
policy.cleanupUnusedFiles(filesToDeleteCallback);
callbackSignal.waitForCallback(2);
- assertEmpty(filesToDelete.get());
+ Assert.assertThat(filesToDelete.get(), Matchers.emptyIterable());
// Create a tab model and associated tabs. Ensure it is not marked for deletion as it is
// new enough.
- final TabModelSelectorImpl selectorImpl = buildTestTabModelSelector(
- new int[] {111, 222, 333 }, null);
byte[] data = ThreadUtils.runOnUiThreadBlockingNoException(new Callable<byte[]>() {
@Override
public byte[] call() throws Exception {
+ TabModelSelectorImpl selectorImpl =
+ buildTestTabModelSelector(new int[] {111, 222, 333}, null);
return TabPersistentStore.serializeTabModelSelector(selectorImpl, null);
}
});
@@ -265,48 +290,50 @@ public class CustomTabTabPersistencePolicyTest extends InstrumentationTestCase {
StreamUtil.closeQuietly(fos);
}
File tab111File = TabState.getTabStateFile(stateDirectory, 111, false);
- assertTrue(tab111File.createNewFile());
+ Assert.assertTrue(tab111File.createNewFile());
File tab222File = TabState.getTabStateFile(stateDirectory, 222, false);
- assertTrue(tab222File.createNewFile());
+ Assert.assertTrue(tab222File.createNewFile());
File tab333File = TabState.getTabStateFile(stateDirectory, 333, false);
- assertTrue(tab333File.createNewFile());
+ Assert.assertTrue(tab333File.createNewFile());
policy.cleanupUnusedFiles(filesToDeleteCallback);
callbackSignal.waitForCallback(3);
- assertEmpty(filesToDelete.get());
+ Assert.assertThat(filesToDelete.get(), Matchers.emptyIterable());
// Set the age of the metadata file to be past the expiration threshold and ensure it along
// with the associated tab files are marked for deletion.
- assertTrue(metadataFile.setLastModified(1234));
+ Assert.assertTrue(metadataFile.setLastModified(1234));
policy.cleanupUnusedFiles(filesToDeleteCallback);
callbackSignal.waitForCallback(4);
- assertContentsInAnyOrder(filesToDelete.get(), tab111File.getName(), tab222File.getName(),
- tab333File.getName(), metadataFile.getName());
+ Assert.assertThat(filesToDelete.get(),
+ Matchers.containsInAnyOrder(tab111File.getName(), tab222File.getName(),
+ tab333File.getName(), metadataFile.getName()));
}
/**
* Ensure that the metadata file's last modified timestamp is updated on initialization.
*/
+ @Test
@Feature("TabPersistentStore")
@MediumTest
public void testMetadataTimestampRefreshed() throws Exception {
File baseStateDirectory = TabPersistentStore.getOrCreateBaseStateDirectory();
- assertNotNull(baseStateDirectory);
+ Assert.assertNotNull(baseStateDirectory);
CustomTabTabPersistencePolicy policy = new CustomTabTabPersistencePolicy(2, true);
File stateDirectory = policy.getOrCreateStateDirectory();
- assertNotNull(stateDirectory);
+ Assert.assertNotNull(stateDirectory);
File metadataFile = new File(stateDirectory, policy.getStateFileName());
- assertTrue(metadataFile.createNewFile());
+ Assert.assertTrue(metadataFile.createNewFile());
long previousTimestamp =
System.currentTimeMillis() - CustomTabTabPersistencePolicy.STATE_EXPIRY_THRESHOLD;
- assertTrue(metadataFile.setLastModified(previousTimestamp));
+ Assert.assertTrue(metadataFile.setLastModified(previousTimestamp));
policy.performInitialization(AsyncTask.SERIAL_EXECUTOR);
policy.waitForInitializationToFinish();
- assertTrue(metadataFile.lastModified() > previousTimestamp);
+ Assert.assertTrue(metadataFile.lastModified() > previousTimestamp);
}
private static List<File> generateMaximumStateFiles(long currentTime) {

Powered by Google App Engine
This is Rietveld 408576698