@@ -265,9 +265,13 @@ class RealDuckPlayer @Inject constructor(
265
265
return uri.host?.removePrefix(" www." ) == embedUrl
266
266
}
267
267
268
- private fun isYouTubeNoCookieEmbedUri (uri : Uri ): Boolean {
269
- // TODO (cbarreiro) check video ID against webView URL
270
- return isYouTubeNoCookieUri(uri) && uri.pathSegments.firstOrNull() == " embed"
268
+ private fun isYouTubeNoCookieEmbedUri (
269
+ uri : Uri ,
270
+ webViewUrl : String? ,
271
+ ): Boolean {
272
+ webViewUrl ? : return false
273
+ if (! isYouTubeNoCookieUri(uri) || uri.pathSegments.firstOrNull() != " embed" ) return false
274
+ return webViewUrl.toUri().getQueryParameter(DUCK_PLAYER_VIDEO_ID_QUERY_PARAM ) == uri.pathSegments.getOrNull(1 )
271
275
}
272
276
273
277
override fun isSimulatedYoutubeNoCookie (uri : Uri ): Boolean {
@@ -319,11 +323,12 @@ class RealDuckPlayer @Inject constructor(
319
323
return processDuckPlayerUri(url, webView)
320
324
} else {
321
325
if (! isFeatureEnabled) return null
326
+ val webViewUrl = withContext(dispatchers.main()) { webView.url }
322
327
if (isYoutubeWatchUrl(url)) {
323
328
return processYouTubeWatchUri(request, url, webView)
324
329
} else if (isSimulatedYoutubeNoCookie(url)) {
325
330
return processSimulatedYouTubeNoCookieUri(url, webView)
326
- } else if (duckPlayerFeature.addCustomEmbedReferer().isEnabled() && isYouTubeNoCookieEmbedUri(url)) {
331
+ } else if (duckPlayerFeature.addCustomEmbedReferer().isEnabled() && isYouTubeNoCookieEmbedUri(url, webViewUrl )) {
327
332
return try {
328
333
WebResourceResponse (" text/html" , " UTF-8" , getEmbedWithReferer(request))
329
334
} catch (e: IOException ) {
0 commit comments