Commit 16a49583 authored by Christian Sadilek's avatar Christian Sadilek Committed by Sebastian Kaspari
Browse files

Closes #3521: Expose GeckoView load flags for loadUrl calls

parent 3118e9b8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -89,9 +89,9 @@ class GeckoEngineSession(
    /**
     * See [EngineSession.loadUrl]
     */
    override fun loadUrl(url: String) {
    override fun loadUrl(url: String, flags: LoadUrlFlags) {
        requestFromWebContent = false
        geckoSession.loadUri(url)
        geckoSession.loadUri(url, flags.value)
    }

    /**
+15 −3
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import kotlinx.coroutines.test.runBlockingTest
import mozilla.components.browser.errorpages.ErrorType
import mozilla.components.concept.engine.DefaultSettings
import mozilla.components.concept.engine.EngineSession
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy
import mozilla.components.concept.engine.HitResult
import mozilla.components.concept.engine.UnsupportedSettingException
@@ -302,8 +303,10 @@ class GeckoEngineSessionTest {
                geckoSessionProvider = geckoSessionProvider)

        engineSession.loadUrl("http://mozilla.org")
        verify(geckoSession).loadUri("http://mozilla.org", GeckoSession.LOAD_FLAGS_NONE)

        verify(geckoSession).loadUri("http://mozilla.org")
        engineSession.loadUrl("http://www.mozilla.org", LoadUrlFlags.select(LoadUrlFlags.EXTERNAL))
        verify(geckoSession).loadUri("http://www.mozilla.org", GeckoSession.LOAD_FLAGS_EXTERNAL)
    }

    @Test
@@ -988,7 +991,7 @@ class GeckoEngineSessionTest {
        navigationDelegate.value.onLoadRequest(geckoSession, mockLoadRequest("sample:about"))

        assertEquals("sample:about", interceptorCalledWithUri)
        verify(geckoSession).loadUri("https://mozilla.org")
        verify(geckoSession).loadUri("https://mozilla.org", GeckoSession.LOAD_FLAGS_NONE)
    }

    @Test
@@ -1693,7 +1696,7 @@ class GeckoEngineSessionTest {

        // loadUrl(url: String)
        engineSession.loadUrl(fakeUrl)
        verify(geckoSession).loadUri(fakeUrl)
        verify(geckoSession).loadUri(fakeUrl, GeckoSession.LOAD_FLAGS_NONE)
        fakePageLoad(false)

        // subsequent page loads _are_ from web content
@@ -1761,6 +1764,15 @@ class GeckoEngineSessionTest {
        verify(observer, never()).onLoadRequest(eq("sample:about"), anyBoolean(), anyBoolean())
    }

    @Test
    fun loadFlagsAreAligned() {
        assertEquals(LoadUrlFlags.BYPASS_CACHE, GeckoSession.LOAD_FLAGS_BYPASS_CACHE)
        assertEquals(LoadUrlFlags.BYPASS_PROXY, GeckoSession.LOAD_FLAGS_BYPASS_PROXY)
        assertEquals(LoadUrlFlags.EXTERNAL, GeckoSession.LOAD_FLAGS_EXTERNAL)
        assertEquals(LoadUrlFlags.ALLOW_POPUPS, GeckoSession.LOAD_FLAGS_ALLOW_POPUPS)
        assertEquals(LoadUrlFlags.BYPASS_CLASSIFIER, GeckoSession.LOAD_FLAGS_BYPASS_CLASSIFIER)
    }

    private fun mockGeckoSession(): GeckoSession {
        val session = mock<GeckoSession>()
        whenever(session.settings).thenReturn(
+2 −2
Original line number Diff line number Diff line
@@ -90,9 +90,9 @@ class GeckoEngineSession(
    /**
     * See [EngineSession.loadUrl]
     */
    override fun loadUrl(url: String) {
    override fun loadUrl(url: String, flags: LoadUrlFlags) {
        requestFromWebContent = false
        geckoSession.loadUri(url)
        geckoSession.loadUri(url, flags.value)
    }

    /**
+15 −3
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import kotlinx.coroutines.test.runBlockingTest
import mozilla.components.browser.errorpages.ErrorType
import mozilla.components.concept.engine.DefaultSettings
import mozilla.components.concept.engine.EngineSession
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy
import mozilla.components.concept.engine.HitResult
import mozilla.components.concept.engine.UnsupportedSettingException
@@ -327,8 +328,10 @@ class GeckoEngineSessionTest {
                geckoSessionProvider = geckoSessionProvider)

        engineSession.loadUrl("http://mozilla.org")
        verify(geckoSession).loadUri("http://mozilla.org", GeckoSession.LOAD_FLAGS_NONE)

        verify(geckoSession).loadUri("http://mozilla.org")
        engineSession.loadUrl("http://www.mozilla.org", LoadUrlFlags.select(LoadUrlFlags.EXTERNAL))
        verify(geckoSession).loadUri("http://www.mozilla.org", GeckoSession.LOAD_FLAGS_EXTERNAL)
    }

    @Test
@@ -1013,7 +1016,7 @@ class GeckoEngineSessionTest {
        navigationDelegate.value.onLoadRequest(geckoSession, mockLoadRequest("sample:about"))

        assertEquals("sample:about", interceptorCalledWithUri)
        verify(geckoSession).loadUri("https://mozilla.org")
        verify(geckoSession).loadUri("https://mozilla.org", GeckoSession.LOAD_FLAGS_NONE)
    }

    @Test
@@ -1722,7 +1725,7 @@ class GeckoEngineSessionTest {

        // loadUrl(url: String)
        engineSession.loadUrl(fakeUrl)
        verify(geckoSession).loadUri(fakeUrl)
        verify(geckoSession).loadUri(fakeUrl, GeckoSession.LOAD_FLAGS_NONE)
        fakePageLoad(false)

        // subsequent page loads _are_ from web content
@@ -1791,6 +1794,15 @@ class GeckoEngineSessionTest {
        verify(observer, never()).onLoadRequest(eq(fakeUri), anyBoolean(), anyBoolean())
    }

    @Test
    fun loadFlagsAreAligned() {
        assertEquals(LoadUrlFlags.BYPASS_CACHE, GeckoSession.LOAD_FLAGS_BYPASS_CACHE)
        assertEquals(LoadUrlFlags.BYPASS_PROXY, GeckoSession.LOAD_FLAGS_BYPASS_PROXY)
        assertEquals(LoadUrlFlags.EXTERNAL, GeckoSession.LOAD_FLAGS_EXTERNAL)
        assertEquals(LoadUrlFlags.ALLOW_POPUPS, GeckoSession.LOAD_FLAGS_ALLOW_POPUPS)
        assertEquals(LoadUrlFlags.BYPASS_CLASSIFIER, GeckoSession.LOAD_FLAGS_BYPASS_CLASSIFIER)
    }

    private fun mockGeckoSession(): GeckoSession {
        val session = mock<GeckoSession>()
        whenever(session.settings).thenReturn(
+2 −2
Original line number Diff line number Diff line
@@ -85,9 +85,9 @@ class GeckoEngineSession(
    /**
     * See [EngineSession.loadUrl]
     */
    override fun loadUrl(url: String) {
    override fun loadUrl(url: String, flags: LoadUrlFlags) {
        requestFromWebContent = false
        geckoSession.loadUri(url)
        geckoSession.loadUri(url, flags.value)
    }

    /**
Loading