Bug 1442243 - 7. Add tests for new session-specific calls/extensions; r?snorp
Add some tests to GeckoSessionTestRuleTest for the session-specific
calls in the test rule, using the new Kotlin extension functions
provided by BaseSessionTest.
MozReview-Commit-ID: 63usjXRzALg
--- 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
@@ -738,9 +738,251 @@ class GeckoSessionTestRuleTest : BaseSes
@TimeoutMillis(1000)
@LargeTest
@GeckoSessionTestRule.ClosedSessionAtStart
fun noPendingCallbacks_withSpecificSession() {
sessionRule.createOpenSession()
// Make sure we don't have unexpected pending callbacks after opening a session.
sessionRule.waitUntilCalled(object : Callbacks.All {})
}
+
+ @Test fun waitForPageStop_withSpecificSession() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitForPageStop()
+ }
+
+ @Test fun waitForPageStop_withAllSessions() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitForPageStop()
+ }
+
+ @Test(expected = AssertionError::class)
+ fun waitForPageStop_throwOnNotWrapped() {
+ GeckoSession(sessionRule.session.settings).waitForPageStop()
+ }
+
+ @Test fun waitForPageStops_withSpecificSessions() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.reload()
+ newSession.waitForPageStops(2)
+ }
+
+ @Test fun waitForPageStops_withAllSessions() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitForPageStops(2)
+ }
+
+ @Test fun waitForPageStops_acrossSessionCreation() {
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ val session = sessionRule.createOpenSession()
+ sessionRule.session.reload()
+ session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitForPageStops(3)
+ }
+
+ @Test fun waitUntilCalled_interfaceWithSpecificSession() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitUntilCalled(Callbacks.ProgressDelegate::class, "onPageStop")
+ }
+
+ @Test fun waitUntilCalled_interfaceWithAllSessions() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitUntilCalled(Callbacks.ProgressDelegate::class, "onPageStop")
+ }
+
+ @Test fun waitUntilCalled_callbackWithSpecificSession() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitUntilCalled(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ }
+ })
+ }
+
+ @Test fun waitUntilCalled_callbackWithAllSessions() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitUntilCalled(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 2)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ }
+ })
+ }
+
+ @Test fun forCallbacksDuringWait_withSpecificSession() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitForPageStop()
+
+ var counter = 0
+
+ newSession.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ sessionRule.session.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(false)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ assertThat("Callback count should be correct", counter, equalTo(1))
+ }
+
+ @Test fun forCallbacksDuringWait_withAllSessions() {
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitForPageStops(2)
+
+ var counter = 0
+
+ sessionRule.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 2)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ assertThat("Callback count should be correct", counter, equalTo(2))
+ }
+
+ @Test fun forCallbacksDuringWait_limitedToLastSessionWait() {
+ val newSession = sessionRule.createOpenSession()
+
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.session.waitForPageStop()
+
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitForPageStop()
+
+ // forCallbacksDuringWait calls strictly apply to the last wait, session-specific or not.
+ var counter = 0
+
+ sessionRule.session.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(false)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ newSession.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ sessionRule.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ assertThat("Callback count should be correct", counter, equalTo(2))
+ }
+
+ @Test fun delegateUntilTestEnd_withSpecificSession() {
+ val newSession = sessionRule.createOpenSession()
+
+ var counter = 0
+
+ newSession.delegateUntilTestEnd(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ sessionRule.session.delegateUntilTestEnd(object : Callbacks.ProgressDelegate {
+ @AssertCalled(false)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitForPageStop()
+
+ assertThat("Callback count should be correct", counter, equalTo(1))
+ }
+
+ @Test fun delegateUntilTestEnd_withAllSessions() {
+ var counter = 0
+
+ sessionRule.delegateUntilTestEnd(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ val newSession = sessionRule.createOpenSession()
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ newSession.waitForPageStop()
+
+ assertThat("Callback count should be correct", counter, equalTo(1))
+ }
+
+ @Test fun delegateDuringNextWait_hasPrecedenceWithSpecificSession() {
+ var newSession = sessionRule.createOpenSession()
+ var counter = 0
+
+ newSession.delegateDuringNextWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ newSession.delegateUntilTestEnd(object : Callbacks.ProgressDelegate {
+ @AssertCalled(false)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitForPageStops(2)
+
+ assertThat("Callback count should be correct", counter, equalTo(1))
+ }
+
+ @Test fun delegateDuringNextWait_specificSessionOverridesAll() {
+ var newSession = sessionRule.createOpenSession()
+ var counter = 0
+
+ newSession.delegateDuringNextWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ sessionRule.delegateDuringNextWait(object : Callbacks.ProgressDelegate {
+ @AssertCalled(count = 1)
+ override fun onPageStop(session: GeckoSession, success: Boolean) {
+ counter++
+ }
+ })
+
+ newSession.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.session.loadTestPath(HELLO_HTML_PATH)
+ sessionRule.waitForPageStops(2)
+
+ assertThat("Callback count should be correct", counter, equalTo(2))
+ }
}
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/NavigationDelegateTest.kt
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/NavigationDelegateTest.kt
@@ -1,15 +1,16 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
package org.mozilla.geckoview.test
import org.mozilla.geckoview.GeckoSession
import org.mozilla.geckoview.test.rule.GeckoSessionTestRule.AssertCalled
+import org.mozilla.geckoview.test.rule.GeckoSessionTestRule.WithDisplay
import org.mozilla.geckoview.test.util.Callbacks
import android.support.test.filters.MediumTest
import android.support.test.runner.AndroidJUnit4
import org.hamcrest.Matchers.*
import org.junit.Test
import org.junit.runner.RunWith
@@ -203,43 +204,43 @@ class NavigationDelegateTest : BaseSessi
@AssertCalled(count = 1, order = intArrayOf(2))
override fun onPageStop(session: GeckoSession, success: Boolean) {
assertThat("Load should succeed", success, equalTo(true))
}
})
}
- @GeckoSessionTestRule.WithDisplay(width = 128, height = 128)
+ @WithDisplay(width = 128, height = 128)
@Test fun onNewSession_calledForNewWindow() {
sessionRule.session.loadTestPath(NEW_SESSION_HTML_PATH)
sessionRule.waitForPageStop()
sessionRule.delegateDuringNextWait(object : Callbacks.NavigationDelegate {
@AssertCalled(count = 1)
override fun onNewSession(session: GeckoSession, uri: String, response: GeckoSession.Response<GeckoSession>) {
response.respond(null)
}
})
- sessionRule.synthesizeTap(5, 5)
+ sessionRule.session.synthesizeTap(5, 5)
sessionRule.waitUntilCalled(GeckoSession.NavigationDelegate::class, "onNewSession")
}
- @GeckoSessionTestRule.WithDisplay(width = 128, height = 128)
+ @WithDisplay(width = 128, height = 128)
@Test(expected = IllegalArgumentException::class)
fun onNewSession_doesNotAllowOpened() {
sessionRule.session.loadTestPath(NEW_SESSION_HTML_PATH)
sessionRule.waitForPageStop()
sessionRule.delegateDuringNextWait(object : Callbacks.NavigationDelegate {
@AssertCalled(count = 1)
override fun onNewSession(session: GeckoSession, uri: String, response: GeckoSession.Response<GeckoSession>) {
- var session = GeckoSession(session.settings)
- session.openWindow(null)
- response.respond(session)
+ var newSession = GeckoSession(session.settings)
+ newSession.openWindow()
+ response.respond(newSession)
}
})
- sessionRule.synthesizeTap(5, 5)
+ sessionRule.session.synthesizeTap(5, 5)
sessionRule.waitUntilCalled(GeckoSession.NavigationDelegate::class, "onNewSession")
}
}