Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2745429641071660f77d69c64cd04727ee8e31c5
      
https://github.com/WebKit/WebKit/commit/2745429641071660f77d69c64cd04727ee8e31c5
  Author: Yoav Weiss <[email protected]>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M LayoutTests/TestExpectations
    M 
LayoutTests/imported/w3c/web-platform-tests/common/dispatcher/dispatcher.js
    A 
LayoutTests/imported/w3c/web-platform-tests/common/dispatcher/remote-executor.html
    A 
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/resources/ran.js
    M 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-bfcache.window-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/mixed-content/csp.https.window-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/reporting/resources/report-helper.js
    M 
LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/parsing_type=enforce-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/parsing_type=report-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/script.https-expected.txt
    M LayoutTests/platform/mac-wk1/TestExpectations
    A 
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/script.https-expected.txt
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources-input.xcfilelist
    M Source/WebCore/DerivedSources-output.xcfilelist
    M Source/WebCore/DerivedSources.make
    A Source/WebCore/Modules/reporting/IntegrityPolicyViolationReportBody.cpp
    A Source/WebCore/Modules/reporting/IntegrityPolicyViolationReportBody.h
    A Source/WebCore/Modules/reporting/IntegrityPolicyViolationReportBody.idl
    M Source/WebCore/Modules/reporting/ReportingObserver.cpp
    M Source/WebCore/Modules/reporting/ViolationReportType.h
    M Source/WebCore/Modules/url-pattern/URLPattern.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h
    M Source/WebCore/Modules/webdatabase/DatabaseManager.cpp
    M Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h
    M Source/WebCore/Modules/webtransport/WebTransportDatagramDuplexStream.cpp
    M Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp
    M Source/WebCore/Modules/webxr/WebXRSession.cpp
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/bindings/js/JSReportBodyCustom.cpp
    M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
    M Source/WebCore/dom/SecurityContext.cpp
    M Source/WebCore/dom/SecurityContext.h
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/loader/DocumentLoader.h
    M Source/WebCore/loader/FrameLoader.cpp
    A Source/WebCore/loader/IntegrityPolicy.cpp
    A Source/WebCore/loader/IntegrityPolicy.h
    M Source/WebCore/loader/PingLoader.cpp
    M Source/WebCore/loader/cache/CachedResourceLoader.cpp
    M Source/WebCore/platform/network/HTTPHeaderNames.in
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Implement Integrity-Policy for scripts
https://bugs.webkit.org/show_bug.cgi?id=293433

Reviewed by Sam Weinig.

This PR implements the Integrity-Policy header and enforces it on script 
destinations.

* LayoutTests/TestExpectations: Deleted expectations for Integrity-Policy tests.
* LayoutTests/imported/w3c/web-platform-tests/common/dispatcher/dispatcher.js: 
Imported the latest from WPT.
* 
LayoutTests/imported/w3c/web-platform-tests/common/dispatcher/remote-executor.html:
 Imported the latest from WPT.
* 
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/resources/ran.js:
 Imported the latest from WPT.
* 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-bfcache.window-expected.txt:
 Expectation change due to imports.
* 
LayoutTests/imported/w3c/web-platform-tests/mixed-content/csp.https.window-expected.txt:
 Progression due to imports.
* 
LayoutTests/imported/w3c/web-platform-tests/reporting/resources/report-helper.js:
(getReport): Ensured that blockedURL also counts towards getting a report.
* 
LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/parsing_type=enforce-expected.txt:
 Adjusted expectations.
* 
LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/parsing_type=report-expected.txt:
 Adjusted expectations.
* 
LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/script.https-expected.txt:
 Adjusted expectations.
* 
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/script.https-expected.txt:
 Added failing expectation, due to https issues with reporting.
