@@ -17,10 +17,7 @@ import androidx.webkit.WebViewFeature.*
17
17
import dev.hotwire.turbo.config.TurboPathConfiguration
18
18
import dev.hotwire.turbo.config.screenshotsEnabled
19
19
import dev.hotwire.turbo.delegates.TurboFileChooserDelegate
20
- import dev.hotwire.turbo.http.TurboHttpClient
21
- import dev.hotwire.turbo.http.TurboHttpRepository
22
- import dev.hotwire.turbo.http.TurboOfflineRequestHandler
23
- import dev.hotwire.turbo.http.TurboPreCacheRequest
20
+ import dev.hotwire.turbo.http.*
24
21
import dev.hotwire.turbo.nav.TurboNavDestination
25
22
import dev.hotwire.turbo.util.*
26
23
import dev.hotwire.turbo.views.TurboWebView
@@ -54,6 +51,7 @@ class TurboSession internal constructor(
54
51
internal var restorationIdentifiers = SparseArray <String >()
55
52
internal val context: Context = activity.applicationContext
56
53
internal val httpRepository = TurboHttpRepository (activity.lifecycleScope)
54
+ internal val requestInterceptor = TurboWebViewRequestInterceptor (this )
57
55
internal val fileChooserDelegate = TurboFileChooserDelegate (this )
58
56
59
57
// User accessible
@@ -648,37 +646,7 @@ class TurboSession internal constructor(
648
646
}
649
647
650
648
override fun shouldInterceptRequest (view : WebView , request : WebResourceRequest ): WebResourceResponse ? {
651
- val requestHandler = offlineRequestHandler ? : return null
652
-
653
- if (! request.method.equals(" GET" , ignoreCase = true ) ||
654
- request.url.scheme?.startsWith(" HTTP" , ignoreCase = true ) != true
655
- ) {
656
- return null
657
- }
658
-
659
- val url = request.url.toString()
660
- val isCurrentVisitRequest = url == currentVisit?.location
661
- val result = httpRepository.fetch(requestHandler, request)
662
-
663
- return if (isCurrentVisitRequest && result.redirectToLocation != null ) {
664
- // Let Turbo see the redirect, so a redirect "replace" visit can be proposed
665
- logEvent(" shouldInterceptRequest" ,
666
- " location" to url,
667
- " redirectToLocation" to result.redirectToLocation,
668
- " statusCode" to (result.response?.statusCode ? : " <none>" )
669
- )
670
- null
671
- } else if (isCurrentVisitRequest) {
672
- logEvent(" shouldInterceptRequest" ,
673
- " location" to url,
674
- " statusCode" to (result.response?.statusCode ? : " <none>" ),
675
- " completedOffline" to result.offline
676
- )
677
- currentVisit?.completedOffline = result.offline
678
- result.response
679
- } else {
680
- result.response
681
- }
649
+ return requestInterceptor.interceptRequest(request)
682
650
}
683
651
684
652
override fun onReceivedError (view : WebView , request : WebResourceRequest , error : WebResourceErrorCompat ) {
0 commit comments