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

Reply via email to