[components] For https://github.com/mozilla-mobile/android-components/issues/11670: Use shadowOf(getMainLooper()).idle() to execute all posted tasks.
This is needed due to the new default Looper Mode - PAUSED in Robolectric.
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.browser.domains
|
package mozilla.components.browser.domains
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import mozilla.components.browser.domains.autocomplete.BaseDomainAutocompleteProvider
|
import mozilla.components.browser.domains.autocomplete.BaseDomainAutocompleteProvider
|
||||||
@@ -17,6 +18,7 @@ import org.junit.Assert.assertNull
|
|||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class BaseDomainAutocompleteProviderTest {
|
class BaseDomainAutocompleteProviderTest {
|
||||||
@@ -60,6 +62,7 @@ class BaseDomainAutocompleteProviderTest {
|
|||||||
val domainsCount = domains.size
|
val domainsCount = domains.size
|
||||||
|
|
||||||
val provider = createAndInitProvider(testContext, list) { domains }
|
val provider = createAndInitProvider(testContext, list) { domains }
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertCompletion(provider, list, domainsCount, "m", "m", "mozilla.org", "http://mozilla.org")
|
assertCompletion(provider, list, domainsCount, "m", "m", "mozilla.org", "http://mozilla.org")
|
||||||
assertCompletion(provider, list, domainsCount, "moz", "moz", "mozilla.org", "http://mozilla.org")
|
assertCompletion(provider, list, domainsCount, "moz", "moz", "mozilla.org", "http://mozilla.org")
|
||||||
@@ -83,6 +86,7 @@ class BaseDomainAutocompleteProviderTest {
|
|||||||
val domainsCount = domains.size
|
val domainsCount = domains.size
|
||||||
|
|
||||||
val provider = createAndInitProvider(testContext, list) { domains }
|
val provider = createAndInitProvider(testContext, list) { domains }
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertCompletion(provider, list, domainsCount, "m", "m", "mozilla.org", "http://mozilla.org")
|
assertCompletion(provider, list, domainsCount, "m", "m", "mozilla.org", "http://mozilla.org")
|
||||||
assertCompletion(provider, list, domainsCount, "moz", "moz", "mozilla.org", "http://mozilla.org")
|
assertCompletion(provider, list, domainsCount, "moz", "moz", "mozilla.org", "http://mozilla.org")
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package mozilla.components.browser.engine.gecko
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.os.Message
|
import android.os.Message
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
@@ -89,6 +90,7 @@ import org.mozilla.geckoview.WebRequestError.ERROR_CATEGORY_UNKNOWN
|
|||||||
import org.mozilla.geckoview.WebRequestError.ERROR_MALFORMED_URI
|
import org.mozilla.geckoview.WebRequestError.ERROR_MALFORMED_URI
|
||||||
import org.mozilla.geckoview.WebRequestError.ERROR_UNKNOWN
|
import org.mozilla.geckoview.WebRequestError.ERROR_UNKNOWN
|
||||||
import org.mozilla.geckoview.WebResponse
|
import org.mozilla.geckoview.WebResponse
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import java.security.Principal
|
import java.security.Principal
|
||||||
import java.security.cert.X509Certificate
|
import java.security.cert.X509Certificate
|
||||||
|
|
||||||
@@ -1291,6 +1293,7 @@ class GeckoEngineSessionTest {
|
|||||||
|
|
||||||
val policy = TrackingProtectionPolicy.recommended()
|
val policy = TrackingProtectionPolicy.recommended()
|
||||||
session.updateTrackingProtection(policy)
|
session.updateTrackingProtection(policy)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(session).updateContentBlocking(policy)
|
verify(session).updateContentBlocking(policy)
|
||||||
assertTrue(session.etpEnabled!!)
|
assertTrue(session.etpEnabled!!)
|
||||||
@@ -1420,16 +1423,19 @@ class GeckoEngineSessionTest {
|
|||||||
session.updateTrackingProtection(policy)
|
session.updateTrackingProtection(policy)
|
||||||
|
|
||||||
observers.forEach { session.register(it) }
|
observers.forEach { session.register(it) }
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
observers.forEach {
|
observers.forEach {
|
||||||
verify(it).onTrackerBlockingEnabledChange(true)
|
verify(it).onTrackerBlockingEnabledChange(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
observers.forEach { session.unregister(it) }
|
observers.forEach { session.unregister(it) }
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
session.updateTrackingProtection(TrackingProtectionPolicy.none())
|
session.updateTrackingProtection(TrackingProtectionPolicy.none())
|
||||||
|
|
||||||
observers.forEach { session.register(it) }
|
observers.forEach { session.register(it) }
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
observers.forEach {
|
observers.forEach {
|
||||||
verify(it).onTrackerBlockingEnabledChange(false)
|
verify(it).onTrackerBlockingEnabledChange(false)
|
||||||
@@ -2169,6 +2175,7 @@ class GeckoEngineSessionTest {
|
|||||||
})
|
})
|
||||||
|
|
||||||
engineSession.findAll("mozilla")
|
engineSession.findAll("mozilla")
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertEquals("mozilla", findObserved)
|
assertEquals("mozilla", findObserved)
|
||||||
assertTrue(findResultObserved)
|
assertTrue(findResultObserved)
|
||||||
@@ -2200,10 +2207,14 @@ class GeckoEngineSessionTest {
|
|||||||
})
|
})
|
||||||
|
|
||||||
engineSession.findNext(true)
|
engineSession.findNext(true)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(findResultObserved)
|
assertTrue(findResultObserved)
|
||||||
verify(sessionFinder).find(null, 0)
|
verify(sessionFinder).find(null, 0)
|
||||||
|
|
||||||
engineSession.findNext(false)
|
engineSession.findNext(false)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(findResultObserved)
|
assertTrue(findResultObserved)
|
||||||
verify(sessionFinder).find(null, GeckoSession.FINDER_FIND_BACKWARDS)
|
verify(sessionFinder).find(null, GeckoSession.FINDER_FIND_BACKWARDS)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package mozilla.components.browser.engine.gecko
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import mozilla.components.browser.engine.gecko.ext.getAntiTrackingPolicy
|
import mozilla.components.browser.engine.gecko.ext.getAntiTrackingPolicy
|
||||||
import mozilla.components.browser.engine.gecko.mediaquery.toGeckoValue
|
import mozilla.components.browser.engine.gecko.mediaquery.toGeckoValue
|
||||||
@@ -77,6 +78,7 @@ import org.mozilla.geckoview.WebExtension.InstallException.ErrorCodes.ERROR_USER
|
|||||||
import org.mozilla.geckoview.WebExtensionController
|
import org.mozilla.geckoview.WebExtensionController
|
||||||
import org.mozilla.geckoview.WebPushController
|
import org.mozilla.geckoview.WebPushController
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import org.mozilla.geckoview.WebExtension as GeckoWebExtension
|
import org.mozilla.geckoview.WebExtension as GeckoWebExtension
|
||||||
|
|
||||||
@@ -698,6 +700,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
result.complete(mockNativeWebExtension(extId, extUrl))
|
result.complete(mockNativeWebExtension(extId, extUrl))
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val extUrlCaptor = argumentCaptor<String>()
|
val extUrlCaptor = argumentCaptor<String>()
|
||||||
val extIdCaptor = argumentCaptor<String>()
|
val extIdCaptor = argumentCaptor<String>()
|
||||||
verify(extensionController).ensureBuiltIn(extUrlCaptor.capture(), extIdCaptor.capture())
|
verify(extensionController).ensureBuiltIn(extUrlCaptor.capture(), extIdCaptor.capture())
|
||||||
@@ -730,6 +734,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
result.complete(mockNativeWebExtension(extId, extUrl))
|
result.complete(mockNativeWebExtension(extId, extUrl))
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val extCaptor = argumentCaptor<String>()
|
val extCaptor = argumentCaptor<String>()
|
||||||
verify(extensionController).install(extCaptor.capture())
|
verify(extensionController).install(extCaptor.capture())
|
||||||
assertEquals(extUrl, extCaptor.value)
|
assertEquals(extUrl, extCaptor.value)
|
||||||
@@ -759,6 +765,8 @@ class GeckoEngineTest {
|
|||||||
}
|
}
|
||||||
result.completeExceptionally(expected)
|
result.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onErrorCalled)
|
assertTrue(onErrorCalled)
|
||||||
assertEquals(expected, throwable)
|
assertEquals(expected, throwable)
|
||||||
}
|
}
|
||||||
@@ -785,6 +793,8 @@ class GeckoEngineTest {
|
|||||||
}
|
}
|
||||||
result.completeExceptionally(expected)
|
result.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onErrorCalled)
|
assertTrue(onErrorCalled)
|
||||||
assertEquals(expected, throwable)
|
assertEquals(expected, throwable)
|
||||||
}
|
}
|
||||||
@@ -816,6 +826,9 @@ class GeckoEngineTest {
|
|||||||
onError = { _, _ -> onErrorCalled = true }
|
onError = { _, _ -> onErrorCalled = true }
|
||||||
)
|
)
|
||||||
result.complete(null)
|
result.complete(null)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(webExtensionsDelegate).onUninstalled(ext)
|
verify(webExtensionsDelegate).onUninstalled(ext)
|
||||||
|
|
||||||
val extCaptor = argumentCaptor<GeckoWebExtension>()
|
val extCaptor = argumentCaptor<GeckoWebExtension>()
|
||||||
@@ -855,6 +868,9 @@ class GeckoEngineTest {
|
|||||||
throwable = e
|
throwable = e
|
||||||
}
|
}
|
||||||
result.completeExceptionally(expected)
|
result.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(webExtensionsDelegate, never()).onUninstalled(ext)
|
verify(webExtensionsDelegate, never()).onUninstalled(ext)
|
||||||
|
|
||||||
assertTrue(onErrorCalled)
|
assertTrue(onErrorCalled)
|
||||||
@@ -878,6 +894,8 @@ class GeckoEngineTest {
|
|||||||
engine.installWebExtension(extId, extUrl)
|
engine.installWebExtension(extId, extUrl)
|
||||||
result.complete(mockNativeWebExtension(extId, extUrl))
|
result.complete(mockNativeWebExtension(extId, extUrl))
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val extCaptor = argumentCaptor<WebExtension>()
|
val extCaptor = argumentCaptor<WebExtension>()
|
||||||
verify(webExtensionsDelegate).onInstalled(extCaptor.capture())
|
verify(webExtensionsDelegate).onInstalled(extCaptor.capture())
|
||||||
assertEquals(extId, extCaptor.value.id)
|
assertEquals(extId, extCaptor.value.id)
|
||||||
@@ -901,6 +919,8 @@ class GeckoEngineTest {
|
|||||||
engine.installWebExtension(extId, extUrl)
|
engine.installWebExtension(extId, extUrl)
|
||||||
result.complete(mockNativeWebExtension(extId, extUrl))
|
result.complete(mockNativeWebExtension(extId, extUrl))
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val extCaptor = argumentCaptor<WebExtension>()
|
val extCaptor = argumentCaptor<WebExtension>()
|
||||||
verify(webExtensionsDelegate).onInstalled(extCaptor.capture())
|
verify(webExtensionsDelegate).onInstalled(extCaptor.capture())
|
||||||
assertEquals(extId, extCaptor.value.id)
|
assertEquals(extId, extCaptor.value.id)
|
||||||
@@ -1034,6 +1054,8 @@ class GeckoEngineTest {
|
|||||||
val extension = mockNativeWebExtension(extId, extUrl)
|
val extension = mockNativeWebExtension(extId, extUrl)
|
||||||
result.complete(extension)
|
result.complete(extension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
||||||
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
||||||
|
|
||||||
@@ -1068,6 +1090,8 @@ class GeckoEngineTest {
|
|||||||
val extension = mockNativeWebExtension(extId, extUrl)
|
val extension = mockNativeWebExtension(extId, extUrl)
|
||||||
result.complete(extension)
|
result.complete(extension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
||||||
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
||||||
|
|
||||||
@@ -1102,6 +1126,8 @@ class GeckoEngineTest {
|
|||||||
val extension = mockNativeWebExtension(extId, extUrl)
|
val extension = mockNativeWebExtension(extId, extUrl)
|
||||||
result.complete(extension)
|
result.complete(extension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val tabDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.TabDelegate>()
|
val tabDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.TabDelegate>()
|
||||||
verify(extension).tabDelegate = tabDelegateCaptor.capture()
|
verify(extension).tabDelegate = tabDelegateCaptor.capture()
|
||||||
|
|
||||||
@@ -1132,6 +1158,8 @@ class GeckoEngineTest {
|
|||||||
val extension = mockNativeWebExtension(extId, extUrl)
|
val extension = mockNativeWebExtension(extId, extUrl)
|
||||||
result.complete(extension)
|
result.complete(extension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
||||||
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
||||||
|
|
||||||
@@ -1166,6 +1194,8 @@ class GeckoEngineTest {
|
|||||||
val extension = mockNativeWebExtension(extId, extUrl)
|
val extension = mockNativeWebExtension(extId, extUrl)
|
||||||
result.complete(extension)
|
result.complete(extension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
val actionDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.ActionDelegate>()
|
||||||
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
verify(extension).setActionDelegate(actionDelegateCaptor.capture())
|
||||||
|
|
||||||
@@ -1200,6 +1230,8 @@ class GeckoEngineTest {
|
|||||||
val extension = mockNativeWebExtension(extId, extUrl)
|
val extension = mockNativeWebExtension(extId, extUrl)
|
||||||
result.complete(extension)
|
result.complete(extension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val tabDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.TabDelegate>()
|
val tabDelegateCaptor = argumentCaptor<org.mozilla.geckoview.WebExtension.TabDelegate>()
|
||||||
verify(extension).tabDelegate = tabDelegateCaptor.capture()
|
verify(extension).tabDelegate = tabDelegateCaptor.capture()
|
||||||
|
|
||||||
@@ -1256,6 +1288,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
updateExtensionResult.complete(updatedExtension)
|
updateExtensionResult.complete(updatedExtension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onErrorCalled)
|
assertFalse(onErrorCalled)
|
||||||
assertNotNull(result)
|
assertNotNull(result)
|
||||||
}
|
}
|
||||||
@@ -1319,6 +1353,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
updateExtensionResult.completeExceptionally(expected)
|
updateExtensionResult.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertSame(expected, throwable!!.cause)
|
assertSame(expected, throwable!!.cause)
|
||||||
assertNull(result)
|
assertNull(result)
|
||||||
}
|
}
|
||||||
@@ -1347,6 +1383,9 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
|
|
||||||
updateExtensionResult.completeExceptionally(exception)
|
updateExtensionResult.completeExceptionally(exception)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
throwable!!
|
throwable!!
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1398,6 +1437,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
installedExtensionResult.complete(installedExtensions)
|
installedExtensionResult.complete(installedExtensions)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onErrorCalled)
|
assertFalse(onErrorCalled)
|
||||||
assertNotNull(extensions)
|
assertNotNull(extensions)
|
||||||
}
|
}
|
||||||
@@ -1422,6 +1463,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
installedExtensionResult.completeExceptionally(expected)
|
installedExtensionResult.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertSame(expected, throwable)
|
assertSame(expected, throwable)
|
||||||
assertNull(extensions)
|
assertNull(extensions)
|
||||||
}
|
}
|
||||||
@@ -1454,6 +1497,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
enableExtensionResult.complete(enabledExtension)
|
enableExtensionResult.complete(enabledExtension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onErrorCalled)
|
assertFalse(onErrorCalled)
|
||||||
assertNotNull(result)
|
assertNotNull(result)
|
||||||
verify(webExtensionsDelegate).onEnabled(result!!)
|
verify(webExtensionsDelegate).onEnabled(result!!)
|
||||||
@@ -1487,6 +1532,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
enableExtensionResult.completeExceptionally(expected)
|
enableExtensionResult.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertSame(expected, throwable)
|
assertSame(expected, throwable)
|
||||||
assertNull(result)
|
assertNull(result)
|
||||||
verify(webExtensionsDelegate, never()).onEnabled(any())
|
verify(webExtensionsDelegate, never()).onEnabled(any())
|
||||||
@@ -1520,6 +1567,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
disableExtensionResult.complete(disabledExtension)
|
disableExtensionResult.complete(disabledExtension)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onErrorCalled)
|
assertFalse(onErrorCalled)
|
||||||
assertNotNull(result)
|
assertNotNull(result)
|
||||||
verify(webExtensionsDelegate).onDisabled(result!!)
|
verify(webExtensionsDelegate).onDisabled(result!!)
|
||||||
@@ -1553,6 +1602,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
disableExtensionResult.completeExceptionally(expected)
|
disableExtensionResult.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertSame(expected, throwable)
|
assertSame(expected, throwable)
|
||||||
assertNull(result)
|
assertNull(result)
|
||||||
verify(webExtensionsDelegate, never()).onEnabled(any())
|
verify(webExtensionsDelegate, never()).onEnabled(any())
|
||||||
@@ -1587,6 +1638,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
allowedInPrivateBrowsingExtensionResult.complete(allowedInPrivateBrowsing)
|
allowedInPrivateBrowsingExtensionResult.complete(allowedInPrivateBrowsing)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onErrorCalled)
|
assertFalse(onErrorCalled)
|
||||||
assertNotNull(result)
|
assertNotNull(result)
|
||||||
verify(webExtensionsDelegate).onAllowedInPrivateBrowsingChanged(result!!)
|
verify(webExtensionsDelegate).onAllowedInPrivateBrowsingChanged(result!!)
|
||||||
@@ -1621,6 +1674,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
allowedInPrivateBrowsingExtensionResult.completeExceptionally(expected)
|
allowedInPrivateBrowsingExtensionResult.completeExceptionally(expected)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertSame(expected, throwable)
|
assertSame(expected, throwable)
|
||||||
assertNull(result)
|
assertNull(result)
|
||||||
verify(webExtensionsDelegate, never()).onAllowedInPrivateBrowsingChanged(any())
|
verify(webExtensionsDelegate, never()).onAllowedInPrivateBrowsingChanged(any())
|
||||||
@@ -1654,6 +1709,9 @@ class GeckoEngineTest {
|
|||||||
|
|
||||||
val engine = GeckoEngine(context, runtime = runtime)
|
val engine = GeckoEngine(context, runtime = runtime)
|
||||||
engine.clearData(data = Engine.BrowsingData.all(), onSuccess = { onSuccessCalled = true })
|
engine.clearData(data = Engine.BrowsingData.all(), onSuccess = { onSuccessCalled = true })
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onSuccessCalled)
|
assertTrue(onSuccessCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1679,6 +1737,9 @@ class GeckoEngineTest {
|
|||||||
throwable = it
|
throwable = it
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onErrorCalled)
|
assertTrue(onErrorCalled)
|
||||||
assertSame(exception, throwable)
|
assertSame(exception, throwable)
|
||||||
}
|
}
|
||||||
@@ -1702,6 +1763,9 @@ class GeckoEngineTest {
|
|||||||
|
|
||||||
val engine = GeckoEngine(context, runtime = runtime)
|
val engine = GeckoEngine(context, runtime = runtime)
|
||||||
engine.clearData(data = Engine.BrowsingData.all(), host = "mozilla.org", onSuccess = { onSuccessCalled = true })
|
engine.clearData(data = Engine.BrowsingData.all(), host = "mozilla.org", onSuccess = { onSuccessCalled = true })
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onSuccessCalled)
|
assertTrue(onSuccessCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1732,6 +1796,9 @@ class GeckoEngineTest {
|
|||||||
throwable = it
|
throwable = it
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onErrorCalled)
|
assertTrue(onErrorCalled)
|
||||||
assertSame(exception, throwable)
|
assertSame(exception, throwable)
|
||||||
}
|
}
|
||||||
@@ -1781,6 +1848,8 @@ class GeckoEngineTest {
|
|||||||
|
|
||||||
logEntriesResult.complete(createDummyLogEntryList())
|
logEntriesResult.complete(createDummyLogEntryList())
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val trackerLog = trackersLog!!.first()
|
val trackerLog = trackersLog!!.first()
|
||||||
assertTrue(trackerLog.cookiesHasBeenBlocked)
|
assertTrue(trackerLog.cookiesHasBeenBlocked)
|
||||||
assertEquals("www.tracker.com", trackerLog.url)
|
assertEquals("www.tracker.com", trackerLog.url)
|
||||||
@@ -1810,6 +1879,8 @@ class GeckoEngineTest {
|
|||||||
onError = { onErrorCalled = true }
|
onError = { onErrorCalled = true }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onErrorCalled)
|
assertTrue(onErrorCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1839,6 +1910,8 @@ class GeckoEngineTest {
|
|||||||
|
|
||||||
logEntriesResult.complete(createShimmedEntryList())
|
logEntriesResult.complete(createShimmedEntryList())
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val trackerLog = trackersLog!!.first()
|
val trackerLog = trackersLog!!.first()
|
||||||
assertEquals("www.tracker.com", trackerLog.url)
|
assertEquals("www.tracker.com", trackerLog.url)
|
||||||
assertTrue(trackerLog.blockedCategories.contains(TrackingCategory.SCRIPTS_AND_SUB_RESOURCES))
|
assertTrue(trackerLog.blockedCategories.contains(TrackingCategory.SCRIPTS_AND_SUB_RESOURCES))
|
||||||
@@ -1867,6 +1940,8 @@ class GeckoEngineTest {
|
|||||||
engine.getTrackersLog(mockSession, onSuccess = { trackersLog = it })
|
engine.getTrackersLog(mockSession, onSuccess = { trackersLog = it })
|
||||||
logEntriesResult.complete(createSocialTrackersLogEntryList())
|
logEntriesResult.complete(createSocialTrackersLogEntryList())
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
var trackerLog = trackersLog!!.first()
|
var trackerLog = trackersLog!!.first()
|
||||||
assertTrue(trackerLog.cookiesHasBeenBlocked)
|
assertTrue(trackerLog.cookiesHasBeenBlocked)
|
||||||
assertEquals("www.tracker.com", trackerLog.url)
|
assertEquals("www.tracker.com", trackerLog.url)
|
||||||
@@ -1936,6 +2011,8 @@ class GeckoEngineTest {
|
|||||||
)
|
)
|
||||||
logEntriesResult.complete(createDummyLogEntryList())
|
logEntriesResult.complete(createDummyLogEntryList())
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val trackerLog = trackersLog!![1]
|
val trackerLog = trackersLog!![1]
|
||||||
assertTrue(trackerLog.loadedCategories.contains(TrackingCategory.SCRIPTS_AND_SUB_RESOURCES))
|
assertTrue(trackerLog.loadedCategories.contains(TrackingCategory.SCRIPTS_AND_SUB_RESOURCES))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import android.app.Activity
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import mozilla.components.browser.engine.gecko.GeckoEngineView.Companion.DARK_COVER
|
import mozilla.components.browser.engine.gecko.GeckoEngineView.Companion.DARK_COVER
|
||||||
@@ -32,6 +33,7 @@ import org.mockito.Mockito.verify
|
|||||||
import org.mozilla.geckoview.GeckoResult
|
import org.mozilla.geckoview.GeckoResult
|
||||||
import org.mozilla.geckoview.GeckoSession
|
import org.mozilla.geckoview.GeckoSession
|
||||||
import org.robolectric.Robolectric.buildActivity
|
import org.robolectric.Robolectric.buildActivity
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class GeckoEngineViewTest {
|
class GeckoEngineViewTest {
|
||||||
@@ -73,6 +75,8 @@ class GeckoEngineViewTest {
|
|||||||
}
|
}
|
||||||
verify(mockGeckoView).capturePixels()
|
verify(mockGeckoView).capturePixels()
|
||||||
geckoResult.complete(mock())
|
geckoResult.complete(mock())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertNotNull(thumbnail)
|
assertNotNull(thumbnail)
|
||||||
|
|
||||||
geckoResult = GeckoResult()
|
geckoResult = GeckoResult()
|
||||||
@@ -83,6 +87,8 @@ class GeckoEngineViewTest {
|
|||||||
thumbnail = it
|
thumbnail = it
|
||||||
}
|
}
|
||||||
geckoResult.completeExceptionally(mock())
|
geckoResult.completeExceptionally(mock())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertNull(thumbnail)
|
assertNull(thumbnail)
|
||||||
|
|
||||||
// Test GeckoView throwing an exception
|
// Test GeckoView throwing an exception
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
package mozilla.components.browser.engine.gecko
|
package mozilla.components.browser.engine.gecko
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -30,6 +31,7 @@ import org.mozilla.geckoview.GeckoSession.PermissionDelegate.ContentPermission.V
|
|||||||
import org.mozilla.geckoview.GeckoSession.PermissionDelegate.ContentPermission.VALUE_DENY
|
import org.mozilla.geckoview.GeckoSession.PermissionDelegate.ContentPermission.VALUE_DENY
|
||||||
import org.mozilla.geckoview.GeckoSession.PermissionDelegate.PERMISSION_TRACKING
|
import org.mozilla.geckoview.GeckoSession.PermissionDelegate.PERMISSION_TRACKING
|
||||||
import org.mozilla.geckoview.StorageController
|
import org.mozilla.geckoview.StorageController
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class GeckoTrackingProtectionExceptionStorageTest {
|
class GeckoTrackingProtectionExceptionStorageTest {
|
||||||
@@ -169,6 +171,7 @@ class GeckoTrackingProtectionExceptionStorageTest {
|
|||||||
storage.remove("https://example.com/")
|
storage.remove("https://example.com/")
|
||||||
|
|
||||||
geckoResult.complete(listOf(contentPermission))
|
geckoResult.complete(listOf(contentPermission))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(storageController).setPermission(contentPermission, VALUE_DENY)
|
verify(storageController).setPermission(contentPermission, VALUE_DENY)
|
||||||
}
|
}
|
||||||
@@ -196,6 +199,7 @@ class GeckoTrackingProtectionExceptionStorageTest {
|
|||||||
storage.removeAll(listOf(session))
|
storage.removeAll(listOf(session))
|
||||||
|
|
||||||
geckoResult.complete(listOf(contentPermission))
|
geckoResult.complete(listOf(contentPermission))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(storageController).setPermission(contentPermission, VALUE_DENY)
|
verify(storageController).setPermission(contentPermission, VALUE_DENY)
|
||||||
assertFalse(excludedOnTrackingProtection)
|
assertFalse(excludedOnTrackingProtection)
|
||||||
@@ -217,6 +221,7 @@ class GeckoTrackingProtectionExceptionStorageTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
geckoResult.complete(listOf(contentPermission))
|
geckoResult.complete(listOf(contentPermission))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(exceptionList!!.isNotEmpty())
|
assertTrue(exceptionList!!.isNotEmpty())
|
||||||
val exception = exceptionList!!.first() as GeckoTrackingProtectionException
|
val exception = exceptionList!!.first() as GeckoTrackingProtectionException
|
||||||
@@ -246,6 +251,7 @@ class GeckoTrackingProtectionExceptionStorageTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
geckoResult.complete(listOf(contentPermission))
|
geckoResult.complete(listOf(contentPermission))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(containsException)
|
assertTrue(containsException)
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package mozilla.components.browser.engine.gecko
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.view.MotionEvent.ACTION_CANCEL
|
import android.view.MotionEvent.ACTION_CANCEL
|
||||||
import android.view.MotionEvent.ACTION_DOWN
|
import android.view.MotionEvent.ACTION_DOWN
|
||||||
@@ -30,6 +31,7 @@ import org.mockito.Mockito.times
|
|||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mozilla.geckoview.PanZoomController.INPUT_RESULT_HANDLED
|
import org.mozilla.geckoview.PanZoomController.INPUT_RESULT_HANDLED
|
||||||
import org.robolectric.Robolectric.buildActivity
|
import org.robolectric.Robolectric.buildActivity
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class NestedGeckoViewTest {
|
class NestedGeckoViewTest {
|
||||||
@@ -83,6 +85,7 @@ class NestedGeckoViewTest {
|
|||||||
nestedWebView.childHelper = mockChildHelper
|
nestedWebView.childHelper = mockChildHelper
|
||||||
|
|
||||||
nestedWebView.onTouchEvent(downEvent)
|
nestedWebView.onTouchEvent(downEvent)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
// We pass a deep copy to `updateInputResult`.
|
// We pass a deep copy to `updateInputResult`.
|
||||||
// Can't easily check for equality, `eventTime` should be good enough.
|
// Can't easily check for equality, `eventTime` should be good enough.
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.browser.engine.gecko.prompt
|
package mozilla.components.browser.engine.gecko.prompt
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import mozilla.components.browser.engine.gecko.GeckoEngineSession
|
import mozilla.components.browser.engine.gecko.GeckoEngineSession
|
||||||
import mozilla.components.browser.engine.gecko.ext.toAutocompleteCreditCard
|
import mozilla.components.browser.engine.gecko.ext.toAutocompleteCreditCard
|
||||||
@@ -51,6 +52,7 @@ import org.mozilla.geckoview.GeckoSession.PromptDelegate.DateTimePrompt.Type.WEE
|
|||||||
import org.mozilla.geckoview.GeckoSession.PromptDelegate.FilePrompt.Capture.ANY
|
import org.mozilla.geckoview.GeckoSession.PromptDelegate.FilePrompt.Capture.ANY
|
||||||
import org.mozilla.geckoview.GeckoSession.PromptDelegate.FilePrompt.Capture.NONE
|
import org.mozilla.geckoview.GeckoSession.PromptDelegate.FilePrompt.Capture.NONE
|
||||||
import org.mozilla.geckoview.GeckoSession.PromptDelegate.FilePrompt.Capture.USER
|
import org.mozilla.geckoview.GeckoSession.PromptDelegate.FilePrompt.Capture.USER
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.security.InvalidParameterException
|
import java.security.InvalidParameterException
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
@@ -106,11 +108,13 @@ class GeckoPromptDelegateTest {
|
|||||||
val request = promptRequestSingleChoice as SingleChoice
|
val request = promptRequestSingleChoice as SingleChoice
|
||||||
|
|
||||||
request.onConfirm(request.choices.first())
|
request.onConfirm(request.choices.first())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(confirmWasCalled)
|
assertTrue(confirmWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
confirmWasCalled = false
|
confirmWasCalled = false
|
||||||
request.onConfirm(request.choices.first())
|
request.onConfirm(request.choices.first())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(confirmWasCalled)
|
assertFalse(confirmWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,11 +147,13 @@ class GeckoPromptDelegateTest {
|
|||||||
assertTrue(promptRequestSingleChoice is MultipleChoice)
|
assertTrue(promptRequestSingleChoice is MultipleChoice)
|
||||||
|
|
||||||
(promptRequestSingleChoice as MultipleChoice).onConfirm(arrayOf())
|
(promptRequestSingleChoice as MultipleChoice).onConfirm(arrayOf())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(confirmWasCalled)
|
assertTrue(confirmWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
confirmWasCalled = false
|
confirmWasCalled = false
|
||||||
(promptRequestSingleChoice as MultipleChoice).onConfirm(arrayOf())
|
(promptRequestSingleChoice as MultipleChoice).onConfirm(arrayOf())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(confirmWasCalled)
|
assertFalse(confirmWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,11 +187,13 @@ class GeckoPromptDelegateTest {
|
|||||||
val request = promptRequestSingleChoice as PromptRequest.MenuChoice
|
val request = promptRequestSingleChoice as PromptRequest.MenuChoice
|
||||||
|
|
||||||
request.onConfirm(request.choices.first())
|
request.onConfirm(request.choices.first())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(confirmWasCalled)
|
assertTrue(confirmWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
confirmWasCalled = false
|
confirmWasCalled = false
|
||||||
request.onConfirm(request.choices.first())
|
request.onConfirm(request.choices.first())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(confirmWasCalled)
|
assertFalse(confirmWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,6 +230,7 @@ class GeckoPromptDelegateTest {
|
|||||||
assertTrue(alertRequest is PromptRequest.Alert)
|
assertTrue(alertRequest is PromptRequest.Alert)
|
||||||
|
|
||||||
(alertRequest as PromptRequest.Alert).onDismiss()
|
(alertRequest as PromptRequest.Alert).onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(dismissWasCalled)
|
assertTrue(dismissWasCalled)
|
||||||
|
|
||||||
assertEquals((alertRequest as PromptRequest.Alert).title, "title")
|
assertEquals((alertRequest as PromptRequest.Alert).title, "title")
|
||||||
@@ -319,8 +328,13 @@ class GeckoPromptDelegateTest {
|
|||||||
geckoResult!!.accept {
|
geckoResult!!.accept {
|
||||||
confirmCalled = true
|
confirmCalled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
||||||
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(confirmCalled)
|
assertTrue(confirmCalled)
|
||||||
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
||||||
}
|
}
|
||||||
@@ -377,8 +391,11 @@ class GeckoPromptDelegateTest {
|
|||||||
confirmCalled = true
|
confirmCalled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
||||||
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(confirmCalled)
|
assertTrue(confirmCalled)
|
||||||
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
||||||
}
|
}
|
||||||
@@ -438,6 +455,7 @@ class GeckoPromptDelegateTest {
|
|||||||
|
|
||||||
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
||||||
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(confirmCalled)
|
assertTrue(confirmCalled)
|
||||||
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
||||||
}
|
}
|
||||||
@@ -497,6 +515,8 @@ class GeckoPromptDelegateTest {
|
|||||||
|
|
||||||
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
assertTrue(dateRequest is PromptRequest.TimeSelection)
|
||||||
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
(dateRequest as PromptRequest.TimeSelection).onConfirm(Date())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(confirmCalled)
|
assertTrue(confirmCalled)
|
||||||
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
assertEquals((dateRequest as PromptRequest.TimeSelection).title, "title")
|
||||||
}
|
}
|
||||||
@@ -596,11 +616,15 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
filePickerRequest.onSingleFileSelected(context, mockUri)
|
filePickerRequest.onSingleFileSelected(context, mockUri)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onSingleFileSelectedWasCalled)
|
assertTrue(onSingleFileSelectedWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onSingleFileSelectedWasCalled = false
|
onSingleFileSelectedWasCalled = false
|
||||||
filePickerRequest.onSingleFileSelected(context, mockUri)
|
filePickerRequest.onSingleFileSelected(context, mockUri)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onSingleFileSelectedWasCalled)
|
assertFalse(onSingleFileSelectedWasCalled)
|
||||||
|
|
||||||
geckoPrompt = geckoFilePrompt(type = GECKO_PROMPT_FILE_TYPE.MULTIPLE, capture = ANY)
|
geckoPrompt = geckoFilePrompt(type = GECKO_PROMPT_FILE_TYPE.MULTIPLE, capture = ANY)
|
||||||
@@ -610,6 +634,8 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
filePickerRequest.onMultipleFilesSelected(context, arrayOf(mockUri))
|
filePickerRequest.onMultipleFilesSelected(context, arrayOf(mockUri))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onMultipleFilesSelectedWasCalled)
|
assertTrue(onMultipleFilesSelectedWasCalled)
|
||||||
|
|
||||||
geckoPrompt = geckoFilePrompt(type = GECKO_PROMPT_FILE_TYPE.SINGLE, capture = NONE)
|
geckoPrompt = geckoFilePrompt(type = GECKO_PROMPT_FILE_TYPE.SINGLE, capture = NONE)
|
||||||
@@ -619,6 +645,8 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
filePickerRequest.onDismiss()
|
filePickerRequest.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onDismissWasCalled)
|
assertTrue(onDismissWasCalled)
|
||||||
|
|
||||||
assertTrue(filePickerRequest.mimeTypes.isEmpty())
|
assertTrue(filePickerRequest.mimeTypes.isEmpty())
|
||||||
@@ -664,6 +692,8 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loginSaveRequest.onDismiss()
|
loginSaveRequest.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onDismissWasCalled)
|
assertTrue(onDismissWasCalled)
|
||||||
|
|
||||||
val geckoPrompt = geckoLoginSavePrompt(arrayOf(saveOption))
|
val geckoPrompt = geckoLoginSavePrompt(arrayOf(saveOption))
|
||||||
@@ -674,12 +704,15 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loginSaveRequest.onConfirm(entry)
|
loginSaveRequest.onConfirm(entry)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onLoginSaved)
|
assertTrue(onLoginSaved)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onLoginSaved = false
|
onLoginSaved = false
|
||||||
|
|
||||||
loginSaveRequest.onConfirm(entry)
|
loginSaveRequest.onConfirm(entry)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onLoginSaved)
|
assertFalse(onLoginSaved)
|
||||||
}
|
}
|
||||||
@@ -737,6 +770,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loginSelectRequest.onDismiss()
|
loginSelectRequest.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onDismissWasCalled)
|
assertTrue(onDismissWasCalled)
|
||||||
|
|
||||||
val geckoPrompt = geckoLoginSelectPrompt(arrayOf(loginSelectOption, secondLoginSelectOption))
|
val geckoPrompt = geckoLoginSelectPrompt(arrayOf(loginSelectOption, secondLoginSelectOption))
|
||||||
@@ -750,11 +784,14 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loginSelectRequest.onConfirm(login)
|
loginSelectRequest.onConfirm(login)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onLoginSelected)
|
assertTrue(onLoginSelected)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onLoginSelected = false
|
onLoginSelected = false
|
||||||
loginSelectRequest.onConfirm(login)
|
loginSelectRequest.onConfirm(login)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onLoginSelected)
|
assertFalse(onLoginSelected)
|
||||||
}
|
}
|
||||||
@@ -845,6 +882,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
selectCreditCardPrompt.onDismiss()
|
selectCreditCardPrompt.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onDismissWasCalled)
|
assertTrue(onDismissWasCalled)
|
||||||
|
|
||||||
val geckoPrompt =
|
val geckoPrompt =
|
||||||
@@ -856,6 +894,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
selectCreditCardPrompt.onConfirm(creditCard1)
|
selectCreditCardPrompt.onConfirm(creditCard1)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onConfirmWasCalled)
|
assertTrue(onConfirmWasCalled)
|
||||||
|
|
||||||
@@ -952,11 +991,13 @@ class GeckoPromptDelegateTest {
|
|||||||
with(colorRequest) {
|
with(colorRequest) {
|
||||||
assertEquals(defaultColor, "#e66465")
|
assertEquals(defaultColor, "#e66465")
|
||||||
onConfirm("#f6b73c")
|
onConfirm("#f6b73c")
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onConfirmWasCalled)
|
assertTrue(onConfirmWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onConfirmWasCalled = false
|
onConfirmWasCalled = false
|
||||||
onConfirm("#f6b73c")
|
onConfirm("#f6b73c")
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(onConfirmWasCalled)
|
assertFalse(onConfirmWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -966,6 +1007,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
colorRequest.onDismiss()
|
colorRequest.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onDismissWasCalled)
|
assertTrue(onDismissWasCalled)
|
||||||
|
|
||||||
with(colorRequest) {
|
with(colorRequest) {
|
||||||
@@ -999,6 +1041,7 @@ class GeckoPromptDelegateTest {
|
|||||||
assertEquals(inputValue, "defaultValue")
|
assertEquals(inputValue, "defaultValue")
|
||||||
|
|
||||||
onDismiss()
|
onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(dismissWasCalled)
|
assertTrue(dismissWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1009,11 +1052,13 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request.onConfirm(true, "newInput")
|
request.onConfirm(true, "newInput")
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(confirmWasCalled)
|
assertTrue(confirmWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
confirmWasCalled = false
|
confirmWasCalled = false
|
||||||
request.onConfirm(true, "newInput")
|
request.onConfirm(true, "newInput")
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(confirmWasCalled)
|
assertFalse(confirmWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1141,11 +1186,13 @@ class GeckoPromptDelegateTest {
|
|||||||
assertEquals(data.url, "https://example.com")
|
assertEquals(data.url, "https://example.com")
|
||||||
|
|
||||||
onSuccess()
|
onSuccess()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onSuccessWasCalled)
|
assertTrue(onSuccessWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onSuccessWasCalled = false
|
onSuccessWasCalled = false
|
||||||
onSuccess()
|
onSuccess()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(onSuccessWasCalled)
|
assertFalse(onSuccessWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1156,11 +1203,13 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request!!.onFailure()
|
request!!.onFailure()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onFailureWasCalled)
|
assertTrue(onFailureWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onFailureWasCalled = false
|
onFailureWasCalled = false
|
||||||
request!!.onFailure()
|
request!!.onFailure()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onFailureWasCalled)
|
assertFalse(onFailureWasCalled)
|
||||||
|
|
||||||
@@ -1171,6 +1220,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request!!.onDismiss()
|
request!!.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onDismissWasCalled)
|
assertTrue(onDismissWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1204,11 +1254,13 @@ class GeckoPromptDelegateTest {
|
|||||||
assertEquals(message, "message")
|
assertEquals(message, "message")
|
||||||
|
|
||||||
onConfirmPositiveButton(false)
|
onConfirmPositiveButton(false)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onPositiveButtonWasCalled)
|
assertTrue(onPositiveButtonWasCalled)
|
||||||
|
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
onPositiveButtonWasCalled = false
|
onPositiveButtonWasCalled = false
|
||||||
onConfirmPositiveButton(false)
|
onConfirmPositiveButton(false)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onPositiveButtonWasCalled)
|
assertFalse(onPositiveButtonWasCalled)
|
||||||
}
|
}
|
||||||
@@ -1220,6 +1272,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request.onConfirmNeutralButton(false)
|
request.onConfirmNeutralButton(false)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onNeutralButtonWasCalled)
|
assertTrue(onNeutralButtonWasCalled)
|
||||||
|
|
||||||
geckoPrompt = geckoButtonPrompt()
|
geckoPrompt = geckoButtonPrompt()
|
||||||
@@ -1229,11 +1282,13 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request.onConfirmNegativeButton(false)
|
request.onConfirmNegativeButton(false)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onNegativeButtonWasCalled)
|
assertTrue(onNegativeButtonWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onNegativeButtonWasCalled = false
|
onNegativeButtonWasCalled = false
|
||||||
request.onConfirmNegativeButton(false)
|
request.onConfirmNegativeButton(false)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onNegativeButtonWasCalled)
|
assertFalse(onNegativeButtonWasCalled)
|
||||||
|
|
||||||
@@ -1243,6 +1298,7 @@ class GeckoPromptDelegateTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request.onDismiss()
|
request.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(dismissWasCalled)
|
assertTrue(dismissWasCalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1267,11 +1323,13 @@ class GeckoPromptDelegateTest {
|
|||||||
onPositiveButtonWasCalled = true
|
onPositiveButtonWasCalled = true
|
||||||
}
|
}
|
||||||
request.onConfirm()
|
request.onConfirm()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onPositiveButtonWasCalled)
|
assertTrue(onPositiveButtonWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onPositiveButtonWasCalled = false
|
onPositiveButtonWasCalled = false
|
||||||
request.onConfirm()
|
request.onConfirm()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onPositiveButtonWasCalled)
|
assertFalse(onPositiveButtonWasCalled)
|
||||||
|
|
||||||
@@ -1281,11 +1339,13 @@ class GeckoPromptDelegateTest {
|
|||||||
onNegativeButtonWasCalled = true
|
onNegativeButtonWasCalled = true
|
||||||
}
|
}
|
||||||
request.onDismiss()
|
request.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(onNegativeButtonWasCalled)
|
assertTrue(onNegativeButtonWasCalled)
|
||||||
whenever(geckoPrompt.isComplete).thenReturn(true)
|
whenever(geckoPrompt.isComplete).thenReturn(true)
|
||||||
|
|
||||||
onNegativeButtonWasCalled = false
|
onNegativeButtonWasCalled = false
|
||||||
request.onDismiss()
|
request.onDismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onNegativeButtonWasCalled)
|
assertFalse(onNegativeButtonWasCalled)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package mozilla.components.browser.icons
|
|||||||
|
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.CompletableDeferred
|
import kotlinx.coroutines.CompletableDeferred
|
||||||
@@ -35,6 +36,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.never
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
@@ -223,6 +225,7 @@ class BrowserIconsTest {
|
|||||||
verify(view, never()).setImageBitmap(any())
|
verify(view, never()).setImageBitmap(any())
|
||||||
|
|
||||||
result.complete(mockedIcon)
|
result.complete(mockedIcon)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
job.joinBlocking()
|
job.joinBlocking()
|
||||||
|
|
||||||
verify(view).setImageBitmap(mockedBitmap)
|
verify(view).setImageBitmap(mockedBitmap)
|
||||||
@@ -247,6 +250,7 @@ class BrowserIconsTest {
|
|||||||
verify(view).setImageDrawable(placeholder)
|
verify(view).setImageDrawable(placeholder)
|
||||||
|
|
||||||
result.cancel()
|
result.cancel()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
job.joinBlocking()
|
job.joinBlocking()
|
||||||
|
|
||||||
verify(view).setImageDrawable(error)
|
verify(view).setImageDrawable(error)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package mozilla.components.feature.accounts.push
|
package mozilla.components.feature.accounts.push
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import mozilla.components.concept.base.crash.CrashReporting
|
import mozilla.components.concept.base.crash.CrashReporting
|
||||||
@@ -28,6 +29,7 @@ import org.mockito.Mockito.reset
|
|||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.verifyNoMoreInteractions
|
import org.mockito.Mockito.verifyNoMoreInteractions
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
class AccountObserverTest {
|
class AccountObserverTest {
|
||||||
@@ -63,12 +65,14 @@ class AccountObserverTest {
|
|||||||
`when`(lifecycleOwner.lifecycle).thenReturn(lifecycle)
|
`when`(lifecycleOwner.lifecycle).thenReturn(lifecycle)
|
||||||
|
|
||||||
observer.onAuthenticated(account, AuthType.Existing)
|
observer.onAuthenticated(account, AuthType.Existing)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(constellation).registerDeviceObserver(any(), eq(lifecycleOwner), anyBoolean())
|
verify(constellation).registerDeviceObserver(any(), eq(lifecycleOwner), anyBoolean())
|
||||||
|
|
||||||
reset(constellation)
|
reset(constellation)
|
||||||
|
|
||||||
observer.onAuthenticated(account, AuthType.Recovered)
|
observer.onAuthenticated(account, AuthType.Recovered)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(constellation).registerDeviceObserver(any(), eq(lifecycleOwner), anyBoolean())
|
verify(constellation).registerDeviceObserver(any(), eq(lifecycleOwner), anyBoolean())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.accounts
|
package mozilla.components.feature.accounts
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.CompletableDeferred
|
import kotlinx.coroutines.CompletableDeferred
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
@@ -34,6 +35,7 @@ import org.mockito.ArgumentMatchers.anyString
|
|||||||
import org.mockito.Mockito.`when`
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.Mockito.never
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
||||||
@@ -183,6 +185,9 @@ class FirefoxAccountsAuthFeatureTest {
|
|||||||
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
||||||
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode1&state=testState1", null, false, false, false, false, false)
|
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode1&state=testState1", null, false, false, false, false, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(manager).finishAuthentication(
|
verify(manager).finishAuthentication(
|
||||||
FxaAuthData(authType = AuthType.OtherExternal(null), code = "testCode1", state = "testState1")
|
FxaAuthData(authType = AuthType.OtherExternal(null), code = "testCode1", state = "testState1")
|
||||||
)
|
)
|
||||||
@@ -192,6 +197,9 @@ class FirefoxAccountsAuthFeatureTest {
|
|||||||
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
||||||
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode2&state=testState2&action=signin", null, false, false, false, false, false)
|
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode2&state=testState2&action=signin", null, false, false, false, false, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(manager).finishAuthentication(
|
verify(manager).finishAuthentication(
|
||||||
FxaAuthData(authType = AuthType.Signin, code = "testCode2", state = "testState2")
|
FxaAuthData(authType = AuthType.Signin, code = "testCode2", state = "testState2")
|
||||||
)
|
)
|
||||||
@@ -201,6 +209,9 @@ class FirefoxAccountsAuthFeatureTest {
|
|||||||
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
||||||
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode3&state=testState3&action=signup", null, false, false, false, false, false)
|
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode3&state=testState3&action=signup", null, false, false, false, false, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(manager).finishAuthentication(
|
verify(manager).finishAuthentication(
|
||||||
FxaAuthData(authType = AuthType.Signup, code = "testCode3", state = "testState3")
|
FxaAuthData(authType = AuthType.Signup, code = "testCode3", state = "testState3")
|
||||||
)
|
)
|
||||||
@@ -210,6 +221,9 @@ class FirefoxAccountsAuthFeatureTest {
|
|||||||
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
||||||
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode4&state=testState4&action=pairing", null, false, false, false, false, false)
|
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode4&state=testState4&action=pairing", null, false, false, false, false, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(manager).finishAuthentication(
|
verify(manager).finishAuthentication(
|
||||||
FxaAuthData(authType = AuthType.Pairing, code = "testCode4", state = "testState4")
|
FxaAuthData(authType = AuthType.Pairing, code = "testCode4", state = "testState4")
|
||||||
)
|
)
|
||||||
@@ -219,6 +233,9 @@ class FirefoxAccountsAuthFeatureTest {
|
|||||||
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
RequestInterceptor.InterceptionResponse.Url(redirectUrl),
|
||||||
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode5&state=testState5&action=someNewActionType", null, false, false, false, false, false)
|
feature.interceptor.onLoadRequest(mock(), "https://accounts.firefox.com/oauth/success/123/?code=testCode5&state=testState5&action=someNewActionType", null, false, false, false, false, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(manager).finishAuthentication(
|
verify(manager).finishAuthentication(
|
||||||
FxaAuthData(authType = AuthType.OtherExternal("someNewActionType"), code = "testCode5", state = "testState5")
|
FxaAuthData(authType = AuthType.OtherExternal("someNewActionType"), code = "testCode5", state = "testState5")
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package mozilla.components.feature.accounts
|
package mozilla.components.feature.accounts
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import mozilla.components.browser.state.state.BrowserState
|
import mozilla.components.browser.state.state.BrowserState
|
||||||
@@ -42,6 +43,7 @@ import org.mockito.Mockito.never
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class FxaWebChannelFeatureTest {
|
class FxaWebChannelFeatureTest {
|
||||||
@@ -165,6 +167,8 @@ class FxaWebChannelFeatureTest {
|
|||||||
webchannelFeature.extensionController = controller
|
webchannelFeature.extensionController = controller
|
||||||
|
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(controller).registerContentMessageHandler(eq(engineSession), any(), any())
|
verify(controller).registerContentMessageHandler(eq(engineSession), any(), any())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,6 +182,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines)
|
||||||
whenever(port.senderUrl()).thenReturn("https://bar.foo/email")
|
whenever(port.senderUrl()).thenReturn("https://bar.foo/email")
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -213,6 +218,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
setOf(FxaCapability.CHOOSE_WHAT_TO_SYNC)
|
setOf(FxaCapability.CHOOSE_WHAT_TO_SYNC)
|
||||||
)
|
)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -246,6 +252,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
val responseToTheWebChannel = argumentCaptor<JSONObject>()
|
val responseToTheWebChannel = argumentCaptor<JSONObject>()
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -285,6 +292,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
val responseToTheWebChannel = argumentCaptor<JSONObject>()
|
val responseToTheWebChannel = argumentCaptor<JSONObject>()
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -337,6 +345,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -392,6 +401,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -446,6 +456,8 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
eq(FxaWebChannelFeature.WEB_CHANNEL_MESSAGING_ID),
|
eq(FxaWebChannelFeature.WEB_CHANNEL_MESSAGING_ID),
|
||||||
@@ -492,6 +504,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -538,6 +551,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, null, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, null, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -578,6 +592,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, null, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, null, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -610,6 +625,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, null, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, null, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -644,6 +660,7 @@ class FxaWebChannelFeatureTest {
|
|||||||
|
|
||||||
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
val webchannelFeature = prepareFeatureForTest(ext, port, engineSession, expectedEngines, emptySet(), accountManager)
|
||||||
webchannelFeature.start()
|
webchannelFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(ext).registerContentMessageHandler(
|
verify(ext).registerContentMessageHandler(
|
||||||
eq(engineSession),
|
eq(engineSession),
|
||||||
@@ -757,6 +774,8 @@ class FxaWebChannelFeatureTest {
|
|||||||
state = state,
|
state = state,
|
||||||
declinedEngines = declined ?: emptySet()
|
declinedEngines = declined ?: emptySet()
|
||||||
)
|
)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(accountManager).finishAuthentication(expectedAuthData)
|
verify(accountManager).finishAuthentication(expectedAuthData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package mozilla.components.feature.app.links
|
package mozilla.components.feature.app.links
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
@@ -17,6 +18,7 @@ import org.junit.runner.RunWith
|
|||||||
import org.mockito.Mockito.doNothing
|
import org.mockito.Mockito.doNothing
|
||||||
import org.mockito.Mockito.doReturn
|
import org.mockito.Mockito.doReturn
|
||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class SimpleRedirectDialogFragmentTest {
|
class SimpleRedirectDialogFragmentTest {
|
||||||
@@ -46,6 +48,8 @@ class SimpleRedirectDialogFragmentTest {
|
|||||||
|
|
||||||
val confirmButton = dialog.findViewById<Button>(android.R.id.button1)
|
val confirmButton = dialog.findViewById<Button>(android.R.id.button1)
|
||||||
confirmButton?.performClick()
|
confirmButton?.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(onConfirmCalled)
|
assertTrue(onConfirmCalled)
|
||||||
assertFalse(onCancelCalled)
|
assertFalse(onCancelCalled)
|
||||||
}
|
}
|
||||||
@@ -74,6 +78,8 @@ class SimpleRedirectDialogFragmentTest {
|
|||||||
|
|
||||||
val confirmButton = dialog.findViewById<Button>(android.R.id.button2)
|
val confirmButton = dialog.findViewById<Button>(android.R.id.button2)
|
||||||
confirmButton?.performClick()
|
confirmButton?.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(onConfirmCalled)
|
assertFalse(onConfirmCalled)
|
||||||
assertTrue(onCancelCalled)
|
assertTrue(onCancelCalled)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import android.app.DownloadManager.ACTION_DOWNLOAD_COMPLETE
|
|||||||
import android.app.DownloadManager.Request
|
import android.app.DownloadManager.Request
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import mozilla.components.browser.state.state.content.DownloadState
|
import mozilla.components.browser.state.state.content.DownloadState
|
||||||
import mozilla.components.browser.state.store.BrowserStore
|
import mozilla.components.browser.state.store.BrowserStore
|
||||||
@@ -29,6 +30,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.verifyNoInteractions
|
import org.mockito.Mockito.verifyNoInteractions
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class AndroidDownloadManagerTest {
|
class AndroidDownloadManagerTest {
|
||||||
@@ -67,6 +69,7 @@ class AndroidDownloadManagerTest {
|
|||||||
assertEquals(download.copy(id = id), store.state.downloads[id])
|
assertEquals(download.copy(id = id), store.state.downloads[id])
|
||||||
|
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(downloadCompleted)
|
assertTrue(downloadCompleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,13 +81,14 @@ class AndroidDownloadManagerTest {
|
|||||||
grantPermissions()
|
grantPermissions()
|
||||||
|
|
||||||
val id = downloadManager.download(download)!!
|
val id = downloadManager.download(download)!!
|
||||||
store.waitUntilIdle()
|
|
||||||
notifyDownloadFailed(id)
|
notifyDownloadFailed(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
|
|
||||||
downloadStopped = false
|
downloadStopped = false
|
||||||
downloadManager.tryAgain(id)
|
downloadManager.tryAgain(id)
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +135,6 @@ class AndroidDownloadManagerTest {
|
|||||||
downloadWithFileName,
|
downloadWithFileName,
|
||||||
cookie = "yummy_cookie=choco"
|
cookie = "yummy_cookie=choco"
|
||||||
)!!
|
)!!
|
||||||
store.waitUntilIdle()
|
|
||||||
|
|
||||||
downloadManager.onDownloadStopped = { _, _, status ->
|
downloadManager.onDownloadStopped = { _, _, status ->
|
||||||
downloadStatus = status
|
downloadStatus = status
|
||||||
@@ -139,6 +142,7 @@ class AndroidDownloadManagerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(downloadCompleted)
|
assertTrue(downloadCompleted)
|
||||||
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
||||||
@@ -162,7 +166,7 @@ class AndroidDownloadManagerTest {
|
|||||||
assertEquals(downloadWithFileName.copy(id = id), store.state.downloads[id])
|
assertEquals(downloadWithFileName.copy(id = id), store.state.downloads[id])
|
||||||
|
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
store.waitUntilIdle()
|
shadowOf(getMainLooper()).idle()
|
||||||
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import android.app.DownloadManager.EXTRA_DOWNLOAD_ID
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import mozilla.components.browser.state.state.content.DownloadState
|
import mozilla.components.browser.state.state.content.DownloadState
|
||||||
@@ -35,6 +36,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.never
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class FetchDownloadManagerTest {
|
class FetchDownloadManagerTest {
|
||||||
@@ -79,6 +81,8 @@ class FetchDownloadManagerTest {
|
|||||||
assertEquals(download, store.state.downloads[download.id])
|
assertEquals(download, store.state.downloads[download.id])
|
||||||
|
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,12 +99,15 @@ class FetchDownloadManagerTest {
|
|||||||
val id = downloadManager.download(download)!!
|
val id = downloadManager.download(download)!!
|
||||||
store.waitUntilIdle()
|
store.waitUntilIdle()
|
||||||
notifyDownloadFailed(id)
|
notifyDownloadFailed(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
|
|
||||||
downloadStopped = false
|
downloadStopped = false
|
||||||
downloadManager.tryAgain(id)
|
downloadManager.tryAgain(id)
|
||||||
verify(context).startService(any())
|
verify(context).startService(any())
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,6 +185,8 @@ class FetchDownloadManagerTest {
|
|||||||
store.waitUntilIdle()
|
store.waitUntilIdle()
|
||||||
|
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
||||||
}
|
}
|
||||||
@@ -200,6 +209,8 @@ class FetchDownloadManagerTest {
|
|||||||
assertEquals(downloadWithFileName, store.state.downloads[downloadWithFileName.id])
|
assertEquals(downloadWithFileName, store.state.downloads[downloadWithFileName.id])
|
||||||
|
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
store.waitUntilIdle()
|
store.waitUntilIdle()
|
||||||
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
assertEquals(DownloadState.Status.COMPLETED, downloadStatus)
|
||||||
}
|
}
|
||||||
@@ -224,6 +235,7 @@ class FetchDownloadManagerTest {
|
|||||||
val id = downloadManager.download(downloadWithFileName)!!
|
val id = downloadManager.download(downloadWithFileName)!!
|
||||||
store.waitUntilIdle()
|
store.waitUntilIdle()
|
||||||
notifyDownloadCompleted(id)
|
notifyDownloadCompleted(id)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(downloadStopped)
|
assertTrue(downloadStopped)
|
||||||
assertEquals("5MB.zip", downloadName)
|
assertEquals("5MB.zip", downloadName)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.prompts.dialog
|
package mozilla.components.feature.prompts.dialog
|
||||||
|
|
||||||
import android.content.DialogInterface.BUTTON_POSITIVE
|
import android.content.DialogInterface.BUTTON_POSITIVE
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.CheckBox
|
import android.widget.CheckBox
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -26,6 +27,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class AlertDialogFragmentTest {
|
class AlertDialogFragmentTest {
|
||||||
@@ -99,6 +101,7 @@ class AlertDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onCancel("sessionId", "uid")
|
verify(mockFeature).onCancel("sessionId", "uid")
|
||||||
}
|
}
|
||||||
@@ -122,6 +125,7 @@ class AlertDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", true)
|
verify(mockFeature).onConfirm("sessionId", "uid", true)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.prompts.dialog
|
package mozilla.components.feature.prompts.dialog
|
||||||
|
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View.GONE
|
import android.view.View.GONE
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -21,6 +22,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class AuthenticationDialogFragmentTest {
|
class AuthenticationDialogFragmentTest {
|
||||||
@@ -164,6 +166,7 @@ class AuthenticationDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", "username" to "password")
|
verify(mockFeature).onConfirm("sessionId", "uid", "username" to "password")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package mozilla.components.feature.prompts.dialog
|
|||||||
|
|
||||||
import android.content.DialogInterface.BUTTON_NEGATIVE
|
import android.content.DialogInterface.BUTTON_NEGATIVE
|
||||||
import android.content.DialogInterface.BUTTON_POSITIVE
|
import android.content.DialogInterface.BUTTON_POSITIVE
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
@@ -45,6 +46,7 @@ import org.mockito.Mockito.spy
|
|||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ChoiceDialogFragmentTest {
|
class ChoiceDialogFragmentTest {
|
||||||
@@ -318,9 +320,11 @@ class ChoiceDialogFragmentTest {
|
|||||||
adapter.bindViewHolder(holder, 0)
|
adapter.bindViewHolder(holder, 0)
|
||||||
|
|
||||||
holder.itemView.performClick()
|
holder.itemView.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", choices.first())
|
verify(mockFeature).onConfirm("sessionId", "uid", choices.first())
|
||||||
|
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
verify(mockFeature).onCancel("sessionId", "uid")
|
verify(mockFeature).onCancel("sessionId", "uid")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,9 +350,13 @@ class ChoiceDialogFragmentTest {
|
|||||||
adapter.bindViewHolder(holder, 0)
|
adapter.bindViewHolder(holder, 0)
|
||||||
|
|
||||||
holder.itemView.performClick()
|
holder.itemView.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", choices.first())
|
verify(mockFeature).onConfirm("sessionId", "uid", choices.first())
|
||||||
|
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onCancel("sessionId", "uid")
|
verify(mockFeature).onCancel("sessionId", "uid")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,11 +386,13 @@ class ChoiceDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", fragment.mapSelectChoice.keys.toTypedArray())
|
verify(mockFeature).onConfirm("sessionId", "uid", fragment.mapSelectChoice.keys.toTypedArray())
|
||||||
|
|
||||||
val negativeButton = dialog.getButton(BUTTON_NEGATIVE)
|
val negativeButton = dialog.getButton(BUTTON_NEGATIVE)
|
||||||
negativeButton.performClick()
|
negativeButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature, times(2)).onCancel("sessionId", "uid")
|
verify(mockFeature, times(2)).onCancel("sessionId", "uid")
|
||||||
}
|
}
|
||||||
@@ -416,6 +426,7 @@ class ChoiceDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", fragment.mapSelectChoice.keys.toTypedArray())
|
verify(mockFeature).onConfirm("sessionId", "uid", fragment.mapSelectChoice.keys.toTypedArray())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.prompts.dialog
|
package mozilla.components.feature.prompts.dialog
|
||||||
|
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -23,6 +24,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ColorPickerDialogFragmentTest {
|
class ColorPickerDialogFragmentTest {
|
||||||
@@ -70,6 +72,7 @@ class ColorPickerDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", "#4f4663")
|
verify(mockFeature).onConfirm("sessionId", "uid", "#4f4663")
|
||||||
}
|
}
|
||||||
@@ -90,6 +93,7 @@ class ColorPickerDialogFragmentTest {
|
|||||||
|
|
||||||
val negativeButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEGATIVE)
|
val negativeButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEGATIVE)
|
||||||
negativeButton.performClick()
|
negativeButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onCancel("sessionId", "uid")
|
verify(mockFeature).onCancel("sessionId", "uid")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.prompts.dialog
|
package mozilla.components.feature.prompts.dialog
|
||||||
|
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
@@ -21,6 +22,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ConfirmDialogFragmentTest {
|
class ConfirmDialogFragmentTest {
|
||||||
@@ -81,6 +83,7 @@ class ConfirmDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", false)
|
verify(mockFeature).onConfirm("sessionId", "uid", false)
|
||||||
}
|
}
|
||||||
@@ -97,6 +100,7 @@ class ConfirmDialogFragmentTest {
|
|||||||
|
|
||||||
val negativeButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEGATIVE)
|
val negativeButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEGATIVE)
|
||||||
negativeButton.performClick()
|
negativeButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onCancel("sessionId", "uid", false)
|
verify(mockFeature).onCancel("sessionId", "uid", false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package mozilla.components.feature.prompts.dialog
|
|||||||
|
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
import android.content.DialogInterface.BUTTON_POSITIVE
|
import android.content.DialogInterface.BUTTON_POSITIVE
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.CheckBox
|
import android.widget.CheckBox
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -26,6 +27,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class MultiButtonDialogFragmentTest {
|
class MultiButtonDialogFragmentTest {
|
||||||
@@ -134,6 +136,7 @@ class MultiButtonDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", false to MultiButtonDialogFragment.ButtonType.POSITIVE)
|
verify(mockFeature).onConfirm("sessionId", "uid", false to MultiButtonDialogFragment.ButtonType.POSITIVE)
|
||||||
}
|
}
|
||||||
@@ -162,6 +165,7 @@ class MultiButtonDialogFragmentTest {
|
|||||||
|
|
||||||
val negativeButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEGATIVE)
|
val negativeButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEGATIVE)
|
||||||
negativeButton.performClick()
|
negativeButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", false to MultiButtonDialogFragment.ButtonType.NEGATIVE)
|
verify(mockFeature).onConfirm("sessionId", "uid", false to MultiButtonDialogFragment.ButtonType.NEGATIVE)
|
||||||
}
|
}
|
||||||
@@ -190,6 +194,7 @@ class MultiButtonDialogFragmentTest {
|
|||||||
|
|
||||||
val neutralButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEUTRAL)
|
val neutralButton = (dialog as AlertDialog).getButton(DialogInterface.BUTTON_NEUTRAL)
|
||||||
neutralButton.performClick()
|
neutralButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", false to MultiButtonDialogFragment.ButtonType.NEUTRAL)
|
verify(mockFeature).onConfirm("sessionId", "uid", false to MultiButtonDialogFragment.ButtonType.NEUTRAL)
|
||||||
}
|
}
|
||||||
@@ -222,6 +227,7 @@ class MultiButtonDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", true to MultiButtonDialogFragment.ButtonType.POSITIVE)
|
verify(mockFeature).onConfirm("sessionId", "uid", true to MultiButtonDialogFragment.ButtonType.POSITIVE)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.prompts.dialog
|
package mozilla.components.feature.prompts.dialog
|
||||||
|
|
||||||
import android.content.DialogInterface.BUTTON_POSITIVE
|
import android.content.DialogInterface.BUTTON_POSITIVE
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.CheckBox
|
import android.widget.CheckBox
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -24,6 +25,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class TextPromptDialogFragmentTest {
|
class TextPromptDialogFragmentTest {
|
||||||
@@ -107,6 +109,7 @@ class TextPromptDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", false to "defaultValue")
|
verify(mockFeature).onConfirm("sessionId", "uid", false to "defaultValue")
|
||||||
}
|
}
|
||||||
@@ -131,6 +134,7 @@ class TextPromptDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm("sessionId", "uid", true to "defaultValue")
|
verify(mockFeature).onConfirm("sessionId", "uid", true to "defaultValue")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import android.app.TimePickerDialog
|
|||||||
import android.content.DialogInterface.BUTTON_NEUTRAL
|
import android.content.DialogInterface.BUTTON_NEUTRAL
|
||||||
import android.content.DialogInterface.BUTTON_POSITIVE
|
import android.content.DialogInterface.BUTTON_POSITIVE
|
||||||
import android.os.Build.VERSION_CODES.LOLLIPOP
|
import android.os.Build.VERSION_CODES.LOLLIPOP
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.DatePicker
|
import android.widget.DatePicker
|
||||||
import android.widget.NumberPicker
|
import android.widget.NumberPicker
|
||||||
import android.widget.TimePicker
|
import android.widget.TimePicker
|
||||||
@@ -37,6 +38,7 @@ import org.mockito.Mockito.doReturn
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
@@ -90,10 +92,14 @@ class TimePickerDialogFragmentTest {
|
|||||||
|
|
||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onConfirm(eq("sessionId"), eq("uid"), any())
|
verify(mockFeature).onConfirm(eq("sessionId"), eq("uid"), any())
|
||||||
|
|
||||||
val neutralButton = dialog.getButton(BUTTON_NEUTRAL)
|
val neutralButton = dialog.getButton(BUTTON_NEUTRAL)
|
||||||
neutralButton.performClick()
|
neutralButton.performClick()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockFeature).onClear("sessionId", "uid")
|
verify(mockFeature).onClear("sessionId", "uid")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package mozilla.components.feature.pwa.feature
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.pm.ActivityInfo
|
import android.content.pm.ActivityInfo
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.Window
|
import android.view.Window
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
@@ -24,6 +25,7 @@ import org.mockito.Mockito.`when`
|
|||||||
import org.mockito.Mockito.never
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations.openMocks
|
import org.mockito.MockitoAnnotations.openMocks
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class WebAppActivityFeatureTest {
|
class WebAppActivityFeatureTest {
|
||||||
@@ -83,6 +85,7 @@ class WebAppActivityFeatureTest {
|
|||||||
`when`(icons.loadIcon(any())).thenReturn(CompletableDeferred(icon))
|
`when`(icons.loadIcon(any())).thenReturn(CompletableDeferred(icon))
|
||||||
|
|
||||||
WebAppActivityFeature(activity, icons, manifest).onResume(mock())
|
WebAppActivityFeature(activity, icons, manifest).onResume(mock())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(activity).setTaskDescription(any())
|
verify(activity).setTaskDescription(any())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import android.hardware.camera2.CameraManager
|
|||||||
import android.hardware.camera2.params.SessionConfiguration
|
import android.hardware.camera2.params.SessionConfiguration
|
||||||
import android.media.Image
|
import android.media.Image
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.util.Size
|
import android.util.Size
|
||||||
import android.view.Display
|
import android.view.Display
|
||||||
import android.view.Surface
|
import android.view.Surface
|
||||||
@@ -49,6 +50,7 @@ import org.mockito.Mockito.never
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import java.nio.ByteBuffer
|
import java.nio.ByteBuffer
|
||||||
|
|
||||||
@@ -61,6 +63,7 @@ class QrFragmentTest {
|
|||||||
val qrFragment = spy(QrFragment.newInstance(scanCompleteListener))
|
val qrFragment = spy(QrFragment.newInstance(scanCompleteListener))
|
||||||
|
|
||||||
qrFragment.scanCompleteListener?.onScanComplete("result")
|
qrFragment.scanCompleteListener?.onScanComplete("result")
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
verify(scanCompleteListener).onScanComplete("result")
|
verify(scanCompleteListener).onScanComplete("result")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,6 +206,7 @@ class QrFragmentTest {
|
|||||||
QrFragment.qrState = QrFragment.STATE_DECODE_PROGRESS
|
QrFragment.qrState = QrFragment.STATE_DECODE_PROGRESS
|
||||||
|
|
||||||
qrFragment.tryScanningSource(source)
|
qrFragment.tryScanningSource(source)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(listener).onScanComplete(eq("qrcode-result"))
|
verify(listener).onScanComplete(eq("qrcode-result"))
|
||||||
assertEquals(QrFragment.STATE_QRCODE_EXIST, QrFragment.qrState)
|
assertEquals(QrFragment.STATE_QRCODE_EXIST, QrFragment.qrState)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package mozilla.components.feature.session
|
package mozilla.components.feature.session
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
@@ -21,6 +22,7 @@ import org.junit.Test
|
|||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mockito.any
|
import org.mockito.Mockito.any
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class CoordinateScrollingFeatureTest {
|
class CoordinateScrollingFeatureTest {
|
||||||
@@ -51,6 +53,7 @@ class CoordinateScrollingFeatureTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `when session loading StateChanged and engine canScrollVertically is false must remove scrollFlags`() {
|
fun `when session loading StateChanged and engine canScrollVertically is false must remove scrollFlags`() {
|
||||||
scrollFeature.start()
|
scrollFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
store.dispatch(ContentAction.UpdateLoadingStateAction("mozilla", true)).joinBlocking()
|
store.dispatch(ContentAction.UpdateLoadingStateAction("mozilla", true)).joinBlocking()
|
||||||
|
|
||||||
@@ -63,6 +66,7 @@ class CoordinateScrollingFeatureTest {
|
|||||||
whenever(mockEngineView.canScrollVerticallyDown()).thenReturn(true)
|
whenever(mockEngineView.canScrollVerticallyDown()).thenReturn(true)
|
||||||
|
|
||||||
scrollFeature.start()
|
scrollFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
store.dispatch(ContentAction.UpdateLoadingStateAction("mozilla", true)).joinBlocking()
|
store.dispatch(ContentAction.UpdateLoadingStateAction("mozilla", true)).joinBlocking()
|
||||||
|
|
||||||
@@ -75,6 +79,7 @@ class CoordinateScrollingFeatureTest {
|
|||||||
whenever(mockEngineView.canScrollVerticallyDown()).thenReturn(true)
|
whenever(mockEngineView.canScrollVerticallyDown()).thenReturn(true)
|
||||||
scrollFeature = CoordinateScrollingFeature(store, mockEngineView, mockView, 12)
|
scrollFeature = CoordinateScrollingFeature(store, mockEngineView, mockView, 12)
|
||||||
scrollFeature.start()
|
scrollFeature.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
store.dispatch(ContentAction.UpdateLoadingStateAction("mozilla", true)).joinBlocking()
|
store.dispatch(ContentAction.UpdateLoadingStateAction("mozilla", true)).joinBlocking()
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package mozilla.components.feature.sitepermissions
|
package mozilla.components.feature.sitepermissions
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.paging.DataSource
|
import androidx.paging.DataSource
|
||||||
import androidx.room.DatabaseConfiguration
|
import androidx.room.DatabaseConfiguration
|
||||||
import androidx.room.InvalidationTracker
|
import androidx.room.InvalidationTracker
|
||||||
@@ -38,6 +39,7 @@ import org.junit.runner.RunWith
|
|||||||
import org.mockito.Mockito.doReturn
|
import org.mockito.Mockito.doReturn
|
||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class OnDiskSitePermissionsStorageTest {
|
class OnDiskSitePermissionsStorageTest {
|
||||||
@@ -71,6 +73,7 @@ class OnDiskSitePermissionsStorageTest {
|
|||||||
val sitePermissions = createNewSitePermission()
|
val sitePermissions = createNewSitePermission()
|
||||||
|
|
||||||
storage.update(sitePermissions)
|
storage.update(sitePermissions)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockDAO).update(any())
|
verify(mockDAO).update(any())
|
||||||
verify(mockDataCleanable).clearData(BrowsingData.select(BrowsingData.PERMISSIONS), sitePermissions.origin)
|
verify(mockDataCleanable).clearData(BrowsingData.select(BrowsingData.PERMISSIONS), sitePermissions.origin)
|
||||||
@@ -108,6 +111,8 @@ class OnDiskSitePermissionsStorageTest {
|
|||||||
|
|
||||||
storage.remove(sitePermissions)
|
storage.remove(sitePermissions)
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockDAO).deleteSitePermissions(any())
|
verify(mockDAO).deleteSitePermissions(any())
|
||||||
verify(mockDataCleanable).clearData(BrowsingData.select(BrowsingData.PERMISSIONS), sitePermissions.origin)
|
verify(mockDataCleanable).clearData(BrowsingData.select(BrowsingData.PERMISSIONS), sitePermissions.origin)
|
||||||
}
|
}
|
||||||
@@ -115,6 +120,7 @@ class OnDiskSitePermissionsStorageTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `remove all SitePermissions`() = runBlockingTest {
|
fun `remove all SitePermissions`() = runBlockingTest {
|
||||||
storage.removeAll()
|
storage.removeAll()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(mockDAO).deleteAllSitePermissions()
|
verify(mockDAO).deleteAllSitePermissions()
|
||||||
verify(mockDataCleanable).clearData(BrowsingData.select(BrowsingData.PERMISSIONS))
|
verify(mockDataCleanable).clearData(BrowsingData.select(BrowsingData.PERMISSIONS))
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.feature.syncedtabs.presenter
|
package mozilla.components.feature.syncedtabs.presenter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.test.runBlockingTest
|
import kotlinx.coroutines.test.runBlockingTest
|
||||||
@@ -20,6 +21,7 @@ import org.junit.runner.RunWith
|
|||||||
import org.mockito.Mockito.`when`
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.verifyNoInteractions
|
import org.mockito.Mockito.verifyNoInteractions
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class DefaultPresenterTest {
|
class DefaultPresenterTest {
|
||||||
@@ -135,6 +137,7 @@ class DefaultPresenterTest {
|
|||||||
)
|
)
|
||||||
|
|
||||||
presenter.accountObserver.onLoggedOut()
|
presenter.accountObserver.onLoggedOut()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(view).onError(ErrorType.SYNC_UNAVAILABLE)
|
verify(view).onError(ErrorType.SYNC_UNAVAILABLE)
|
||||||
}
|
}
|
||||||
@@ -150,6 +153,7 @@ class DefaultPresenterTest {
|
|||||||
)
|
)
|
||||||
|
|
||||||
presenter.accountObserver.onAuthenticated(mock(), mock())
|
presenter.accountObserver.onAuthenticated(mock(), mock())
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(controller).refreshSyncedTabs()
|
verify(controller).refreshSyncedTabs()
|
||||||
}
|
}
|
||||||
@@ -165,6 +169,7 @@ class DefaultPresenterTest {
|
|||||||
)
|
)
|
||||||
|
|
||||||
presenter.accountObserver.onAuthenticationProblems()
|
presenter.accountObserver.onAuthenticationProblems()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(view).onError(ErrorType.SYNC_NEEDS_REAUTHENTICATION)
|
verify(view).onError(ErrorType.SYNC_NEEDS_REAUTHENTICATION)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package mozilla.components.feature.toolbar
|
package mozilla.components.feature.toolbar
|
||||||
|
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import mozilla.components.browser.state.action.ContentAction
|
import mozilla.components.browser.state.action.ContentAction
|
||||||
@@ -24,6 +25,7 @@ import org.mockito.Mockito.never
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ToolbarBehaviorControllerTest {
|
class ToolbarBehaviorControllerTest {
|
||||||
@@ -45,6 +47,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
assertNull(controller.updatesScope)
|
assertNull(controller.updatesScope)
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertNotNull(controller.updatesScope)
|
assertNotNull(controller.updatesScope)
|
||||||
verify(customTabContent, times(3)).loading
|
verify(customTabContent, times(3)).loading
|
||||||
@@ -68,6 +71,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
assertNull(controller.updatesScope)
|
assertNull(controller.updatesScope)
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertNotNull(controller.updatesScope)
|
assertNotNull(controller.updatesScope)
|
||||||
verify(customTabContent, never()).loading
|
verify(customTabContent, never()).loading
|
||||||
@@ -86,6 +90,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
val controller = spy(ToolbarBehaviorController(mock(), store))
|
val controller = spy(ToolbarBehaviorController(mock(), store))
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(controller).disableScrolling()
|
verify(controller).disableScrolling()
|
||||||
}
|
}
|
||||||
@@ -102,6 +107,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
val controller = spy(ToolbarBehaviorController(mock(), store))
|
val controller = spy(ToolbarBehaviorController(mock(), store))
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(controller).enableScrolling()
|
verify(controller).enableScrolling()
|
||||||
}
|
}
|
||||||
@@ -111,6 +117,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
val controller = spy(ToolbarBehaviorController(mock(), BrowserStore(BrowserState())))
|
val controller = spy(ToolbarBehaviorController(mock(), BrowserStore(BrowserState())))
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(controller.updatesScope!!.isActive)
|
assertTrue(controller.updatesScope!!.isActive)
|
||||||
|
|
||||||
controller.stop()
|
controller.stop()
|
||||||
@@ -151,6 +158,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
val controller = spy(ToolbarBehaviorController(mock(), store))
|
val controller = spy(ToolbarBehaviorController(mock(), store))
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(controller).expandToolbar()
|
verify(controller).expandToolbar()
|
||||||
verify(store).dispatch(ContentAction.UpdateExpandedToolbarStateAction("123", false))
|
verify(store).dispatch(ContentAction.UpdateExpandedToolbarStateAction("123", false))
|
||||||
@@ -168,6 +176,7 @@ class ToolbarBehaviorControllerTest {
|
|||||||
val controller = spy(ToolbarBehaviorController(mock(), store))
|
val controller = spy(ToolbarBehaviorController(mock(), store))
|
||||||
|
|
||||||
controller.start()
|
controller.start()
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(controller, never()).expandToolbar()
|
verify(controller, never()).expandToolbar()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
package mozilla.components.lib.state.ext
|
package mozilla.components.lib.state.ext
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.os.Looper
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
@@ -35,6 +37,7 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import java.util.concurrent.CountDownLatch
|
import java.util.concurrent.CountDownLatch
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
@@ -485,6 +488,7 @@ class StoreExtensionsKtTest {
|
|||||||
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
||||||
val view = View(testContext)
|
val view = View(testContext)
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(view.isAttachedToWindow)
|
assertTrue(view.isAttachedToWindow)
|
||||||
|
|
||||||
@@ -502,6 +506,7 @@ class StoreExtensionsKtTest {
|
|||||||
assertTrue(stateObserved)
|
assertTrue(stateObserved)
|
||||||
|
|
||||||
activity.windowManager.removeView(view)
|
activity.windowManager.removeView(view)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertFalse(view.isAttachedToWindow)
|
assertFalse(view.isAttachedToWindow)
|
||||||
|
|
||||||
stateObserved = false
|
stateObserved = false
|
||||||
@@ -530,6 +535,7 @@ class StoreExtensionsKtTest {
|
|||||||
assertFalse(stateObserved)
|
assertFalse(stateObserved)
|
||||||
|
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(Looper.getMainLooper()).idle()
|
||||||
assertTrue(view.isAttachedToWindow)
|
assertTrue(view.isAttachedToWindow)
|
||||||
assertTrue(stateObserved)
|
assertTrue(stateObserved)
|
||||||
|
|
||||||
@@ -542,6 +548,8 @@ class StoreExtensionsKtTest {
|
|||||||
assertTrue(stateObserved)
|
assertTrue(stateObserved)
|
||||||
|
|
||||||
activity.windowManager.removeView(view)
|
activity.windowManager.removeView(view)
|
||||||
|
shadowOf(Looper.getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(view.isAttachedToWindow)
|
assertFalse(view.isAttachedToWindow)
|
||||||
|
|
||||||
stateObserved = false
|
stateObserved = false
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.support.base.dialog
|
package mozilla.components.support.base.dialog
|
||||||
|
|
||||||
import android.content.DialogInterface.BUTTON_POSITIVE
|
import android.content.DialogInterface.BUTTON_POSITIVE
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
@@ -18,6 +19,7 @@ import org.mockito.Mockito.doNothing
|
|||||||
import org.mockito.Mockito.doReturn
|
import org.mockito.Mockito.doReturn
|
||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class DeniedPermissionDialogFragmentTest {
|
class DeniedPermissionDialogFragmentTest {
|
||||||
@@ -58,6 +60,8 @@ class DeniedPermissionDialogFragmentTest {
|
|||||||
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
|
||||||
positiveButton.performClick()
|
positiveButton.performClick()
|
||||||
|
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(fragment).openSettingsPage()
|
verify(fragment).openSettingsPage()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package mozilla.components.support.base.feature
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.Activity.RESULT_OK
|
import android.app.Activity.RESULT_OK
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
@@ -26,6 +27,7 @@ import org.mockito.Mockito.reset
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ViewBoundFeatureWrapperTest {
|
class ViewBoundFeatureWrapperTest {
|
||||||
@@ -161,6 +163,7 @@ class ViewBoundFeatureWrapperTest {
|
|||||||
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
||||||
val view = View(activity)
|
val view = View(activity)
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(view.isAttachedToWindow)
|
assertTrue(view.isAttachedToWindow)
|
||||||
|
|
||||||
@@ -175,6 +178,7 @@ class ViewBoundFeatureWrapperTest {
|
|||||||
verify(wrapper, never()).clear()
|
verify(wrapper, never()).clear()
|
||||||
|
|
||||||
activity.windowManager.removeView(view)
|
activity.windowManager.removeView(view)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
verify(wrapper).clear()
|
verify(wrapper).clear()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package mozilla.components.support.base.observer
|
package mozilla.components.support.base.observer
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
@@ -25,6 +26,7 @@ import org.mockito.Mockito.spy
|
|||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ObserverRegistryTest {
|
class ObserverRegistryTest {
|
||||||
@@ -227,6 +229,7 @@ class ObserverRegistryTest {
|
|||||||
registry.register(observer3, MockedLifecycleOwner(Lifecycle.State.CREATED))
|
registry.register(observer3, MockedLifecycleOwner(Lifecycle.State.CREATED))
|
||||||
registry.register(observer4, view)
|
registry.register(observer4, view)
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(observer1.notified)
|
assertFalse(observer1.notified)
|
||||||
assertFalse(observer2.notified)
|
assertFalse(observer2.notified)
|
||||||
@@ -352,6 +355,7 @@ class ObserverRegistryTest {
|
|||||||
assertFalse(observer.notified)
|
assertFalse(observer.notified)
|
||||||
|
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
assertTrue(view.isAttachedToWindow)
|
assertTrue(view.isAttachedToWindow)
|
||||||
|
|
||||||
registry.notifyObservers {
|
registry.notifyObservers {
|
||||||
@@ -366,6 +370,7 @@ class ObserverRegistryTest {
|
|||||||
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
||||||
val view = View(testContext)
|
val view = View(testContext)
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val registry = ObserverRegistry<TestObserver>()
|
val registry = ObserverRegistry<TestObserver>()
|
||||||
val observer = TestObserver()
|
val observer = TestObserver()
|
||||||
@@ -385,6 +390,8 @@ class ObserverRegistryTest {
|
|||||||
observer.notified = false
|
observer.notified = false
|
||||||
|
|
||||||
activity.windowManager.removeView(view)
|
activity.windowManager.removeView(view)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(view.isAttachedToWindow)
|
assertFalse(view.isAttachedToWindow)
|
||||||
|
|
||||||
registry.notifyObservers {
|
registry.notifyObservers {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package mozilla.components.support.ktx.android.view
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
@@ -37,6 +38,7 @@ import org.mockito.Mockito.never
|
|||||||
import org.mockito.Mockito.spy
|
import org.mockito.Mockito.spy
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.shadows.ShadowLooper
|
import org.robolectric.shadows.ShadowLooper
|
||||||
import java.util.concurrent.CountDownLatch
|
import java.util.concurrent.CountDownLatch
|
||||||
@@ -148,6 +150,7 @@ class ViewTest {
|
|||||||
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
||||||
val view = View(testContext)
|
val view = View(testContext)
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertTrue(view.isAttachedToWindow)
|
assertTrue(view.isAttachedToWindow)
|
||||||
|
|
||||||
@@ -169,6 +172,7 @@ class ViewTest {
|
|||||||
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
val activity = Robolectric.buildActivity(Activity::class.java).create().get()
|
||||||
val view = View(testContext)
|
val view = View(testContext)
|
||||||
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
activity.windowManager.addView(view, WindowManager.LayoutParams(100, 100))
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
val scope = view.toScope()
|
val scope = view.toScope()
|
||||||
|
|
||||||
@@ -176,6 +180,7 @@ class ViewTest {
|
|||||||
assertTrue(scope.isActive)
|
assertTrue(scope.isActive)
|
||||||
|
|
||||||
activity.windowManager.removeView(view)
|
activity.windowManager.removeView(view)
|
||||||
|
shadowOf(getMainLooper()).idle()
|
||||||
|
|
||||||
assertFalse(view.isAttachedToWindow)
|
assertFalse(view.isAttachedToWindow)
|
||||||
assertFalse(scope.isActive)
|
assertFalse(scope.isActive)
|
||||||
|
|||||||
Reference in New Issue
Block a user