Changeset 194898 in webkit


Ignore:
Timestamp:
Jan 12, 2016 9:31:02 AM (8 years ago)
Author:
Antti Koivisto
Message:

Don't reuse memory cache entries with different charset
https://bugs.webkit.org/show_bug.cgi?id=110031
Source/WebCore:

rdar://problem/13666418

Reviewed by Andreas Kling.

Test: fast/loader/cache-encoding.html

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
(WebCore::logResourceRevalidationDecision):
(WebCore::CachedResourceLoader::determineRevalidationPolicy):

Pass full CachedResourceRequest to the function.
If charset differs don't reuse the cache entry.

  • loader/cache/CachedResourceLoader.h:

LayoutTests:

Reviewed by Andreas Kling.

  • fast/loader/cache-encoding-expected.txt: Added.
  • fast/loader/cache-encoding.html: Added.
  • fast/loader/resources/success.js: Added.
Location:
trunk
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r194897 r194898  
     12016-01-12  Antti Koivisto  <antti@apple.com>
     2
     3        Don't reuse memory cache entries with different charset
     4        https://bugs.webkit.org/show_bug.cgi?id=110031
     5
     6        Reviewed by Andreas Kling.
     7
     8        * fast/loader/cache-encoding-expected.txt: Added.
     9        * fast/loader/cache-encoding.html: Added.
     10        * fast/loader/resources/success.js: Added.
     11
    1122016-01-12  Ryan Haddad  <ryanhaddad@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r194896 r194898  
     12016-01-12  Antti Koivisto  <antti@apple.com>
     2
     3        Don't reuse memory cache entries with different charset
     4        https://bugs.webkit.org/show_bug.cgi?id=110031
     5        rdar://problem/13666418
     6
     7        Reviewed by Andreas Kling.
     8
     9        Test: fast/loader/cache-encoding.html
     10
     11        * loader/cache/CachedResourceLoader.cpp:
     12        (WebCore::CachedResourceLoader::requestResource):
     13        (WebCore::logResourceRevalidationDecision):
     14        (WebCore::CachedResourceLoader::determineRevalidationPolicy):
     15
     16            Pass full CachedResourceRequest to the function.
     17            If charset differs don't reuse the cache entry.
     18
     19        * loader/cache/CachedResourceLoader.h:
     20
    1212016-01-12  Gyuyoung Kim  <gyuyoung.kim@webkit.org>
    222
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r194419 r194898  
    575575    logMemoryCacheResourceRequest(frame(), resource ? DiagnosticLoggingKeys::inMemoryCacheKey() : DiagnosticLoggingKeys::notInMemoryCacheKey());
    576576
    577     const RevalidationPolicy policy = determineRevalidationPolicy(type, request.mutableResourceRequest(), request.forPreload(), resource.get(), request.defer());
     577    const RevalidationPolicy policy = determineRevalidationPolicy(type, request, resource.get());
    578578    switch (policy) {
    579579    case Reload:
     
    714714}
    715715
    716 CachedResourceLoader::RevalidationPolicy CachedResourceLoader::determineRevalidationPolicy(CachedResource::Type type, ResourceRequest& request, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption defer) const
    717 {
     716CachedResourceLoader::RevalidationPolicy CachedResourceLoader::determineRevalidationPolicy(CachedResource::Type type, CachedResourceRequest& cachedResourceRequest, CachedResource* existingResource) const
     717{
     718    auto& request = cachedResourceRequest.resourceRequest();
     719
    718720    if (!existingResource)
    719721        return Load;
    720722
    721723    // We already have a preload going for this URL.
    722     if (forPreload && existingResource->isPreloaded())
     724    if (cachedResourceRequest.forPreload() && existingResource->isPreloaded())
    723725        return Use;
    724726
     
    729731        return Reload;
    730732    }
     733
     734    if (existingResource->encoding() != TextEncoding(cachedResourceRequest.charset()))
     735        return Reload;
    731736
    732737    // FIXME: We should use the same cache policy for all resource types. The raw resource policy is overly strict
     
    744749    // Do not load from cache if images are not enabled. The load for this image will be blocked
    745750    // in CachedImage::load.
    746     if (CachedResourceRequest::DeferredByClient == defer)
     751    if (cachedResourceRequest.defer() == CachedResourceRequest::DeferredByClient)
    747752        return Reload;
    748753   
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.h

    r194209 r194898  
    149149
    150150    enum RevalidationPolicy { Use, Revalidate, Reload, Load };
    151     RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, ResourceRequest&, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption) const;
     151    RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, CachedResourceRequest&, CachedResource* existingResource) const;
    152152   
    153153    bool shouldContinueAfterNotifyingLoadedFromMemoryCache(const CachedResourceRequest&, CachedResource*);
Note: See TracChangeset for help on using the changeset viewer.