From 5b8629f25078bb293cf66632bc1267cd0466bc46 Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Sat, 17 Aug 2024 13:27:35 +0100 Subject: [PATCH] LibWeb/HTML: Update "can have its URL rewritten" for spec changes This updates the spec comments and removes a FIXME. Functionally, this doesn't change anything as a fix was already in place. See: - https://github.com/whatwg/html/commit/89a387c - https://github.com/whatwg/html/issues/10551 (cherry picked from commit aac342bf7445a2ef9407c45ac66615ac3d0e97ce) --- Userland/Libraries/LibWeb/HTML/History.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/History.cpp b/Userland/Libraries/LibWeb/HTML/History.cpp index 7f9e5b8f0087f2..36e99ea6437e4d 100644 --- a/Userland/Libraries/LibWeb/HTML/History.cpp +++ b/Userland/Libraries/LibWeb/HTML/History.cpp @@ -148,18 +148,20 @@ bool can_have_its_url_rewritten(DOM::Document const& document, URL::URL const& t if (target_url.scheme() == "http"sv || target_url.scheme() == "https"sv) return true; - // 4. If targetURL's scheme is "file", and targetURL and documentURL differ in their path component, - // then return false. (Differences in query and fragment are allowed for file: URLs.) - // FIXME: There's a bug in the spec here. We should return true if the scheme is "file" and the path components don't differ. - // Spec bug: https://github.com/whatwg/html/issues/10551 - bool path_components_match = target_url.paths() == document_url.paths(); + // 4. If targetURL's scheme is "file", then: + // (Differences in query and fragment are allowed for file: URLs.) if (target_url.scheme() == "file"sv) { - return path_components_match; + // 1. If targetURL and documentURL differ in their path component, then return false. + if (target_url.paths() != document_url.paths()) + return false; + + // 2. Return true. + return true; } // 5. If targetURL and documentURL differ in their path component or query components, then return false. // (Only differences in fragment are allowed for other types of URLs.) - if (!path_components_match || target_url.query() != document_url.query()) + if (target_url.paths() != document_url.paths() || target_url.query() != document_url.query()) return false; // 6. Return true.