Title: [260596] trunk/Source/WebCore
Revision
260596
Author
[email protected]
Date
2020-04-23 13:37:54 -0700 (Thu, 23 Apr 2020)

Log Message

Move applyUserAgentIfNeeded calls to a more central place
https://bugs.webkit.org/show_bug.cgi?id=209587

Patch by Rob Buis <[email protected]> on 2020-04-23
Reviewed by Darin Adler.

Make main resource loads stop calling applyUserAgentIfNeeded
and instead do it in the CachedResourceLoader.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::addExtraFieldsToRequest):
(WebCore::FrameLoader::loadResourceSynchronously):
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::createRequest):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::updateHTTPRequestHeaders):
(WebCore::CachedResourceLoader::requestResource):
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::updateReferrerAndOriginHeaders):
(WebCore::CachedResourceRequest::updateUserAgentHeader):
(WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): Deleted.
* loader/cache/CachedResourceRequest.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (260595 => 260596)


--- trunk/Source/WebCore/ChangeLog	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/ChangeLog	2020-04-23 20:37:54 UTC (rev 260596)
@@ -1,3 +1,28 @@
+2020-04-23  Rob Buis  <[email protected]>
+
+        Move applyUserAgentIfNeeded calls to a more central place
+        https://bugs.webkit.org/show_bug.cgi?id=209587
+
+        Reviewed by Darin Adler.
+
+        Make main resource loads stop calling applyUserAgentIfNeeded
+        and instead do it in the CachedResourceLoader.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::addExtraFieldsToRequest):
+        (WebCore::FrameLoader::loadResourceSynchronously):
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::createRequest):
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::updateHTTPRequestHeaders):
+        (WebCore::CachedResourceLoader::requestResource):
+        * loader/cache/CachedResourceLoader.h:
+        * loader/cache/CachedResourceRequest.cpp:
+        (WebCore::CachedResourceRequest::updateReferrerAndOriginHeaders):
+        (WebCore::CachedResourceRequest::updateUserAgentHeader):
+        (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): Deleted.
+        * loader/cache/CachedResourceRequest.h:
+
 2020-04-23  Kenneth Russell  <[email protected]>
 
         [WebGL2] Update texture packing code for software uploads from DOM

Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (260595 => 260596)


--- trunk/Source/WebCore/loader/FrameLoader.cpp	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp	2020-04-23 20:37:54 UTC (rev 260596)
@@ -2962,8 +2962,6 @@
     if (m_overrideResourceLoadPriorityForTesting)
         request.setPriority(m_overrideResourceLoadPriorityForTesting.value());
 
