Bug 1466910 - 2. Allow @AssertCalled(count = 0) in waitUntilCalled; r=me draft
authorJim Chen <nchen@mozilla.com>
Tue, 19 Jun 2018 16:31:24 -0400
changeset 808537 875dad16ce6f7483db55fd7aade3a21fe8d9f36e
parent 808536 17268fee4f09569828438ccb4666af3e9200e123
child 808538 b4b7783c98b820a0ce2c366c5c6b6d7df89d0b23
push id113418
push userbmo:nchen@mozilla.com
push dateTue, 19 Jun 2018 22:54:10 +0000
reviewersme
bugs1466910
milestone62.0a1
Bug 1466910 - 2. Allow @AssertCalled(count = 0) in waitUntilCalled; r=me Allow some methods to be annotated with @AssertCalled(count = 0) for the object passed to waitUntilCalled. MozReview-Commit-ID: 1pqpQV3OyKS
mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/GeckoSessionTestRuleTest.kt
mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/GeckoSessionTestRuleTest.kt
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/GeckoSessionTestRuleTest.kt
@@ -342,16 +342,30 @@ class GeckoSessionTestRuleTest : BaseSes
         sessionRule.waitUntilCalled(object : Callbacks.ProgressDelegate {
             @AssertCalled
             override fun onPageStop(session: GeckoSession, success: Boolean) {
                 throw IllegalStateException()
             }
         })
     }
 
+    @Test fun waitUntilCalled_zeroCount() {
+        // Support having @AssertCalled(count = 0) annotations for waitUntilCalled calls.
+        sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+        sessionRule.waitUntilCalled(object : Callbacks.ProgressDelegate, Callbacks.ScrollDelegate {
+            @AssertCalled(count = 1)
+            override fun onPageStop(session: GeckoSession, success: Boolean) {
+            }
+
+            @AssertCalled(count = 0)
+            override fun onScrollChanged(session: GeckoSession, scrollX: Int, scrollY: Int) {
+            }
+        })
+    }
+
     @Test fun forCallbacksDuringWait_anyMethod() {
         sessionRule.session.loadTestPath(HELLO_HTML_PATH)
         sessionRule.waitForPageStop()
 
         var counter = 0
 
         sessionRule.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
             override fun onPageStop(session: GeckoSession, success: Boolean) {
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java
@@ -1701,17 +1701,17 @@ public class GeckoSessionTestRule extend
                 final Method callbackMethod;
                 try {
                     callbackMethod = callback.getClass().getMethod(method.getName(),
                                                                    method.getParameterTypes());
                 } catch (final NoSuchMethodException e) {
                     throw new RuntimeException(e);
                 }
                 final AssertCalled ac = getAssertCalled(callbackMethod, callback);
-                if (ac != null && ac.value()) {
+                if (ac != null && ac.value() && ac.count() != 0) {
                     methodCalls.add(new MethodCall(session, method,
                                                    ac, /* target */ null));
                 }
             }
             isSessionCallback = true;
         }
 
         assertThat("Delegate should implement a GeckoSession delegate " +