Title: [201801] trunk/Source/WebCore
Revision
201801
Author
[email protected]
Date
2016-06-08 02:06:07 -0700 (Wed, 08 Jun 2016)

Log Message

Unreviewed, rolling out r201800.
https://bugs.webkit.org/show_bug.cgi?id=158518

Missing WebKit2 pieces (Requested by anttik on #webkit).

Reverted changeset:

"WebKit memory cache doesn't respect Vary header"
https://bugs.webkit.org/show_bug.cgi?id=71509
http://trac.webkit.org/changeset/201800

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (201800 => 201801)


--- trunk/Source/WebCore/ChangeLog	2016-06-08 09:01:07 UTC (rev 201800)
+++ trunk/Source/WebCore/ChangeLog	2016-06-08 09:06:07 UTC (rev 201801)
@@ -1,3 +1,16 @@
+2016-06-08  Commit Queue  <[email protected]>
+
+        Unreviewed, rolling out r201800.
+        https://bugs.webkit.org/show_bug.cgi?id=158518
+
+        Missing WebKit2 pieces (Requested by anttik on #webkit).
+
+        Reverted changeset:
+
+        "WebKit memory cache doesn't respect Vary header"
+        https://bugs.webkit.org/show_bug.cgi?id=71509
+        http://trac.webkit.org/changeset/201800
+
 2016-06-06  Antti Koivisto  <[email protected]>
 
         WebKit memory cache doesn't respect Vary header

Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (201800 => 201801)


--- trunk/Source/WebCore/loader/cache/CachedResource.cpp	2016-06-08 09:01:07 UTC (rev 201800)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp	2016-06-08 09:06:07 UTC (rev 201801)
@@ -182,7 +182,7 @@
     error(CachedResource::LoadError);
 }
 
-static void addAdditionalRequestHeadersToRequest(ResourceRequest& request, const CachedResourceLoader& cachedResourceLoader)
+void CachedResource::addAdditionalRequestHeaders(CachedResourceLoader& cachedResourceLoader)
 {
     // Note: We skip the Content-Security-Policy check here because we check
     // the Content-Security-Policy at the CachedResourceLoader layer so we can
@@ -191,30 +191,24 @@
     FrameLoader& frameLoader = cachedResourceLoader.frame()->loader();
     String outgoingReferrer;
     String outgoingOrigin;
-    if (request.httpReferrer().isNull()) {
+    if (m_resourceRequest.httpReferrer().isNull()) {
         outgoingReferrer = frameLoader.outgoingReferrer();
         outgoingOrigin = frameLoader.outgoingOrigin();
     } else {
-        outgoingReferrer = request.httpReferrer();
+        outgoingReferrer = m_resourceRequest.httpReferrer();
         outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer)->toString();
     }
 
-    auto referrerPolicy = cachedResourceLoader.document() ? cachedResourceLoader.document()->referrerPolicy() : ReferrerPolicy::Default;
-    outgoingReferrer = SecurityPolicy::generateReferrerHeader(referrerPolicy, request.url(), outgoingReferrer);
+    outgoingReferrer = SecurityPolicy::generateReferrerHeader(cachedResourceLoader.document()->referrerPolicy(), m_resourceRequest.url(), outgoingReferrer);
     if (outgoingReferrer.isEmpty())
-        request.clearHTTPReferrer();
+        m_resourceRequest.clearHTTPReferrer();
     else
-        request.setHTTPReferrer(outgoingReferrer);
-    FrameLoader::addHTTPOriginIfNeeded(request, outgoingOrigin);
+        m_resourceRequest.setHTTPReferrer(outgoingReferrer);
+    FrameLoader::addHTTPOriginIfNeeded(m_resourceRequest, outgoingOrigin);
 
-    frameLoader.addExtraFieldsToSubresourceRequest(request);
+    frameLoader.addExtraFieldsToSubresourceRequest(m_resourceRequest);
 }
 
-void CachedResource::addAdditionalRequestHeaders(CachedResourceLoader& cachedResourceLoader)
-{
-    addAdditionalRequestHeadersToRequest(m_resourceRequest, cachedResourceLoader);
-}
-
 void CachedResource::load(CachedResourceLoader& cachedResourceLoader, const ResourceLoaderOptions& options)
 {
     if (!cachedResourceLoader.frame()) {
@@ -423,8 +417,6 @@
     m_response = response;
     m_response.setType(m_responseType);
     m_response.setRedirected(m_redirectChainCacheStatus.status != RedirectChainCacheStatus::NoRedirection);
-
-    m_varyingHeaderValues = collectVaryingRequestHeaders(m_resourceRequest, m_response, m_sessionID);
 }
 
 void CachedResource::responseReceived(const ResourceResponse& response)
@@ -773,17 +765,6 @@
     return WebCore::redirectChainAllowsReuse(m_redirectChainCacheStatus, reuseExpiredRedirection);
 }
 
-bool CachedResource::varyHeaderValuesMatch(const ResourceRequest& request, const CachedResourceLoader& cachedResourceLoader)
-{
-    if (m_varyingHeaderValues.isEmpty())
-        return true;
-
-    ResourceRequest requestWithFullHeaders(request);
-    addAdditionalRequestHeadersToRequest(requestWithFullHeaders, cachedResourceLoader);
-
-    return verifyVaryingRequestHeaders(m_varyingHeaderValues, requestWithFullHeaders, m_sessionID);
-}
-
 unsigned CachedResource::overheadSize() const
 {
     static const int kAverageClientsHashMapSize = 384;

Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (201800 => 201801)


--- trunk/Source/WebCore/loader/cache/CachedResource.h	2016-06-08 09:01:07 UTC (rev 201800)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h	2016-06-08 09:06:07 UTC (rev 201801)
@@ -242,8 +242,6 @@
     virtual RevalidationDecision makeRevalidationDecision(CachePolicy) const;
     bool redirectChainAllowsReuse(ReuseExpiredRedirectionOrNot) const;
 
-    bool varyHeaderValuesMatch(const ResourceRequest&, const CachedResourceLoader&);
-
     bool isCacheValidator() const { return m_resourceToRevalidate; }
     CachedResource* resourceToRevalidate() const { return m_resourceToRevalidate; }
     
@@ -356,8 +354,6 @@
 
     RedirectChainCacheStatus m_redirectChainCacheStatus;
 
-    Vector<std::pair<String, String>> m_varyingHeaderValues;
-
     unsigned long m_identifierForLoadWithoutResourceLoader { 0 };
 };
 

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (201800 => 201801)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2016-06-08 09:01:07 UTC (rev 201800)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2016-06-08 09:06:07 UTC (rev 201801)
@@ -753,9 +753,6 @@
         return Reload;
     }
 
