From 5776f2879f513ff44b86434201b3901a7613106e Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Sat, 23 Mar 2024 23:12:45 +0000
Subject: [PATCH] Issue #3397558 by mfb: OEmbed generates URLs with URL-decoded
 query string

---
 core/modules/media/src/OEmbed/UrlResolver.php             | 2 +-
 .../media/tests/src/Functional/UrlResolverTest.php        | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/core/modules/media/src/OEmbed/UrlResolver.php b/core/modules/media/src/OEmbed/UrlResolver.php
index 0c0ae9337773..50f9b2df541b 100644
--- a/core/modules/media/src/OEmbed/UrlResolver.php
+++ b/core/modules/media/src/OEmbed/UrlResolver.php
@@ -176,7 +176,7 @@ public function getResourceUrl($url, $max_width = NULL, $max_height = NULL) {
     // provide extra parameters in the query string. For example, Instagram also
     // supports the 'omitscript' parameter.
     $this->moduleHandler->alter('oembed_resource_url', $parsed_url, $provider);
-    $resource_url = $parsed_url['path'] . '?' . rawurldecode(UrlHelper::buildQuery($parsed_url['query']));
+    $resource_url = $parsed_url['path'] . '?' . UrlHelper::buildQuery($parsed_url['query']);
 
     $this->urlCache[$url] = $resource_url;
     $this->cacheBackend->set($cache_id, $resource_url);
diff --git a/core/modules/media/tests/src/Functional/UrlResolverTest.php b/core/modules/media/tests/src/Functional/UrlResolverTest.php
index 43ac2f1402a2..201a73e8f922 100644
--- a/core/modules/media/tests/src/Functional/UrlResolverTest.php
+++ b/core/modules/media/tests/src/Functional/UrlResolverTest.php
@@ -45,19 +45,19 @@ public static function providerEndpointMatching() {
     return [
       'match by endpoint: Twitter' => [
         'https://twitter.com/Dries/status/999985431595880448',
-        'https://publish.twitter.com/oembed?url=https://twitter.com/Dries/status/999985431595880448',
+        'https://publish.twitter.com/oembed?url=https%3A//twitter.com/Dries/status/999985431595880448',
       ],
       'match by endpoint: Vimeo' => [
         'https://vimeo.com/14782834',
-        'https://vimeo.com/api/oembed.json?url=https://vimeo.com/14782834',
+        'https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/14782834',
       ],
       'match by endpoint: Dailymotion' => [
         'https://www.dailymotion.com/video/x2vzluh',
-        'https://www.dailymotion.com/services/oembed?url=https://www.dailymotion.com/video/x2vzluh',
+        'https://www.dailymotion.com/services/oembed?url=https%3A//www.dailymotion.com/video/x2vzluh',
       ],
       'match by endpoint: Facebook' => [
         'https://www.facebook.com/facebook/videos/10153231379946729/',
-        'https://www.facebook.com/plugins/video/oembed.json?url=https://www.facebook.com/facebook/videos/10153231379946729/',
+        'https://www.facebook.com/plugins/video/oembed.json?url=https%3A//www.facebook.com/facebook/videos/10153231379946729/',
       ],
     ];
   }
-- 
GitLab