Commit a5ef7aa9 authored by Pavel Yatsuk's avatar Pavel Yatsuk Committed by Commit Bot

Switch SnackbarTest to DummyUiActivityTestCase

This change drops SnackbarTest's dependency on ChromeActivity, allowing
test to be moved to chrome/browser.

BUG=1028382
R=twellington@chromium.org

Change-Id: Ia22613b9666a934e5bb6be1aeb7325e9022ed1da
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1986219Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Commit-Queue: Pavel Yatsuk <pavely@chromium.org>
Cr-Commit-Position: refs/heads/master@{#728052}
parent 174691ad
...@@ -8,21 +8,18 @@ import android.support.test.filters.MediumTest; ...@@ -8,21 +8,18 @@ import android.support.test.filters.MediumTest;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.Supplier;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.RetryOnFailure; import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController; import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.content_public.browser.test.util.Criteria; import org.chromium.content_public.browser.test.util.Criteria;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.ui.test.util.DummyUiActivityTestCase;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -30,11 +27,7 @@ import java.util.concurrent.TimeUnit; ...@@ -30,11 +27,7 @@ import java.util.concurrent.TimeUnit;
* Tests for {@link SnackbarManager}. * Tests for {@link SnackbarManager}.
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) public class SnackbarTest extends DummyUiActivityTestCase {
public class SnackbarTest {
@Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
private SnackbarManager mManager; private SnackbarManager mManager;
private SnackbarController mDefaultController = new SnackbarController() { private SnackbarController mDefaultController = new SnackbarController() {
@Override @Override
...@@ -58,11 +51,14 @@ public class SnackbarTest { ...@@ -58,11 +51,14 @@ public class SnackbarTest {
private boolean mDismissed; private boolean mDismissed;
@Before @Override
public void setUp() throws InterruptedException { public void setUpTest() throws Exception {
super.setUpTest();
SnackbarManager.setDurationForTesting(1000); SnackbarManager.setDurationForTesting(1000);
mActivityTestRule.startMainActivityOnBlankPage(); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
mManager = mActivityTestRule.getActivity().getSnackbarManager(); mManager = new SnackbarManager(
getActivity(), getActivity().findViewById(android.R.id.content), null);
});
} }
@Test @Test
...@@ -75,14 +71,9 @@ public class SnackbarTest { ...@@ -75,14 +71,9 @@ public class SnackbarTest {
Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_TEST_SNACKBAR); Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_TEST_SNACKBAR);
final Snackbar persistent = Snackbar.make("persistent", mDefaultController, final Snackbar persistent = Snackbar.make("persistent", mDefaultController,
Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR); Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR);
PostTask.runOrPostTask( PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(stackbar));
UiThreadTaskTraits.DEFAULT, () -> { mManager.showSnackbar(stackbar); }); pollSnackbarCondition("First snackbar not shown",
CriteriaHelper.pollUiThread(new Criteria("First snackbar not shown") { () -> mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == stackbar);
@Override
public boolean isSatisfied() {
return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == stackbar;
}
});
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
mManager.showSnackbar(queuebar); mManager.showSnackbar(queuebar);
Assert.assertTrue("Snackbar not showing", mManager.isShowing()); Assert.assertTrue("Snackbar not showing", mManager.isShowing());
...@@ -96,26 +87,15 @@ public class SnackbarTest { ...@@ -96,26 +87,15 @@ public class SnackbarTest {
"Snackbars on stack should not be cancelled by persistent snackbars", stackbar, "Snackbars on stack should not be cancelled by persistent snackbars", stackbar,
mManager.getCurrentSnackbarForTesting()); mManager.getCurrentSnackbarForTesting());
}); });
CriteriaHelper.pollUiThread(new Criteria("Snackbar on queue not shown") { pollSnackbarCondition("Snackbar on queue not shown",
@Override () -> mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == queuebar);
public boolean isSatisfied() { pollSnackbarCondition("Snackbar on queue not timed out",
return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == queuebar; ()
} -> mManager.isShowing()
}); && mManager.getCurrentSnackbarForTesting() == persistent);
CriteriaHelper.pollUiThread(new Criteria("Snackbar on queue not timed out") {
@Override
public boolean isSatisfied() {
return mManager.isShowing()
&& mManager.getCurrentSnackbarForTesting() == persistent;
}
});
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.onClick(null)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.onClick(null));
CriteriaHelper.pollUiThread(new Criteria("Persistent snackbar did not get cleared") { pollSnackbarCondition(
@Override "Persistent snackbar did not get cleared", () -> !mManager.isShowing());
public boolean isSatisfied() {
return !mManager.isShowing();
}
});
} }
@Test @Test
...@@ -129,44 +109,23 @@ public class SnackbarTest { ...@@ -129,44 +109,23 @@ public class SnackbarTest {
final Snackbar persistent = Snackbar.make("persistent", mDefaultController, final Snackbar persistent = Snackbar.make("persistent", mDefaultController,
Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR); Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR);
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(persistent)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(persistent));
CriteriaHelper.pollUiThread(new Criteria("First snackbar not shown") { pollSnackbarCondition("First snackbar not shown",
@Override ()
public boolean isSatisfied() { -> mManager.isShowing()
return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == persistent);
&& mManager.getCurrentSnackbarForTesting() == persistent;
}
});
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(queuebar)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(queuebar));
CriteriaHelper.pollUiThread(new Criteria( pollSnackbarCondition("Persistent snackbar was not cleared by queue snackbar",
"Persistent snackbar was not cleared by queue snackbar") { () -> mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == queuebar);
@Override
public boolean isSatisfied() {
return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == queuebar;
}
});
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(stackbar)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(stackbar));
CriteriaHelper.pollUiThread( pollSnackbarCondition("Snackbar on queue was not cleared by snackbar stack.",
new Criteria("Snackbar on queue was not cleared by snackbar stack.") { () -> mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == stackbar);
@Override pollSnackbarCondition("Snackbar did not time out",
public boolean isSatisfied() { ()
return mManager.isShowing() -> mManager.isShowing()
&& mManager.getCurrentSnackbarForTesting() == stackbar; && mManager.getCurrentSnackbarForTesting() == persistent);
}
});
CriteriaHelper.pollUiThread(new Criteria("Snackbar did not time out") {
@Override
public boolean isSatisfied() {
return mManager.isShowing()
&& mManager.getCurrentSnackbarForTesting() == persistent;
}
});
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.onClick(null)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.onClick(null));
CriteriaHelper.pollUiThread(new Criteria("Persistent snackbar did not get cleared") { pollSnackbarCondition(
@Override "Persistent snackbar did not get cleared", () -> !mManager.isShowing());
public boolean isSatisfied() {
return !mManager.isShowing();
}
});
} }
@Test @Test
...@@ -176,22 +135,12 @@ public class SnackbarTest { ...@@ -176,22 +135,12 @@ public class SnackbarTest {
Snackbar.TYPE_ACTION, Snackbar.UMA_TEST_SNACKBAR); Snackbar.TYPE_ACTION, Snackbar.UMA_TEST_SNACKBAR);
mDismissed = false; mDismissed = false;
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(snackbar)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(snackbar));
CriteriaHelper.pollUiThread( pollSnackbarCondition("Snackbar on queue was not cleared by snackbar stack.",
new Criteria("Snackbar on queue was not cleared by snackbar stack.") { () -> mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == snackbar);
@Override
public boolean isSatisfied() {
return mManager.isShowing()
&& mManager.getCurrentSnackbarForTesting() == snackbar;
}
});
PostTask.runOrPostTask( PostTask.runOrPostTask(
UiThreadTaskTraits.DEFAULT, () -> mManager.dismissSnackbars(mDismissController)); UiThreadTaskTraits.DEFAULT, () -> mManager.dismissSnackbars(mDismissController));
CriteriaHelper.pollUiThread(new Criteria("Snackbar did not time out") { pollSnackbarCondition(
@Override "Snackbar did not time out", () -> !mManager.isShowing() && mDismissed);
public boolean isSatisfied() {
return !mManager.isShowing() && mDismissed;
}
});
} }
@Test @Test
...@@ -203,24 +152,21 @@ public class SnackbarTest { ...@@ -203,24 +152,21 @@ public class SnackbarTest {
Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR); Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR);
mDismissed = false; mDismissed = false;
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(snackbar)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.showSnackbar(snackbar));
CriteriaHelper.pollUiThread(new Criteria("Persistent Snackbar not shown.") { pollSnackbarCondition("Persistent Snackbar not shown.",
@Override () -> mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == snackbar);
public boolean isSatisfied() {
return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == snackbar;
}
});
TimeUnit.MILLISECONDS.sleep(timeout); TimeUnit.MILLISECONDS.sleep(timeout);
CriteriaHelper.pollUiThread(new Criteria("Persistent snackbar timed out.") { pollSnackbarCondition(
@Override "Persistent snackbar timed out.", () -> mManager.isShowing() && !mDismissed);
public boolean isSatisfied() {
return mManager.isShowing() && !mDismissed;
}
});
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.onClick(null)); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> mManager.onClick(null));
CriteriaHelper.pollUiThread(new Criteria("Persistent snackbar not removed on action.") { pollSnackbarCondition(
"Persistent snackbar not removed on action.", () -> !mManager.isShowing());
}
void pollSnackbarCondition(String message, Supplier<Boolean> condition) {
CriteriaHelper.pollUiThread(new Criteria(message) {
@Override @Override
public boolean isSatisfied() { public boolean isSatisfied() {
return !mManager.isShowing(); return condition.get();
} }
}); });
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment