Index: chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/SnackbarTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/SnackbarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/SnackbarTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..489d22fc996183ca63d88e78e26a9b3d82e5c2c4 |
--- /dev/null |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/SnackbarTest.java |
@@ -0,0 +1,118 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.snackbar; |
+ |
+import android.test.suitebuilder.annotation.MediumTest; |
+import android.test.suitebuilder.annotation.SmallTest; |
+ |
+import org.chromium.base.ThreadUtils; |
+import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController; |
+import org.chromium.chrome.test.ChromeTabbedActivityTestBase; |
+import org.chromium.content.browser.test.util.Criteria; |
+import org.chromium.content.browser.test.util.CriteriaHelper; |
+ |
+/** |
+ * Tests for {@link SnackbarManager}. |
+ */ |
+public class SnackbarTest extends ChromeTabbedActivityTestBase { |
+ SnackbarManager mManager; |
+ SnackbarController mDefaultController = new SnackbarController() { |
+ @Override |
+ public void onDismissNoAction(Object actionData) { |
+ } |
+ |
+ @Override |
+ public void onAction(Object actionData) { |
+ } |
+ }; |
+ |
+ @Override |
+ public void startMainActivity() throws InterruptedException { |
+ SnackbarManager.setDurationForTesting(1000); |
+ startMainActivityOnBlankPage(); |
+ mManager = getActivity().getSnackbarManager(); |
+ } |
+ |
+ @MediumTest |
+ public void testStackQueueOrder() throws InterruptedException { |
+ final Snackbar stackbar = Snackbar.make("stack", mDefaultController, |
+ Snackbar.TYPE_ACTION); |
+ final Snackbar queuebar = Snackbar.make("queue", mDefaultController, |
+ Snackbar.TYPE_NOTIFICATION); |
+ ThreadUtils.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mManager.showSnackbar(stackbar); |
+ } |
+ }); |
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria("First snackbar not shown") { |
+ @Override |
+ public boolean isSatisfied() { |
+ return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == stackbar; |
+ } |
+ }); |
+ ThreadUtils.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mManager.showSnackbar(queuebar); |
+ assertTrue("Snackbar not showing", mManager.isShowing()); |
+ assertEquals("Snackbars on stack should not be cancled by snackbars on queue", |
+ stackbar, mManager.getCurrentSnackbarForTesting()); |
+ } |
+ }); |
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria("Snackbar on queue not shown") { |
+ @Override |
+ public boolean isSatisfied() { |
+ return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == queuebar; |
+ } |
+ }); |
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria("Snackbar did not time out") { |
+ @Override |
+ public boolean isSatisfied() { |
+ return !mManager.isShowing(); |
+ } |
+ }); |
+ } |
+ |
+ @SmallTest |
+ public void testQueueStackOrder() throws InterruptedException { |
+ final Snackbar stackbar = Snackbar.make("stack", mDefaultController, |
+ Snackbar.TYPE_ACTION); |
+ final Snackbar queuebar = Snackbar.make("queue", mDefaultController, |
+ Snackbar.TYPE_NOTIFICATION); |
+ ThreadUtils.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mManager.showSnackbar(queuebar); |
+ } |
+ }); |
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria("First snackbar not shown") { |
+ @Override |
+ public boolean isSatisfied() { |
+ return mManager.isShowing() && mManager.getCurrentSnackbarForTesting() == queuebar; |
+ } |
+ }); |
+ ThreadUtils.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mManager.showSnackbar(stackbar); |
+ } |
+ }); |
+ CriteriaHelper.pollForUIThreadCriteria( |
+ new Criteria("Snackbar on queue was not cleared by snackbar stack.") { |
+ @Override |
+ public boolean isSatisfied() { |
+ return mManager.isShowing() |
+ && mManager.getCurrentSnackbarForTesting() == stackbar; |
+ } |
+ }); |
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria("Snackbar did not time out") { |
+ @Override |
+ public boolean isSatisfied() { |
+ return !mManager.isShowing(); |
+ } |
+ }); |
+ } |
+} |