Bug 1875668 - Bypass cache when intercepting site in desktop mode

(cherry picked from commit 775987289cb212ce0ef6cb843cc6f6954dcb9c5b)
fenix/124.1.0
Roger Yang 3 months ago committed by mergify[bot]
parent 96ca9c9ac0
commit c8aba76bae

@ -8,6 +8,7 @@ import androidx.annotation.VisibleForTesting
import mozilla.components.concept.engine.EngineSession
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.ALLOW_ADDITIONAL_HEADERS
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.BYPASS_CACHE
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE
import mozilla.components.concept.engine.request.RequestInterceptor
@ -58,12 +59,24 @@ class UrlRequestInterceptor(private val isDeviceRamAboveThreshold: Boolean) : Re
return null
}
return RequestInterceptor.InterceptionResponse.Url(
url = uri,
flags = LoadUrlFlags.select(
// This is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1875668
// Remove this by implementing https://bugzilla.mozilla.org/show_bug.cgi?id=1883496
val loadUrlFlags = if (uri.endsWith("#ip=1", true)) {
LoadUrlFlags.select(
LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE,
ALLOW_ADDITIONAL_HEADERS,
BYPASS_CACHE,
)
} else {
LoadUrlFlags.select(
LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE,
ALLOW_ADDITIONAL_HEADERS,
),
)
}
return RequestInterceptor.InterceptionResponse.Url(
url = uri,
flags = loadUrlFlags,
additionalHeaders = getAdditionalHeaders(isDeviceRamAboveThreshold),
)
}

@ -8,6 +8,7 @@ import io.mockk.mockk
import mozilla.components.concept.engine.EngineSession
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.ALLOW_ADDITIONAL_HEADERS
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.BYPASS_CACHE
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE
import mozilla.components.concept.engine.request.RequestInterceptor
import org.junit.Assert.assertEquals
@ -147,6 +148,27 @@ class UrlRequestInterceptorTest {
)
}
@Test
fun `WHEN a Google request end in #ip=1 is loaded THEN request bypass cache`() {
val uri = "https://www.google.com/search?q=test&ie=utf-8#ip=1"
assertEquals(
RequestInterceptor.InterceptionResponse.Url(
url = uri,
flags = LoadUrlFlags.select(
BYPASS_CACHE,
LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE,
ALLOW_ADDITIONAL_HEADERS,
),
additionalHeaders = mapOf(
"X-Search-Subdivision" to "0",
),
),
getUrlRequestInterceptor().onLoadRequest(
uri = uri,
),
)
}
@Test
fun `WHEN a Google search request is loaded THEN request is intercepted`() {
val uri = "https://www.google.com/search?q=blue"

Loading…
Cancel
Save