Title: [251155] trunk/Source
Revision
251155
Author
you...@apple.com
Date
2019-10-15 13:54:22 -0700 (Tue, 15 Oct 2019)

Log Message

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:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (251154 => 251155)


--- trunk/Source/WebCore/ChangeLog	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebCore/ChangeLog	2019-10-15 20:54:22 UTC (rev 251155)
@@ -1,3 +1,20 @@
+2019-10-15  youenn fablet  <you...@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  <za...@apple.com>
 
         [LFC][TFC] Use <col> to adjust the preferred column width.

Modified: trunk/Source/WebCore/loader/CrossOriginAccessControl.cpp (251154 => 251155)


--- trunk/Source/WebCore/loader/CrossOriginAccessControl.cpp	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebCore/loader/CrossOriginAccessControl.cpp	2019-10-15 20:54:22 UTC (rev 251155)
@@ -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();
 }
 

Modified: trunk/Source/WebCore/loader/CrossOriginAccessControl.h (251154 => 251155)


--- trunk/Source/WebCore/loader/CrossOriginAccessControl.h	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebCore/loader/CrossOriginAccessControl.h	2019-10-15 20:54:22 UTC (rev 251155)
@@ -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,10 +56,17 @@
 
 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);
 

Modified: trunk/Source/WebCore/loader/ResourceLoaderOptions.h (251154 => 251155)


--- trunk/Source/WebCore/loader/ResourceLoaderOptions.h	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebCore/loader/ResourceLoaderOptions.h	2019-10-15 20:54:22 UTC (rev 251155)
@@ -152,7 +152,7 @@
 #if ENABLE(SERVICE_WORKER)
     Optional<ServiceWorkerRegistrationIdentifier> serviceWorkerRegistrationIdentifier;
 #endif
-    HTTPHeaderNameSet httpHeadersToKeep;
+    OptionSet<HTTPHeadersToKeepFromCleaning> httpHeadersToKeep;
     Optional<ContentSecurityPolicyResponseHeaders> cspResponseHeaders;
     unsigned maxRedirectCount { 20 };
 

Modified: trunk/Source/WebKit/ChangeLog (251154 => 251155)


--- trunk/Source/WebKit/ChangeLog	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebKit/ChangeLog	2019-10-15 20:54:22 UTC (rev 251155)
@@ -1,3 +1,14 @@
+2019-10-15  youenn fablet  <you...@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_...@apple.com>
 
         [WebAuthn] Rename -[WKUIDelegatePrivate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:] to -[WKUIDelegatePrivate _webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp (251154 => 251155)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp	2019-10-15 20:54:22 UTC (rev 251155)
@@ -262,7 +262,7 @@
         return WTF::nullopt;
     result.serviceWorkerRegistrationIdentifier = *serviceWorkerRegistrationIdentifier;
 
-    Optional<HTTPHeaderNameSet> httpHeadersToKeep;
+    Optional<OptionSet<HTTPHeadersToKeepFromCleaning>> httpHeadersToKeep;
     decoder >> httpHeadersToKeep;
     if (!httpHeadersToKeep)
         return WTF::nullopt;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h (251154 => 251155)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h	2019-10-15 20:45:23 UTC (rev 251154)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h	2019-10-15 20:54:22 UTC (rev 251155)
@@ -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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to