Title: [220688] releases/WebKitGTK/webkit-2.18/Source/WebCore
Revision
220688
Author
carlo...@webkit.org
Date
2017-08-14 08:25:19 -0700 (Mon, 14 Aug 2017)

Log Message

Merge r220632 - Drop non-const getter for CachedResource::resourceRequest()
https://bugs.webkit.org/show_bug.cgi?id=175524

Reviewed by Youenn Fablet.

Drop non-const getter for CachedResource::resourceRequest(). It would be unsafe to modify the request of a CachedResource
after it has been cached. Exposing such a getter is therefore a footgun.

* loader/LinkLoader.cpp:
(WebCore::LinkLoader::preloadIfNeeded):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::CachedImage):
* loader/cache/CachedImage.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::resourceRequest const):
(WebCore::CachedResource::ignoreForRequestCount const):
(WebCore::CachedResource::setIgnoreForRequestCount):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* loader/cache/CachedResourceRequest.h:
(WebCore::CachedResourceRequest::ignoreForRequestCount const):
(WebCore::CachedResourceRequest::setIgnoreForRequestCount):
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::addImageToCache):
* platform/network/ResourceRequestBase.h:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog	2017-08-14 15:25:19 UTC (rev 220688)
@@ -1,3 +1,33 @@
+2017-08-13  Chris Dumez  <cdu...@apple.com>
+
+        Drop non-const getter for CachedResource::resourceRequest()
+        https://bugs.webkit.org/show_bug.cgi?id=175524
+
+        Reviewed by Youenn Fablet.
+
+        Drop non-const getter for CachedResource::resourceRequest(). It would be unsafe to modify the request of a CachedResource
+        after it has been cached. Exposing such a getter is therefore a footgun.
+
+        * loader/LinkLoader.cpp:
+        (WebCore::LinkLoader::preloadIfNeeded):
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::CachedImage):
+        * loader/cache/CachedImage.h:
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::CachedResource):
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::resourceRequest const):
+        (WebCore::CachedResource::ignoreForRequestCount const):
+        (WebCore::CachedResource::setIgnoreForRequestCount):
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::requestResource):
+        * loader/cache/CachedResourceRequest.h:
+        (WebCore::CachedResourceRequest::ignoreForRequestCount const):
+        (WebCore::CachedResourceRequest::setIgnoreForRequestCount):
+        * loader/cache/MemoryCache.cpp:
+        (WebCore::MemoryCache::addImageToCache):
+        * platform/network/ResourceRequestBase.h:
+
 2017-08-13  Adrian Perez de Castro  <ape...@igalia.com>
 
         [WPE] Implement WebCore::standardUserAgent()

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/LinkLoader.cpp (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/LinkLoader.cpp	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/LinkLoader.cpp	2017-08-14 15:25:19 UTC (rev 220688)
@@ -223,10 +223,9 @@
     if (!isSupportedType(type.value(), mimeType))
         return nullptr;
 
-    ResourceRequest resourceRequest(document.completeURL(href));
-    resourceRequest.setIgnoreForRequestCount(true);
-    CachedResourceRequest linkRequest(WTFMove(resourceRequest), CachedResourceLoader::defaultCachedResourceOptions(), CachedResource::defaultPriorityForResourceType(type.value()));
+    CachedResourceRequest linkRequest(document.completeURL(href), CachedResourceLoader::defaultCachedResourceOptions(), CachedResource::defaultPriorityForResourceType(type.value()));
     linkRequest.setInitiator("link");
+    linkRequest.setIgnoreForRequestCount(true);
     linkRequest.setIsLinkPreload();
 
     linkRequest.setAsPotentiallyCrossOrigin(crossOriginMode, document);

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedImage.cpp (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedImage.cpp	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedImage.cpp	2017-08-14 15:25:19 UTC (rev 220688)
@@ -67,11 +67,13 @@
 {
 }
 
-CachedImage::CachedImage(const URL& url, Image* image, SessionID sessionID)
+CachedImage::CachedImage(const URL& url, Image* image, SessionID sessionID, const String& domainForCachePartition)
     : CachedResource(url, ImageResource, sessionID)
     , m_image(image)
     , m_isManuallyCached(true)
 {
+    m_resourceRequest.setDomainForCachePartition(domainForCachePartition);
+
     // Use the incoming URL in the response field. This ensures that code using the response directly,
     // such as origin checks for security, actually see something.
     m_response.setURL(url);

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedImage.h (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedImage.h	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedImage.h	2017-08-14 15:25:19 UTC (rev 220688)
@@ -50,7 +50,7 @@
     CachedImage(CachedResourceRequest&&, SessionID);
     CachedImage(Image*, SessionID);
     // Constructor to use for manually cached images.
-    CachedImage(const URL&, Image*, SessionID);
+    CachedImage(const URL&, Image*, SessionID, const String& domainForCachePartition);
     virtual ~CachedImage();
 
     WEBCORE_EXPORT Image* image(); // Returns the nullImage() if the image is not available yet.

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResource.cpp (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResource.cpp	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResource.cpp	2017-08-14 15:25:19 UTC (rev 220688)
@@ -128,6 +128,7 @@
     , m_isLinkPreload(request.isLinkPreload())
     , m_hasUnknownEncoding(request.isLinkPreload())
     , m_type(type)
+    , m_ignoreForRequestCount(request.ignoreForRequestCount())
 {
     ASSERT(sessionID.isValid());
 

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResource.h (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResource.h	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResource.h	2017-08-14 15:25:19 UTC (rev 220688)
@@ -113,7 +113,6 @@
     virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return false; }
 
     const ResourceRequest& resourceRequest() const { return m_resourceRequest; }
-    ResourceRequest& resourceRequest() { return m_resourceRequest; }
     const URL& url() const { return m_resourceRequest.url();}
     const String& cachePartition() const { return m_resourceRequest.cachePartition(); }
     SessionID sessionID() const { return m_sessionID; }
@@ -164,9 +163,11 @@
     bool isImage() const { return type() == ImageResource; }
     // FIXME: CachedRawResource could be a main resource, an audio/video resource, or a raw XHR/icon resource.
     bool isMainOrMediaOrIconOrRawResource() const { return type() == MainResource || type() == MediaResource || type() == Icon || type() == RawResource; }
+
+    // Whether this request should impact request counting and delay window.onload.
     bool ignoreForRequestCount() const
     {
-        return m_resourceRequest.ignoreForRequestCount()
+        return m_ignoreForRequestCount
             || type() == MainResource
 #if ENABLE(LINK_PREFETCH)
             || type() == LinkPrefetch
@@ -176,6 +177,8 @@
             || type() == RawResource;
     }
 
+    void setIgnoreForRequestCount(bool ignoreForRequestCount) { m_ignoreForRequestCount = ignoreForRequestCount; }
+
     unsigned accessCount() const { return m_accessCount; }
     void increaseAccessCount() { m_accessCount++; }
 
@@ -370,6 +373,7 @@
     Vector<std::pair<String, String>> m_varyingHeaderValues;
 
     unsigned long m_identifierForLoadWithoutResourceLoader { 0 };
+    bool m_ignoreForRequestCount { false };
 };
 
 class CachedResource::Callback {

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResourceLoader.cpp (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2017-08-14 15:25:19 UTC (rev 220688)
@@ -817,8 +817,8 @@
     if (!resource)
         return nullptr;
 
-    if (forPreload == ForPreload::No && resource->loader() && resource->resourceRequest().ignoreForRequestCount()) {
-        resource->resourceRequest().setIgnoreForRequestCount(false);
+    if (forPreload == ForPreload::No && resource->loader() && resource->ignoreForRequestCount()) {
+        resource->setIgnoreForRequestCount(false);
         incrementRequestCount(*resource);
     }
 

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResourceRequest.h (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResourceRequest.h	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/CachedResourceRequest.h	2017-08-14 15:25:19 UTC (rev 220688)
@@ -63,6 +63,10 @@
     bool allowsCaching() const { return m_options.cachingPolicy == CachingPolicy::AllowCaching; }
     void setCachingPolicy(CachingPolicy policy) { m_options.cachingPolicy = policy;  }
 
+    // Whether this request should impact request counting and delay window.onload.
+    bool ignoreForRequestCount() const { return m_ignoreForRequestCount; }
+    void setIgnoreForRequestCount(bool ignoreForRequestCount) { m_ignoreForRequestCount = ignoreForRequestCount; }
+
     void setAsPotentiallyCrossOrigin(const String&, Document&);
     void updateForAccessControl(Document&);
 
@@ -98,6 +102,7 @@
     RefPtr<SecurityOrigin> m_origin;
     String m_fragmentIdentifier;
     bool m_isLinkPreload { false };
+    bool m_ignoreForRequestCount { false };
 };
 
 void upgradeInsecureResourceRequestIfNeeded(ResourceRequest&, Document&);

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/MemoryCache.cpp (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/MemoryCache.cpp	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/loader/cache/MemoryCache.cpp	2017-08-14 15:25:19 UTC (rev 220688)
@@ -217,11 +217,10 @@
     if (!bitmapImage)
         return false;
 
-    auto cachedImage = std::make_unique<CachedImage>(url, bitmapImage.get(), sessionID);
+    auto cachedImage = std::make_unique<CachedImage>(url, bitmapImage.get(), sessionID, domainForCachePartition);
 
     cachedImage->addClient(dummyCachedImageClient());
     cachedImage->setDecodedSize(bitmapImage->decodedSize());
-    cachedImage->resourceRequest().setDomainForCachePartition(domainForCachePartition);
 
     return add(*cachedImage.release());
 }

Modified: releases/WebKitGTK/webkit-2.18/Source/WebCore/platform/network/ResourceRequestBase.h (220687 => 220688)


--- releases/WebKitGTK/webkit-2.18/Source/WebCore/platform/network/ResourceRequestBase.h	2017-08-14 15:09:26 UTC (rev 220687)
+++ releases/WebKitGTK/webkit-2.18/Source/WebCore/platform/network/ResourceRequestBase.h	2017-08-14 15:25:19 UTC (rev 220688)
@@ -148,10 +148,6 @@
     bool hiddenFromInspector() const { return m_hiddenFromInspector; }
     void setHiddenFromInspector(bool hiddenFromInspector) { m_hiddenFromInspector = hiddenFromInspector; }
 
-    // Whether this request should impact request counting and delay window.onload.
-    bool ignoreForRequestCount() const { return m_ignoreForRequestCount; }
-    void setIgnoreForRequestCount(bool ignoreForRequestCount) { m_ignoreForRequestCount = ignoreForRequestCount; }
-
     enum class Requester { Unspecified, Main, XHR, Fetch, Media };
     Requester requester() const { return m_requester; }
     void setRequester(Requester requester) { m_requester = requester; }
@@ -222,7 +218,6 @@
     mutable bool m_resourceRequestBodyUpdated { false };
     mutable bool m_platformRequestBodyUpdated { false };
     bool m_hiddenFromInspector { false };
-    bool m_ignoreForRequestCount { false };
     ResourceLoadPriority m_priority { ResourceLoadPriority::Low };
     Requester m_requester { Requester::Unspecified };
     String m_initiatorIdentifier;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to