-    applyUserAgentIfNeeded(request);
-
     // Only set fallback array if it's still empty (later attempts may be incorrect, see bug 117818).
     if (request.responseContentDispositionEncodingFallbackArray().isEmpty()) {
         // Always try UTF-8. If that fails, try frame encoding (if any) and then the default.
@@ -3066,6 +3064,8 @@
     
     addExtraFieldsToRequest(initialRequest, IsMainResource::No);
 
+    applyUserAgentIfNeeded(initialRequest);
+
     unsigned long identifier = 0;    
     ResourceRequest newRequest(initialRequest);
     requestFromDelegate(newRequest, identifier, error);

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (260595 => 260596)


--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp	2020-04-23 20:37:54 UTC (rev 260596)
@@ -463,7 +463,6 @@
 ResourceRequest ApplicationCacheGroup::createRequest(URL&& url, ApplicationCacheResource* resource)
 {
     ResourceRequest request { WTFMove(url) };
-    m_frame->loader().applyUserAgentIfNeeded(request);
     request.setHTTPHeaderField(HTTPHeaderName::CacheControl, HTTPHeaderValues::maxAge0());
 
     if (resource) {

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (260595 => 260596)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2020-04-23 20:37:54 UTC (rev 260596)
@@ -734,17 +734,14 @@
     // FIXME: Decide whether to support client hints
 }
 
-void CachedResourceLoader::updateHTTPRequestHeaders(CachedResource::Type type, CachedResourceRequest& request)
+void CachedResourceLoader::updateHTTPRequestHeaders(FrameLoader& frameLoader, CachedResource::Type type, CachedResourceRequest& request)
 {
     // Implementing steps 7 to 12 of https://fetch.spec.whatwg.org/#http-network-or-cache-fetch
 
     // FIXME: We should reconcile handling of MainResource with other resources.
-    if (type != CachedResource::Type::MainResource) {
-        // In some cases we may try to load resources in frameless documents. Such loads always fail.
-        // FIXME: We shouldn't need to do the check on frame.
-        if (auto* frame = this->frame())
-            request.updateReferrerOriginAndUserAgentHeaders(frame->loader());
-    }
+    if (type != CachedResource::Type::MainResource)
+        request.updateReferrerAndOriginHeaders(frameLoader);
+    request.updateUserAgentHeader(frameLoader);
 
     request.updateAccordingCacheMode();
     request.updateAcceptEncodingHeader();
@@ -909,7 +906,7 @@
     InitiatorContext initiatorContext = request.options().initiatorContext;
 
     if (request.resourceRequest().url().protocolIsInHTTPFamily())
-        updateHTTPRequestHeaders(type, request);
+        updateHTTPRequestHeaders(frame.loader(), type, request);
 
     auto& memoryCache = MemoryCache::singleton();
     if (request.allowsCaching() && memoryCache.disabled())

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.h (260595 => 260596)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.h	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.h	2020-04-23 20:37:54 UTC (rev 260596)
@@ -175,7 +175,7 @@
     CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, PAL::SessionID, CachedResourceRequest&&, const CookieJar&);
 
     void prepareFetch(CachedResource::Type, CachedResourceRequest&);
-    void updateHTTPRequestHeaders(CachedResource::Type, CachedResourceRequest&);
+    void updateHTTPRequestHeaders(FrameLoader&, CachedResource::Type, CachedResourceRequest&);
 
     bool canRequest(CachedResource::Type, const URL&, const CachedResourceRequest&, ForPreload);
 

Modified: trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp (260595 => 260596)


--- trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp	2020-04-23 20:37:54 UTC (rev 260596)
@@ -221,7 +221,7 @@
         m_options.referrerPolicy = defaultPolicy;
 }
 
-void CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders(FrameLoader& frameLoader)
+void CachedResourceRequest::updateReferrerAndOriginHeaders(FrameLoader& frameLoader)
 {
     // Implementing step 9 to 11 of https://fetch.spec.whatwg.org/#http-network-or-cache-fetch as of 16 March 2018
     String outgoingReferrer = frameLoader.outgoingReferrer();
@@ -228,7 +228,6 @@
     if (m_resourceRequest.hasHTTPReferrer())
         outgoingReferrer = m_resourceRequest.httpReferrer();
     updateRequestReferrer(m_resourceRequest, m_options.referrerPolicy, outgoingReferrer);
-    frameLoader.applyUserAgentIfNeeded(m_resourceRequest);
 
     if (doesRequestNeedHTTPOriginHeader(m_resourceRequest)) {
         auto outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer);
@@ -237,6 +236,11 @@
     }
 }
 
+void CachedResourceRequest::updateUserAgentHeader(FrameLoader& frameLoader)
+{
+    frameLoader.applyUserAgentIfNeeded(m_resourceRequest);
+}
+
 bool isRequestCrossOrigin(SecurityOrigin* origin, const URL& requestURL, const ResourceLoaderOptions& options)
 {
     if (!origin)

Modified: trunk/Source/WebCore/loader/cache/CachedResourceRequest.h (260595 => 260596)


--- trunk/Source/WebCore/loader/cache/CachedResourceRequest.h	2020-04-23 20:28:54 UTC (rev 260595)
+++ trunk/Source/WebCore/loader/cache/CachedResourceRequest.h	2020-04-23 20:37:54 UTC (rev 260596)
@@ -78,7 +78,8 @@
     void updateForAccessControl(Document&);
 
     void updateReferrerPolicy(ReferrerPolicy);
-    void updateReferrerOriginAndUserAgentHeaders(FrameLoader&);
+    void updateReferrerAndOriginHeaders(FrameLoader&);
+    void updateUserAgentHeader(FrameLoader&);
     void upgradeInsecureRequestIfNeeded(Document&);
     void setAcceptHeaderIfNone(CachedResource::Type);
     void updateAccordingCacheMode();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to