haikuwebkit/Source/WebCore/platform/ReferrerPolicy.cpp

118 lines
5.0 KiB
C++
Raw Permalink Normal View History

The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
/*
* Copyright (C) 2018 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "ReferrerPolicy.h"
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
#include "HTTPParsers.h"
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
namespace WebCore {
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
enum class ShouldParseLegacyKeywords { No, Yes };
Remove WTF::Optional synonym for std::optional, using that class template directly instead https://bugs.webkit.org/show_bug.cgi?id=226433 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * inspector/scripts/codegen/generate_objc_protocol_types_implementation.py: (ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead of Optional<>. Also use * instead of value() and nest the definition of the local inside an if statement in the case where it's an optional. * inspector/scripts/tests/expected/*: Regenerated these results. Source/WebCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebCore/PAL: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebDriver: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKit: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * Scripts/webkit/tests: Regenerated expected results, by running the command "python Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?) Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/mac: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/win: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WTF: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * wtf/Optional.h: Remove WTF::Optional. Tools: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Canonical link: https://commits.webkit.org/238290@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278253 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-30 16:11:40 +00:00
static std::optional<ReferrerPolicy> parseReferrerPolicyToken(StringView policy, ShouldParseLegacyKeywords shouldParseLegacyKeywords)
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
{
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
// "never" / "default" / "always" are legacy keywords that we support and still defined in the HTML specification:
// https://html.spec.whatwg.org/#meta-referrer
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
if (shouldParseLegacyKeywords == ShouldParseLegacyKeywords::Yes) {
if (equalLettersIgnoringASCIICase(policy, "never"))
return ReferrerPolicy::NoReferrer;
if (equalLettersIgnoringASCIICase(policy, "always"))
return ReferrerPolicy::UnsafeUrl;
if (equalLettersIgnoringASCIICase(policy, "default"))
Change referrer-policy default to strict-origin-when-cross-origin https://bugs.webkit.org/show_bug.cgi?id=218909 Reviewed by Chris Dumez. LayoutTests/imported/w3c: This matches the behavior of other browsers. Update all our tests to deal with the origin now being shorter. * web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt: * web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.worker-expected.txt: * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank-expected.txt: * web-platform-tests/html/browsers/windows/browsing-context-expected.txt: * web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt: Source/WebCore: This matches the behavior of other browsers. Covered by existing tests and web platform tests we haven't imported yet. * dom/Document.h: * loader/FrameLoader.cpp: (WebCore::FrameLoader::effectiveReferrerPolicy const): * loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::requestResource): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): * platform/ReferrerPolicy.h: Tools: This matches the behavior of other browsers. Covered by existing tests and web platform tests we haven't imported yet. * TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm: (TEST): LayoutTests: This matches the behavior of other browsers. Covered by existing tests and web platform tests we haven't imported yet. * http/tests/media/media-stream/enumerate-devices-source-id.html: * http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http-http.html: * http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html: * http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt: * http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt: * http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt: * http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-block-image-https-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-main-frame-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-iframe-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-main-frame-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-main-frame-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-iframe-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-main-frame-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-iframe-expected.txt: * http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-main-frame-expected.txt: * http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled.py: * http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.py: * http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies.py: * http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt: * http/tests/security/contentSecurityPolicy/report-uri-scheme-relative.py: * http/tests/security/referrer-policy-header-expected.txt: * http/tests/security/referrer-policy-header-multipart-expected.txt: * http/tests/security/referrer-policy-header-test.js: * http/wpt/beacon/cors/cors-preflight-blob-failure.html: * http/wpt/beacon/cors/cors-preflight-blob-success.html: * http/wpt/beacon/cors/cors-preflight-redirect-from-crossorigin-to-sameorigin.html: * http/wpt/html/browsers/windows/browsing-context.html: * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.any-expected.txt: Added. * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.any.worker-expected.txt: Added. * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-main-frame-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-iframe-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-main-frame-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-main-frame-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-iframe-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-main-frame-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-iframe-expected.txt: * platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-main-frame-expected.txt: Canonical link: https://commits.webkit.org/239807@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-07-20 16:42:40 +00:00
return ReferrerPolicy::Default;
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
}
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
if (equalLettersIgnoringASCIICase(policy, "no-referrer"))
return ReferrerPolicy::NoReferrer;
if (equalLettersIgnoringASCIICase(policy, "unsafe-url"))
return ReferrerPolicy::UnsafeUrl;
if (equalLettersIgnoringASCIICase(policy, "origin"))
return ReferrerPolicy::Origin;
if (equalLettersIgnoringASCIICase(policy, "origin-when-cross-origin"))
return ReferrerPolicy::OriginWhenCrossOrigin;
if (equalLettersIgnoringASCIICase(policy, "same-origin"))
return ReferrerPolicy::SameOrigin;
if (equalLettersIgnoringASCIICase(policy, "strict-origin"))
return ReferrerPolicy::StrictOrigin;
if (equalLettersIgnoringASCIICase(policy, "strict-origin-when-cross-origin"))
return ReferrerPolicy::StrictOriginWhenCrossOrigin;
if (equalLettersIgnoringASCIICase(policy, "no-referrer-when-downgrade"))
return ReferrerPolicy::NoReferrerWhenDowngrade;
if (!policy.isNull() && policy.isEmpty())
return ReferrerPolicy::EmptyString;
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
Next step toward using std::optional directly instead of through WTF::Optional typedef https://bugs.webkit.org/show_bug.cgi?id=226280 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Accept the renaming done by do-webcore-rename. * yarr/YarrSyntaxChecker.cpp: Since the style checker complained about this file, tweaked style to make it happy after the renaming done by do-webcore-rename, and also hand-updated Optional to std::optional as long as we were touching it. Source/WebCore: * <many files>: Accept the renaming done by do-webcore-rename. * Modules/webauthn/fido/DeviceRequestConverter.h: Since style checker complained about the names of some arguments, fixed them, and also hand-updated Optional to std::optional as long as we were touching it. * loader/EmptyClients.cpp: Since style checker complained about the mix of WEBCORE_EXPORT and inlined functions, moved them out of line, and also hand-updated Optional to std::optional as long as we were touching it. Also removed is<EmptyFrameLoaderClient>(). * loader/EmptyFrameLoaderClient.h: Ditto. Source/WebCore/PAL: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebDriver: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKit: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy: * Storage/StorageTracker.cpp: (WebKit::StorageTracker::diskUsageForOrigin): Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/mac: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/win: * <many files>: Accept the renaming done by do-webcore-rename. Source/WTF: * <many files>: Accept the renaming done by do-webcore-rename. * wtf/Optional.h: Remove WTF::nullopt_t and WTF::makeOptional. * wtf/URLHelpers.cpp: (WTF::URLHelpers::mapHostName): Convert from nullopt to std::nullopt. Tools: * Scripts/do-webcore-rename: Use script to rename valueOr, WTF::nullopt, WTF::nullopt_t, WTF::Optional, WTF::makeOptional, and makeOptional. Other renamings can't necessarily be done by the script and so will be done in later passes. * <many files>: Accept the renaming done by do-webcore-rename. Canonical link: https://commits.webkit.org/238228@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278185 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-28 01:26:23 +00:00
return std::nullopt;
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
}
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
Remove WTF::Optional synonym for std::optional, using that class template directly instead https://bugs.webkit.org/show_bug.cgi?id=226433 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * inspector/scripts/codegen/generate_objc_protocol_types_implementation.py: (ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead of Optional<>. Also use * instead of value() and nest the definition of the local inside an if statement in the case where it's an optional. * inspector/scripts/tests/expected/*: Regenerated these results. Source/WebCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebCore/PAL: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebDriver: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKit: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * Scripts/webkit/tests: Regenerated expected results, by running the command "python Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?) Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/mac: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/win: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WTF: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * wtf/Optional.h: Remove WTF::Optional. Tools: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Canonical link: https://commits.webkit.org/238290@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278253 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-30 16:11:40 +00:00
std::optional<ReferrerPolicy> parseReferrerPolicy(StringView policyString, ReferrerPolicySource source)
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
{
switch (source) {
case ReferrerPolicySource::HTTPHeader: {
// Implementing https://www.w3.org/TR/2017/CR-referrer-policy-20170126/#parse-referrer-policy-from-header.
Remove WTF::Optional synonym for std::optional, using that class template directly instead https://bugs.webkit.org/show_bug.cgi?id=226433 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * inspector/scripts/codegen/generate_objc_protocol_types_implementation.py: (ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead of Optional<>. Also use * instead of value() and nest the definition of the local inside an if statement in the case where it's an optional. * inspector/scripts/tests/expected/*: Regenerated these results. Source/WebCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebCore/PAL: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebDriver: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKit: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * Scripts/webkit/tests: Regenerated expected results, by running the command "python Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?) Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/mac: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/win: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WTF: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * wtf/Optional.h: Remove WTF::Optional. Tools: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Canonical link: https://commits.webkit.org/238290@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278253 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-30 16:11:40 +00:00
std::optional<ReferrerPolicy> result;
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
for (auto tokenView : policyString.split(',')) {
auto token = parseReferrerPolicyToken(stripLeadingAndTrailingHTTPSpaces(tokenView), ShouldParseLegacyKeywords::No);
if (token && token.value() != ReferrerPolicy::EmptyString)
result = token.value();
}
return result;
}
case ReferrerPolicySource::MetaTag:
return parseReferrerPolicyToken(policyString, ShouldParseLegacyKeywords::Yes);
Consider supporting the `referrerpolicy` attribute. https://bugs.webkit.org/show_bug.cgi?id=179053 Patch by Rob Buis <rbuis@igalia.com> on 2019-03-06 Reviewed by Darin Adler. LayoutTests/imported/w3c: Update improved results. * web-platform-tests/html/dom/reflection-embedded-expected.txt: Source/WebCore: This patch adds 'referrerpolicy' attribute support for iframe. If set, the value is restricted to the ReferrerPolicy enum, and if valid it is used for the subframe load. If not set or invalid, the current behavior is kept. Tests: http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http-http.html http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http.https.html http/tests/referrer-policy-iframe/no-referrer-when-downgrade/same-origin.html http/tests/referrer-policy-iframe/no-referrer/cross-origin-http-http.html http/tests/referrer-policy-iframe/no-referrer/cross-origin-http.https.html http/tests/referrer-policy-iframe/no-referrer/same-origin.html http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http-http.html http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http.https.html http/tests/referrer-policy-iframe/origin-when-cross-origin/same-origin.html http/tests/referrer-policy-iframe/origin/cross-origin-http-http.html http/tests/referrer-policy-iframe/origin/cross-origin-http.https.html http/tests/referrer-policy-iframe/origin/same-origin.html http/tests/referrer-policy-iframe/same-origin/cross-origin-http-http.html http/tests/referrer-policy-iframe/same-origin/cross-origin-http.https.html http/tests/referrer-policy-iframe/same-origin/same-origin.html http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http-http.html http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http.https.html http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/same-origin.html http/tests/referrer-policy-iframe/strict-origin/cross-origin-http-http.html http/tests/referrer-policy-iframe/strict-origin/cross-origin-http.https.html http/tests/referrer-policy-iframe/strict-origin/same-origin.html http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http-http.html http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http.https.html http/tests/referrer-policy-iframe/unsafe-url/same-origin.html * html/HTMLAttributeNames.in: * html/HTMLFrameOwnerElement.h: (WebCore::HTMLFrameOwnerElement::referrerPolicy const): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::setReferrerPolicyForBindings): (WebCore::HTMLIFrameElement::referrerPolicyForBindings const): (WebCore::HTMLIFrameElement::referrerPolicy const): * html/HTMLIFrameElement.h: * html/HTMLIFrameElement.idl: * loader/SubframeLoader.cpp: (WebCore::SubframeLoader::loadSubframe): * page/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::referrerPolicyAttributeEnabled const): (WebCore::RuntimeEnabledFeatures::setReferrerPolicyAttributeEnabled): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: Source/WebKit: Add a runtime flag for referrerpolicy attribute. * Shared/WebPreferences.yaml: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetReferrerPolicyAttributeEnabled): (WKPreferencesGetReferrerPolicyAttributeEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::loadResource): do not hardcode choosing the document referrer policy. Source/WebKitLegacy/mac: Add a runtime flag for referrerpolicy attribute. * WebView/WebPreferenceKeysPrivate.h: * WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences referrerPolicyAttributeEnabled]): (-[WebPreferences setReferrerPolicyAttributeEnabled:]): * WebView/WebPreferencesPrivate.h: * WebView/WebView.mm: (-[WebView _preferencesChanged:]): Tools: Add a runtime flag for referrerpolicy attribute. * DumpRenderTree/mac/DumpRenderTree.mm: (enableExperimentalFeatures): LayoutTests: Add tests for referrerpolicy attribute based on the referrer-policy meta referrer tests. Update improved results for reflection-embedded.html. Mark some of the tests as Failure on windows. * http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/no-referrer-when-downgrade/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/no-referrer-when-downgrade/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/no-referrer-when-downgrade/same-origin.html: Added. * http/tests/referrer-policy-iframe/no-referrer/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/no-referrer/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/no-referrer/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/no-referrer/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/no-referrer/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/no-referrer/same-origin.html: Added. * http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/origin-when-cross-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/origin-when-cross-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/origin-when-cross-origin/same-origin.html: Added. * http/tests/referrer-policy-iframe/origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/origin/same-origin.html: Added. * http/tests/referrer-policy-iframe/same-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/same-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/same-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/same-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/same-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/same-origin/same-origin.html: Added. * http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/strict-origin-when-cross-origin/same-origin.html: Added. * http/tests/referrer-policy-iframe/strict-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/strict-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/strict-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/strict-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/strict-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/strict-origin/same-origin.html: Added. * http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http-http.html: Added. * http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http.https.html: Added. * http/tests/referrer-policy-iframe/unsafe-url/same-origin-expected.txt: Added. * http/tests/referrer-policy-iframe/unsafe-url/same-origin.html: Added. * platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt: * platform/ios/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt: * platform/win/TestExpectations: Canonical link: https://commits.webkit.org/209697@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242534 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-03-06 11:28:38 +00:00
case ReferrerPolicySource::ReferrerPolicyAttribute:
return parseReferrerPolicyToken(policyString, ShouldParseLegacyKeywords::No);
Referrer-Policy response header is ignored https://bugs.webkit.org/show_bug.cgi?id=186037 <rdar://problem/40600335> Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline existing WPT now that one more check is passing. * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt: Source/WebCore: Add support for Referrer-Policy HTTP response header: - https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header Tests: http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html http/tests/security/referrer-policy-header-and-meta-tag.html http/tests/security/referrer-policy-header.html * dom/Document.cpp: (WebCore::Document::setReferrerPolicy): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy const): * html/HTMLMetaElement.cpp: (WebCore::HTMLMetaElement::process): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::updateReferrerPolicy): * platform/ReferrerPolicy.cpp: (WebCore::parseReferrerPolicyToken): (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: LayoutTests: Add layout test coverage. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag-emptyString.html: Added. * http/tests/security/referrer-policy-header-and-meta-tag-expected.txt: Added. * http/tests/security/referrer-policy-header-and-meta-tag.html: Added. * http/tests/security/referrer-policy-header-expected.txt: Added. * http/tests/security/referrer-policy-header.html: Added. * http/tests/security/referrer-policy-invalid-expected.txt: * http/tests/security/referrer-policy-invalid.html: * http/tests/security/resources/postReferrer.php: Added. * http/tests/security/resources/serve-referrer-policy-and-meta-tag.php: Added. * http/tests/security/resources/serve-referrer-policy-and-test.php: Added. Canonical link: https://commits.webkit.org/201533@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-05-30 21:30:21 +00:00
}
ASSERT_NOT_REACHED();
Next step toward using std::optional directly instead of through WTF::Optional typedef https://bugs.webkit.org/show_bug.cgi?id=226280 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Accept the renaming done by do-webcore-rename. * yarr/YarrSyntaxChecker.cpp: Since the style checker complained about this file, tweaked style to make it happy after the renaming done by do-webcore-rename, and also hand-updated Optional to std::optional as long as we were touching it. Source/WebCore: * <many files>: Accept the renaming done by do-webcore-rename. * Modules/webauthn/fido/DeviceRequestConverter.h: Since style checker complained about the names of some arguments, fixed them, and also hand-updated Optional to std::optional as long as we were touching it. * loader/EmptyClients.cpp: Since style checker complained about the mix of WEBCORE_EXPORT and inlined functions, moved them out of line, and also hand-updated Optional to std::optional as long as we were touching it. Also removed is<EmptyFrameLoaderClient>(). * loader/EmptyFrameLoaderClient.h: Ditto. Source/WebCore/PAL: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebDriver: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKit: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy: * Storage/StorageTracker.cpp: (WebKit::StorageTracker::diskUsageForOrigin): Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/mac: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/win: * <many files>: Accept the renaming done by do-webcore-rename. Source/WTF: * <many files>: Accept the renaming done by do-webcore-rename. * wtf/Optional.h: Remove WTF::nullopt_t and WTF::makeOptional. * wtf/URLHelpers.cpp: (WTF::URLHelpers::mapHostName): Convert from nullopt to std::nullopt. Tools: * Scripts/do-webcore-rename: Use script to rename valueOr, WTF::nullopt, WTF::nullopt_t, WTF::Optional, WTF::makeOptional, and makeOptional. Other renamings can't necessarily be done by the script and so will be done in later passes. * <many files>: Accept the renaming done by do-webcore-rename. Canonical link: https://commits.webkit.org/238228@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278185 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-28 01:26:23 +00:00
return std::nullopt;
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
}
Add referrerpolicy attribute support for <script> elements https://bugs.webkit.org/show_bug.cgi?id=185550 Patch by Rob Buis <rbuis@igalia.com> on 2019-07-17 Reviewed by Youenn Fablet. Source/WebCore: This patch adds 'referrerpolicy' attribute support for script elements. If set, the value is restricted to the ReferrerPolicy enum, and if valid it is used for the script fetch. If not set or invalid, the current behavior is kept. Tests: http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http.html http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https.html http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin.html http/tests/referrer-policy-script/no-referrer/cross-origin-http-http.html http/tests/referrer-policy-script/no-referrer/cross-origin-http.https.html http/tests/referrer-policy-script/no-referrer/same-origin.html http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http.html http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https.html http/tests/referrer-policy-script/origin-when-cross-origin/same-origin.html http/tests/referrer-policy-script/origin/cross-origin-http-http.html http/tests/referrer-policy-script/origin/cross-origin-http.https.html http/tests/referrer-policy-script/origin/same-origin.html http/tests/referrer-policy-script/same-origin/cross-origin-http-http.html http/tests/referrer-policy-script/same-origin/cross-origin-http.https.html http/tests/referrer-policy-script/same-origin/same-origin.html http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http.html http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https.html http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin.html http/tests/referrer-policy-script/strict-origin/cross-origin-http-http.html http/tests/referrer-policy-script/strict-origin/cross-origin-http.https.html http/tests/referrer-policy-script/strict-origin/same-origin.html http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http.html http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https.html http/tests/referrer-policy-script/unsafe-url/same-origin.html * bindings/js/CachedScriptFetcher.cpp: (WebCore::CachedScriptFetcher::requestScriptWithCache const): * bindings/js/CachedScriptFetcher.h: (WebCore::CachedScriptFetcher::CachedScriptFetcher): * dom/InlineClassicScript.h: * dom/LoadableClassicScript.cpp: (WebCore::LoadableClassicScript::create): * dom/LoadableClassicScript.h: * dom/LoadableModuleScript.cpp: (WebCore::LoadableModuleScript::create): (WebCore::LoadableModuleScript::LoadableModuleScript): * dom/LoadableModuleScript.h: * dom/LoadableScript.h: (WebCore::LoadableScript::LoadableScript): * dom/ScriptElement.cpp: (WebCore::ScriptElement::requestClassicScript): (WebCore::ScriptElement::requestModuleScript): * dom/ScriptElement.h: * dom/ScriptElementCachedScriptFetcher.h: (WebCore::ScriptElementCachedScriptFetcher::ScriptElementCachedScriptFetcher): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::referrerPolicyForBindings const): * html/HTMLScriptElement.cpp: (WebCore::HTMLScriptElement::setReferrerPolicyForBindings): (WebCore::HTMLScriptElement::referrerPolicyForBindings const): (WebCore::HTMLScriptElement::referrerPolicy const): * html/HTMLScriptElement.h: * html/HTMLScriptElement.idl: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * platform/ReferrerPolicy.cpp: (WebCore::referrerPolicyToString): * platform/ReferrerPolicy.h: * svg/SVGScriptElement.h: LayoutTests: Add tests for scripts with various referrerpolicy attribute values. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin.html: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/no-referrer/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer/same-origin.html: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/same-origin.html: Added. * http/tests/referrer-policy-script/origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/origin/same-origin.html: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/same-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/same-origin/same-origin.html: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin.html: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/strict-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin/same-origin.html: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/unsafe-url/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/unsafe-url/same-origin.html: Added. * http/tests/referrer-policy/resources/script.php: Added. * platform/win/TestExpectations: Canonical link: https://commits.webkit.org/213731@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247509 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-07-17 09:03:37 +00:00
String referrerPolicyToString(const ReferrerPolicy& referrerPolicy)
{
switch (referrerPolicy) {
case ReferrerPolicy::NoReferrer:
return "no-referrer"_s;
case ReferrerPolicy::UnsafeUrl:
return "unsafe-url"_s;
case ReferrerPolicy::Origin:
return "origin"_s;
case ReferrerPolicy::OriginWhenCrossOrigin:
return "origin-when-cross-origin"_s;
case ReferrerPolicy::SameOrigin:
return "same-origin"_s;
case ReferrerPolicy::StrictOrigin:
return "strict-origin"_s;
case ReferrerPolicy::StrictOriginWhenCrossOrigin:
return "strict-origin-when-cross-origin"_s;
case ReferrerPolicy::NoReferrerWhenDowngrade:
return "no-referrer-when-downgrade"_s;
case ReferrerPolicy::EmptyString:
return { };
}
ASSERT_NOT_REACHED();
return { };
}
The referer header is not set after redirect https://bugs.webkit.org/show_bug.cgi?id=182644 <rdar://problem/37479048> Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-03 Reviewed by Youenn Fablet. LayoutTests/imported/w3c: Rebaseline some tests for fetch api as they are passing now. * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: * web-platform-tests/fetch/api/basic/referrer.any.worker-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Source/WebCore: Update referrer policy and recompute referrer in redirection check, so Referer header would be set after it's removed from cross-origin request. Add support for Referrer-Policy header, so referrer policy would be changed based on redirect response. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::processReferrerPolicy): * loader/CrossOriginAccessControl.cpp: (WebCore::updateRequestReferrer): * loader/CrossOriginAccessControl.h: * loader/ResourceLoader.h: (WebCore::ResourceLoader::setReferrerPolicy): (WebCore::ResourceLoader::referrerPolicy const): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): (WebCore::SubresourceLoader::updateReferrerPolicy): * loader/SubresourceLoader.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): (WebCore::CachedResourceRequest::updateForAccessControl): (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): * platform/ReferrerPolicy.cpp: Added. (WebCore::parseReferrerPolicy): * platform/ReferrerPolicy.h: * platform/network/HTTPHeaderNames.in: Canonical link: https://commits.webkit.org/199816@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-03 17:15:17 +00:00
} // namespace WebCore