Skip to content

Commit a79153b

Browse files
committed
Web Manifest: scope url should strip both query and fragment components
https://bugs.webkit.org/show_bug.cgi?id=273989 rdar://127863839 Reviewed by Brady Eidson. Removes the query and fragment components from the scope URL. Part of w3c/manifest#1122 * Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp: (WebCore::ApplicationManifestParser::parseScope): * Tools/TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp: (TEST_F): Canonical link: https://commits.webkit.org/278795@main
1 parent f276033 commit a79153b

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,8 @@ std::optional<URL> ApplicationManifestParser::parseScope(const JSON::Object& man
486486
return std::nullopt;
487487
}
488488

489+
scopeURL.removeQueryAndFragmentIdentifier();
490+
489491
return scopeURL;
490492
}
491493

Tools/TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,18 @@ TEST_F(ApplicationManifestParserTest, Scope)
564564
m_startURL = URL { "https://example.com/documents/home"_s };
565565
m_manifestURL = URL { "https://example.com/resources/manifest.json"_s };
566566

567+
// Removes query
568+
testScope("\"https://example.com/documents/home?query\""_s, "https://example.com/documents/home"_s, false);
569+
testScope("\"https://example.com/documents/home?query=whatever\""_s, "https://example.com/documents/home"_s, false);
570+
571+
// Removes fragment
572+
testScope("\"https://example.com/documents/home#\""_s, "https://example.com/documents/home"_s, false);
573+
testScope("\"https://example.com/documents/home#fragment\""_s, "https://example.com/documents/home"_s, false);
574+
575+
// Removes query and fragment
576+
testScope("\"https://example.com/documents/home?#\""_s, "https://example.com/documents/home"_s, false);
577+
testScope("\"https://example.com/documents/home?query#fragment\""_s, "https://example.com/documents/home"_s, false);
578+
567579
// It's fine if the document URL or manifest URL aren't within the application scope - only the start URL needs to be.
568580
testScope("\"https://example.com/other\""_s, "https://example.com/other/start-url"_s, "https://example.com/other"_s, false);
569581
}

0 commit comments

Comments
 (0)