* LayoutTests/platform/mac-wk1/TestExpectations: Set expectations for 
reporting-based tests to fail on WK1.
* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm: Include DocumentInlines.h 
from JS*Document cpp files.
* Source/WebCore/CMakeLists.txt: Add IntegrityPolicyViolationReportBody.idl
* Source/WebCore/DerivedSources-input.xcfilelist: Add 
IntegrityPolicyViolationReportBody.idl
* Source/WebCore/DerivedSources-output.xcfilelist: Add 
IntegrityPolicyViolationReportBody.idl
* Source/WebCore/DerivedSources.make: Add IntegrityPolicyViolationReportBody.idl
* Source/WebCore/Headers.cmake: Add IntegrityPolicyViolationReportBody.h
* Source/WebCore/Modules/reporting/IntegrityPolicyViolationReportBody.cpp: 
Added.
(WebCore::IntegrityPolicyViolationReportBody::IntegrityPolicyViolationReportBody):
(WebCore::IntegrityPolicyViolationReportBody::create):
(WebCore::IntegrityPolicyViolationReportBody::type const):
(WebCore::IntegrityPolicyViolationReportBody::documentURL const):
(WebCore::IntegrityPolicyViolationReportBody::blockedURL const):
(WebCore::IntegrityPolicyViolationReportBody::destination const):
(WebCore::IntegrityPolicyViolationReportBody::reportOnly const):
* Source/WebCore/Modules/reporting/IntegrityPolicyViolationReportBody.h: Added.
(isType):
* Source/WebCore/Modules/reporting/IntegrityPolicyViolationReportBody.idl:
* Source/WebCore/Modules/reporting/ReportingObserver.cpp:
(WebCore::isVisibleToReportingObservers): Add "integrity-violation" as a 
visible observer.
* Source/WebCore/Modules/reporting/ViolationReportType.h: Add IntegrityPolicy 
as a report type.
* Source/WebCore/Modules/url-pattern/URLPattern.cpp: Add required header 
include.
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h: Add required header 
include.
* Source/WebCore/Modules/webdatabase/DatabaseManager.cpp: Add required header 
include.
* Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h: Fix C++ 
safety issues.
* Source/WebCore/Modules/webtransport/WebTransportDatagramDuplexStream.cpp: Add 
required header include.
* Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp: Add required 
header include.
* Source/WebCore/Modules/webxr/WebXRSession.cpp: Add required header include.
* Source/WebCore/Sources.txt: Add IntegrityPolicyViolationReportBody.cpp (and 
its JS eq equivalent), and IntegrityPolicy.cpp
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/JSReportBodyCustom.cpp:
(WebCore::toJSNewlyCreated): Add IntegrityViolation handling.
* Source/WebCore/dom/SecurityContext.cpp: Define getters/setters.
(WebCore::SecurityContext::~SecurityContext):
(WebCore::SecurityContext::integrityPolicy const):
(WebCore::SecurityContext::setIntegrityPolicy):
(WebCore::SecurityContext::integrityPolicyReportOnly const):
(WebCore::SecurityContext::setIntegrityPolicyReportOnly):
* Source/WebCore/dom/SecurityContext.h: Add integrityPolicy and 
integrityPolicyReportOnly.
(WebCore::SecurityContext::integrityPolicy const):
(WebCore::SecurityContext::setIntegrityPolicy):
(WebCore::SecurityContext::integrityPolicyReportOnly const):
(WebCore::SecurityContext::setIntegrityPolicyReportOnly):
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::responseReceived): Process the Integrity-Policy 
headers.
(WebCore::DocumentLoader::integrityPolicy): Getter impl.
(WebCore::DocumentLoader::integrityPolicyReportOnly): Getter impl.
* Source/WebCore/loader/DocumentLoader.h: Hold unique_ptr for integrityPolicy 
and integrityPolicyReportOnly and move them when requested.
(WebCore::DocumentLoader::integrityPolicy):
(WebCore::DocumentLoader::integrityPolicyReportOnly):
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument): Set integrityPolicy and 
integrityPolicyReportOnly on Document.
* Source/WebCore/loader/IntegrityPolicy.cpp: Added.
(WebCore::reportViolation): Report an integrity violation.
(WebCore::processIntegrityPolicy): Parse and process an integrity policy header.
(WebCore::shouldRequestBeBlockedByIntegrityPolicy): Asses if a request should 
be blocked due to integrity policy.
* Source/WebCore/loader/IntegrityPolicy.h:
* Source/WebCore/loader/PingLoader.cpp:
(WebCore::PingLoader::sendViolationReport): Add IntegrityPolicy as a violation 
report type.
* Source/WebCore/loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::canRequest): call 
shouldRequestBeBlockedByIntegrityPolicy.
* Source/WebCore/platform/network/HTTPHeaderNames.in: Add Integrity-Policy and 
Integrity-Policy-Report-Only headers
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/295903@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to