-    if (!existingResource->varyHeaderValuesMatch(request, *this))
-        return Reload;
-
     auto* textDecoder = existingResource->textResourceDecoder();
     if (textDecoder && !textDecoder->hasEqualEncodingForCharset(cachedResourceRequest.charset()))
         return Reload;

Modified: trunk/Source/WebCore/platform/network/CacheValidation.cpp (201800 => 201801)


--- trunk/Source/WebCore/platform/network/CacheValidation.cpp	2016-06-08 09:01:07 UTC (rev 201800)
+++ trunk/Source/WebCore/platform/network/CacheValidation.cpp	2016-06-08 09:06:07 UTC (rev 201801)
@@ -27,9 +27,6 @@
 #include "CacheValidation.h"
 
 #include "HTTPHeaderMap.h"
-#include "NetworkStorageSession.h"
-#include "PlatformCookieJar.h"
-#include "ResourceRequest.h"
 #include "ResourceResponse.h"
 #include <wtf/CurrentTime.h>
 
@@ -329,54 +326,4 @@
     return result;
 }
 
-static String headerValueForVary(SessionID sessionID, const ResourceRequest& request, const String& headerName)
-{
-    // Explicit handling for cookies is needed because they are added magically by the networking layer.
-    // FIXME: The value might have changed between making the request and retrieving the cookie here.
-    // We could fetch the cookie when making the request but that seems overkill as the case is very rare and it
-    // is a blocking operation. This should be sufficient to cover reasonable cases.
-    if (headerName == httpHeaderNameString(HTTPHeaderName::Cookie)) {
-        if (sessionID != SessionID::defaultSessionID()) {
-            // FIXME: Don't know how to get the cookie. There should be a global way to get NetworkStorageSession from sessionID.
-            return "";
-        }
-        return cookieRequestHeaderFieldValue(NetworkStorageSession::defaultStorageSession(), request.firstPartyForCookies(), request.url());
-    }
-    return request.httpHeaderField(headerName);
 }
