Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8ce95bb31076b2a39f7450cb0018f30da1294a58
https://github.com/WebKit/WebKit/commit/8ce95bb31076b2a39f7450cb0018f30da1294a58
Author: Patrick Griffis <[email protected]>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/Headers.cmake
M Source/WebCore/Modules/url-pattern/URLPattern.cpp
M Source/WebCore/Modules/url-pattern/URLPattern.h
M Source/WebCore/Modules/url-pattern/URLPatternComponent.cpp
M Source/WebCore/Modules/url-pattern/URLPatternComponent.h
M Source/WebCore/Modules/url-pattern/URLPatternParser.cpp
A Source/WebCore/Modules/url-pattern/URLPatternPartListMatcher.cpp
A Source/WebCore/Modules/url-pattern/URLPatternPartListMatcher.h
M Source/WebCore/PlatformCocoa.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/SourcesCMakeCocoa.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/workers/service/ServiceWorkerRoute.cpp
M Source/WebCore/workers/service/ServiceWorkerRoute.h
R Source/WebCore/workers/service/ServiceWorkerRoute.mm
M Tools/TestWebKitAPI/Tests/WebCore/URLPatternTests.cpp
Log Message:
-----------
Use shared URLPattern matching for ServiceWorker routes
https://bugs.webkit.org/show_bug.cgi?id=319900
Reviewed by Jessica Lee.
This adds a non-regex matching path to URLPattern whos
purpose is to be used by the NetworkProcess for standards
such as service workers and compression-dictionary.
It works on every port and does not use a regex engine
on Apple ports any more. It also helps ensure that every
user stays spec-compliant.
This move revealed some bugs in URLParser, that it did not
use the correct encoding for user/password. It also didn't
handle unclosed groups.
Test: Tools/TestWebKitAPI/Tests/WebCore/URLPatternTests.cpp
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/url-pattern/URLPattern.cpp:
(WebCore::processInitForCreate):
(WebCore::URLPattern::create):
(WebCore::URLPattern::createWithoutRegExpSupport):
(WebCore::URLPattern::compileAllComponents):
(WebCore::URLPattern::testWithoutRegExp const):
* Source/WebCore/Modules/url-pattern/URLPattern.h:
* Source/WebCore/Modules/url-pattern/URLPatternComponent.cpp:
(WebCore::URLPatternUtilities::URLPatternComponent::operator=):
(WebCore::URLPatternUtilities::URLPatternComponent::URLPatternComponent):
(WebCore::URLPatternUtilities::URLPatternComponent::compileWithoutRegExp):
(WebCore::URLPatternUtilities::URLPatternComponent::matchesWithoutRegExp const):
(WebCore::URLPatternUtilities::URLPatternComponent::matchSpecialSchemeProtocol
const):
* Source/WebCore/Modules/url-pattern/URLPatternComponent.h:
* Source/WebCore/Modules/url-pattern/URLPatternParser.cpp:
(WebCore::URLPatternUtilities::URLPatternParser::performParse):
* Source/WebCore/Modules/url-pattern/URLPatternPartListMatcher.cpp: Added.
(WebCore::URLPatternUtilities::literalMatchesAt):
(WebCore::URLPatternUtilities::isComponentDelimiter):
(WebCore::URLPatternUtilities::appendSingleOccurrenceEnds):
(WebCore::URLPatternUtilities::markReachableEnds):
(WebCore::URLPatternUtilities::matchPartListFrom):
(WebCore::URLPatternUtilities::URLPatternPartListMatcher::URLPatternPartListMatcher):
(WebCore::URLPatternUtilities::URLPatternPartListMatcher::matches const):
* Source/WebCore/Modules/url-pattern/URLPatternPartListMatcher.h: Renamed from
Source/WebCore/workers/service/ServiceWorkerRoute.mm.
* Source/WebCore/PlatformCocoa.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/SourcesCMakeCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/workers/service/ServiceWorkerRoute.cpp:
(WebCore::compileRoutePattern):
(WebCore::validateServiceWorkerRouteCondition):
(WebCore::matchURLPattern):
(WebCore::computeOptions): Deleted.
(WebCore::validateAndCompileURLPatternComponent): Deleted.
(WebCore::validateAndUpdateURLPatternComponent): Deleted.
(WebCore::matchURLPatternComponent): Deleted.
* Source/WebCore/workers/service/ServiceWorkerRoute.h:
* Tools/TestWebKitAPI/Tests/WebCore/URLPatternTests.cpp:
(TestWebKitAPI::URLPatternTest::makePatternWithoutRegExp):
(TestWebKitAPI::URLPatternTest::expectWithoutRegExpAgreesWithRegExp):
(TestWebKitAPI::TEST_F(URLPatternTest, UnclosedGroupReturnsException)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpMatchesExactURL)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpNoMatchDifferentHostOrProtocol)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpNamedSegmentDoesNotCrossDelimiter)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpFullWildcardCrossesDelimiter)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpPrefixSuffixLiterals)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpBaseURLRelativePattern)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpSearchAndHash)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpWildcardSearchAndHash)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpZeroOrMoreGroup)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpOneOrMoreGroup)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpIgnoreCase)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpIgnoreCaseIsOnlyWhenRequested)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpIgnoreCaseAgreesWithRegExpPath)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpIgnoreCaseUnicodeAgreesWithRegExpPath)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpRejectsRegExpGroups)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpRejectsRegExpGroupFromConstructorString)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpRejectsNamedRegExpGroup)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpRejectsRegExpGroupInHostname)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpRejectsRegExpGroupInSearch)):
(TestWebKitAPI::TEST_F(URLPatternTest,
WithoutRegExpAllowsWildcardsAndNamedSegments)):
(TestWebKitAPI::TEST_F(URLPatternTest, WithoutRegExpAgreesWithRegExpPath)):
Canonical link: https://commits.webkit.org/320122@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications