diff --git a/app/src/main/java/org/mozilla/fenix/components/UrlRequestInterceptor.kt b/app/src/main/java/org/mozilla/fenix/components/UrlRequestInterceptor.kt index 0c113755b..675b4c6af 100644 --- a/app/src/main/java/org/mozilla/fenix/components/UrlRequestInterceptor.kt +++ b/app/src/main/java/org/mozilla/fenix/components/UrlRequestInterceptor.kt @@ -11,6 +11,8 @@ import mozilla.components.concept.engine.EngineSession.LoadUrlFlags.Companion.AL 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 java.net.MalformedURLException +import java.net.URL /** * [RequestInterceptor] implementation for intercepting URL load requests to allow custom @@ -23,6 +25,7 @@ class UrlRequestInterceptor(private val isDeviceRamAboveThreshold: Boolean) : Re private val isGoogleRequest by lazy { Regex("^https://www\\.google\\..+") } + private val googleRequestPaths = setOf("/search", "/webhp", "/preferences") @VisibleForTesting internal fun getAdditionalHeaders(isDeviceRamAboveThreshold: Boolean): Map { @@ -42,7 +45,15 @@ class UrlRequestInterceptor(private val isDeviceRamAboveThreshold: Boolean) : Re uri: String, isSubframeRequest: Boolean, ): Boolean { - return !isSubframeRequest && isGoogleRequest.containsMatchIn(uri) + if (isSubframeRequest || !isGoogleRequest.containsMatchIn(uri)) { + return false + } + + return try { + googleRequestPaths.contains(URL(uri).path) + } catch (e: MalformedURLException) { + false + } } override fun onLoadRequest( diff --git a/app/src/test/java/org/mozilla/fenix/components/UrlRequestInterceptorTest.kt b/app/src/test/java/org/mozilla/fenix/components/UrlRequestInterceptorTest.kt index a53dde2d8..f323adb3c 100644 --- a/app/src/test/java/org/mozilla/fenix/components/UrlRequestInterceptorTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/UrlRequestInterceptorTest.kt @@ -60,7 +60,7 @@ class UrlRequestInterceptorTest { fun `WHEN should intercept request is called THEN return the correct boolean value`() { val urlRequestInterceptor = getUrlRequestInterceptor() - assertTrue( + assertFalse( urlRequestInterceptor.shouldInterceptRequest( uri = "https://www.google.com", isSubframeRequest = false, @@ -128,8 +128,8 @@ class UrlRequestInterceptorTest { } @Test - fun `WHEN a Google request is loaded THEN request is intercepted`() { - val uri = "https://www.google.com" + fun `WHEN a Google preferences request is loaded THEN request is intercepted`() { + val uri = "https://www.google.com/preferences" assertEquals( RequestInterceptor.InterceptionResponse.Url(