Move headers to keep from a HTTPHeaderNameSet to an OptionSet
https://bugs.webkit.org/show_bug.cgi?id=202977
Reviewed by Anders Carlsson.
Source/WebCore:
Covered by existing tests.
New representation is smaller and more efficient to process.
* loader/CrossOriginAccessControl.cpp:
(WebCore::httpHeadersToKeepFromCleaning):
(WebCore::cleanHTTPRequestHeadersForAccessControl):
* loader/CrossOriginAccessControl.h:
(WebCore::cleanHTTPRequestHeadersForAccessControl): Deleted.
* loader/ResourceLoaderOptions.h:
Source/WebKit:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251155 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index d20b82c..09b7d80 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2019-10-15 youenn fablet <youenn@apple.com>
+
+ Move headers to keep from a HTTPHeaderNameSet to an OptionSet
+ https://bugs.webkit.org/show_bug.cgi?id=202977
+
+ Reviewed by Anders Carlsson.
+
+ Covered by existing tests.
+ New representation is smaller and more efficient to process.
+
+ * loader/CrossOriginAccessControl.cpp:
+ (WebCore::httpHeadersToKeepFromCleaning):
+ (WebCore::cleanHTTPRequestHeadersForAccessControl):
+ * loader/CrossOriginAccessControl.h:
+ (WebCore::cleanHTTPRequestHeadersForAccessControl): Deleted.
+ * loader/ResourceLoaderOptions.h:
+
2019-10-15 Zalan Bujtas <zalan@apple.com>
[LFC][TFC] Use <col> to adjust the preferred column width.
diff --git a/Source/WebCore/loader/CrossOriginAccessControl.cpp b/Source/WebCore/loader/CrossOriginAccessControl.cpp
index 224b1b5..936c0b8 100644
--- a/Source/WebCore/loader/CrossOriginAccessControl.cpp
+++ b/Source/WebCore/loader/CrossOriginAccessControl.cpp
@@ -134,34 +134,34 @@
&& redirectURL.pass().isEmpty();
}
-HTTPHeaderNameSet httpHeadersToKeepFromCleaning(const HTTPHeaderMap& headers)
+OptionSet<HTTPHeadersToKeepFromCleaning> httpHeadersToKeepFromCleaning(const HTTPHeaderMap& headers)
{
- HTTPHeaderNameSet headersToKeep;
+ OptionSet<HTTPHeadersToKeepFromCleaning> headersToKeep;
if (headers.contains(HTTPHeaderName::ContentType))
- headersToKeep.add(HTTPHeaderName::ContentType);
+ headersToKeep.add(HTTPHeadersToKeepFromCleaning::ContentType);
if (headers.contains(HTTPHeaderName::Referer))
- headersToKeep.add(HTTPHeaderName::Referer);
+ headersToKeep.add(HTTPHeadersToKeepFromCleaning::Referer);
if (headers.contains(HTTPHeaderName::Origin))
- headersToKeep.add(HTTPHeaderName::Origin);
+ headersToKeep.add(HTTPHeadersToKeepFromCleaning::Origin);
if (headers.contains(HTTPHeaderName::UserAgent))
- headersToKeep.add(HTTPHeaderName::UserAgent);
+ headersToKeep.add(HTTPHeadersToKeepFromCleaning::UserAgent);
if (headers.contains(HTTPHeaderName::AcceptEncoding))
- headersToKeep.add(HTTPHeaderName::AcceptEncoding);
+ headersToKeep.add(HTTPHeadersToKeepFromCleaning::AcceptEncoding);
return headersToKeep;
}
-void cleanHTTPRequestHeadersForAccessControl(ResourceRequest& request, const HashSet<HTTPHeaderName, WTF::IntHash<HTTPHeaderName>, WTF::StrongEnumHashTraits<HTTPHeaderName>>& headersToKeep)
+void cleanHTTPRequestHeadersForAccessControl(ResourceRequest& request, OptionSet<HTTPHeadersToKeepFromCleaning> headersToKeep)
{
// Remove headers that may have been added by the network layer that cause access control to fail.
- if (!headersToKeep.contains(HTTPHeaderName::ContentType) && !isCrossOriginSafeRequestHeader(HTTPHeaderName::ContentType, request.httpContentType()))
+ if (!headersToKeep.contains(HTTPHeadersToKeepFromCleaning::ContentType) && !isCrossOriginSafeRequestHeader(HTTPHeaderName::ContentType, request.httpContentType()))
request.clearHTTPContentType();
- if (!headersToKeep.contains(HTTPHeaderName::Referer))
+ if (!headersToKeep.contains(HTTPHeadersToKeepFromCleaning::Referer))
request.clearHTTPReferrer();
- if (!headersToKeep.contains(HTTPHeaderName::Origin))
+ if (!headersToKeep.contains(HTTPHeadersToKeepFromCleaning::Origin))
request.clearHTTPOrigin();
- if (!headersToKeep.contains(HTTPHeaderName::UserAgent))
+ if (!headersToKeep.contains(HTTPHeadersToKeepFromCleaning::UserAgent))
request.clearHTTPUserAgent();
- if (!headersToKeep.contains(HTTPHeaderName::AcceptEncoding))
+ if (!headersToKeep.contains(HTTPHeadersToKeepFromCleaning::AcceptEncoding))
request.clearHTTPAcceptEncoding();
}
diff --git a/Source/WebCore/loader/CrossOriginAccessControl.h b/Source/WebCore/loader/CrossOriginAccessControl.h
index 0e0f746..1932467 100644
--- a/Source/WebCore/loader/CrossOriginAccessControl.h
+++ b/Source/WebCore/loader/CrossOriginAccessControl.h
@@ -30,7 +30,7 @@
#include "ReferrerPolicy.h"
#include "StoredCredentialsPolicy.h"
#include <wtf/Forward.h>
-#include <wtf/HashSet.h>
+#include <wtf/OptionSet.h>
namespace WebCore {
@@ -56,9 +56,16 @@
bool isValidCrossOriginRedirectionURL(const URL&);
-using HTTPHeaderNameSet = HashSet<HTTPHeaderName, WTF::IntHash<HTTPHeaderName>, WTF::StrongEnumHashTraits<HTTPHeaderName>>;
-HTTPHeaderNameSet httpHeadersToKeepFromCleaning(const HTTPHeaderMap&);
-WEBCORE_EXPORT void cleanHTTPRequestHeadersForAccessControl(ResourceRequest&, const HTTPHeaderNameSet& = { });
+enum class HTTPHeadersToKeepFromCleaning {
+ ContentType = 1 << 0,
+ Referer = 1 << 1,
+ Origin = 1 << 2,
+ UserAgent = 1 << 3,
+ AcceptEncoding = 1 << 4
+};
+
+OptionSet<HTTPHeadersToKeepFromCleaning> httpHeadersToKeepFromCleaning(const HTTPHeaderMap&);
+WEBCORE_EXPORT void cleanHTTPRequestHeadersForAccessControl(ResourceRequest&, OptionSet<HTTPHeadersToKeepFromCleaning>);
WEBCORE_EXPORT bool passesAccessControlCheck(const ResourceResponse&, StoredCredentialsPolicy, SecurityOrigin&, String& errorDescription);
WEBCORE_EXPORT bool validatePreflightResponse(const ResourceRequest&, const ResourceResponse&, StoredCredentialsPolicy, SecurityOrigin&, String& errorDescription);
diff --git a/Source/WebCore/loader/ResourceLoaderOptions.h b/Source/WebCore/loader/ResourceLoaderOptions.h
index dbea1bf..4a49008 100644
--- a/Source/WebCore/loader/ResourceLoaderOptions.h
+++ b/Source/WebCore/loader/ResourceLoaderOptions.h
@@ -152,7 +152,7 @@
#if ENABLE(SERVICE_WORKER)
Optional<ServiceWorkerRegistrationIdentifier> serviceWorkerRegistrationIdentifier;
#endif
- HTTPHeaderNameSet httpHeadersToKeep;
+ OptionSet<HTTPHeadersToKeepFromCleaning> httpHeadersToKeep;
Optional<ContentSecurityPolicyResponseHeaders> cspResponseHeaders;
unsigned maxRedirectCount { 20 };
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index d366139..5ebd03e 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,14 @@
+2019-10-15 youenn fablet <youenn@apple.com>
+
+ Move headers to keep from a HTTPHeaderNameSet to an OptionSet
+ https://bugs.webkit.org/show_bug.cgi?id=202977
+
+ Reviewed by Anders Carlsson.
+
+ * NetworkProcess/NetworkResourceLoadParameters.cpp:
+ (WebKit::NetworkResourceLoadParameters::decode):
+ * NetworkProcess/NetworkResourceLoadParameters.h:
+
2019-10-15 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthn] Rename -[WKUIDelegatePrivate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:] to -[WKUIDelegatePrivate _webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]
diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp b/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
index 8dbd25e..8660544d 100644
--- a/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
+++ b/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
@@ -262,7 +262,7 @@
return WTF::nullopt;
result.serviceWorkerRegistrationIdentifier = *serviceWorkerRegistrationIdentifier;
- Optional<HTTPHeaderNameSet> httpHeadersToKeep;
+ Optional<OptionSet<HTTPHeadersToKeepFromCleaning>> httpHeadersToKeep;
decoder >> httpHeadersToKeep;
if (!httpHeadersToKeep)
return WTF::nullopt;
diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h b/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
index e87dc7a..46c1704 100644
--- a/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
+++ b/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
@@ -64,7 +64,7 @@
#if ENABLE(SERVICE_WORKER)
WebCore::ServiceWorkersMode serviceWorkersMode { WebCore::ServiceWorkersMode::None };
Optional<WebCore::ServiceWorkerRegistrationIdentifier> serviceWorkerRegistrationIdentifier;
- WebCore::HTTPHeaderNameSet httpHeadersToKeep;
+ OptionSet<WebCore::HTTPHeadersToKeepFromCleaning> httpHeadersToKeep;
#endif
#if ENABLE(CONTENT_EXTENSIONS)