-
-Vector<std::pair<String, String>> collectVaryingRequestHeaders(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, SessionID sessionID)
-{
-    String varyValue = response.httpHeaderField(WebCore::HTTPHeaderName::Vary);
-    if (varyValue.isEmpty())
-        return { };
-    Vector<String> varyingHeaderNames;
-    varyValue.split(',', /*allowEmptyEntries*/ false, varyingHeaderNames);
-    Vector<std::pair<String, String>> varyingRequestHeaders;
-    varyingRequestHeaders.reserveCapacity(varyingHeaderNames.size());
-    for (auto& varyHeaderName : varyingHeaderNames) {
-        String headerName = varyHeaderName.stripWhiteSpace();
-        String headerValue = headerValueForVary(sessionID, request, headerName);
-        varyingRequestHeaders.append(std::make_pair(headerName, headerValue));
-    }
-    return varyingRequestHeaders;
-}
-
-bool verifyVaryingRequestHeaders(const Vector<std::pair<String, String>>& varyingRequestHeaders, const WebCore::ResourceRequest& request, SessionID sessionID)
-{
-    for (auto& varyingRequestHeader : varyingRequestHeaders) {
-        // FIXME: Vary: * in response would ideally trigger a cache delete instead of a store.
-        if (varyingRequestHeader.first == "*")
-            return false;
-        if (sessionID != SessionID::defaultSessionID() && varyingRequestHeader.first == httpHeaderNameString(HTTPHeaderName::Cookie)) {
-            // FIXME: See the comment in headerValueForVary.
-            return false;
-        }
-        String headerValue = headerValueForVary(sessionID, request, varyingRequestHeader.first);
-        if (headerValue != varyingRequestHeader.second)
-            return false;
-    }
-    return true;
-}
-
-}

Modified: trunk/Source/WebCore/platform/network/CacheValidation.h (201800 => 201801)


--- trunk/Source/WebCore/platform/network/CacheValidation.h	2016-06-08 09:01:07 UTC (rev 201800)
+++ trunk/Source/WebCore/platform/network/CacheValidation.h	2016-06-08 09:06:07 UTC (rev 201801)
@@ -27,15 +27,11 @@
 #define CacheValidation_h
 
 #include "PlatformExportMacros.h"
-#include "SessionID.h"
 #include <wtf/Optional.h>
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
 class HTTPHeaderMap;
-class ResourceRequest;
 class ResourceResponse;
 
 struct RedirectChainCacheStatus {
@@ -69,9 +65,6 @@
 };
 WEBCORE_EXPORT CacheControlDirectives parseCacheControlDirectives(const HTTPHeaderMap&);
 
-WEBCORE_EXPORT Vector<std::pair<String, String>> collectVaryingRequestHeaders(const ResourceRequest&, const ResourceResponse&, SessionID = SessionID::defaultSessionID());
-WEBCORE_EXPORT bool verifyVaryingRequestHeaders(const Vector<std::pair<String, String>>& varyingRequestHeaders, const ResourceRequest&, SessionID = SessionID::defaultSessionID());
-
 }
 
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to