Changeset 239725 in webkit


Ignore:
Timestamp:
Jan 8, 2019, 8:43:14 AM (6 years ago)
Author:
achristensen@apple.com
Message:

Always call CompletionHandler in Cache::store
https://bugs.webkit.org/show_bug.cgi?id=193237

Reviewed by Chris Dumez.

No change in behavior. This just fixes an assertion introduced in r239710 when the speculative loader finishes.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::store):

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):

Location:
trunk/Source/WebKit
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r239721 r239725  
     12019-01-08  Alex Christensen  <achristensen@webkit.org>
     2
     3        Always call CompletionHandler in Cache::store
     4        https://bugs.webkit.org/show_bug.cgi?id=193237
     5
     6        Reviewed by Chris Dumez.
     7
     8        No change in behavior. This just fixes an assertion introduced in r239710 when the speculative loader finishes.
     9
     10        * NetworkProcess/NetworkResourceLoader.cpp:
     11        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
     12        * NetworkProcess/cache/NetworkCache.cpp:
     13        (WebKit::NetworkCache::Cache::store):
     14        * NetworkProcess/cache/NetworkCache.h:
     15        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
     16        (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):
     17
    1182019-01-08  Carlos Garcia Campos  <cgarcia@igalia.com>
    219
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r239680 r239725  
    795795        return;
    796796
    797     m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable {
     797    m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto* mappedBody) mutable {
    798798#if ENABLE(SHAREABLE_RESOURCE)
    799         if (mappedBody.shareableResourceHandle.isNull())
     799        if (!mappedBody || mappedBody->shareableResourceHandle.isNull())
    800800            return;
    801801        LOG(NetworkCache, "(NetworkProcess) sending DidCacheResource");
    802         loader->send(Messages::NetworkProcessConnection::DidCacheResource(loader->originalRequest(), mappedBody.shareableResourceHandle, loader->sessionID()));
     802        loader->send(Messages::NetworkProcessConnection::DidCacheResource(loader->originalRequest(), mappedBody->shareableResourceHandle, loader->sessionID()));
    803803#endif
    804804    });
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp

    r239710 r239725  
    372372}
    373373
    374 std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody&)>&& completionHandler)
     374std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody*)>&& completionHandler)
    375375{
    376376    ASSERT(responseData);
     
    392392            m_statistics->recordNotCachingResponse(key, storeDecision);
    393393
     394        completionHandler(nullptr);
    394395        return nullptr;
    395396    }
     
    407408        }
    408409#endif
    409         completionHandler(mappedBody);
     410        completionHandler(&mappedBody);
    410411        LOG(NetworkCache, "(NetworkProcess) stored");
    411412    });
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h

    r239710 r239725  
    114114    using RetrieveCompletionHandler = CompletionHandler<void(std::unique_ptr<Entry>, const RetrieveInfo&)>;
    115115    void retrieve(const WebCore::ResourceRequest&, const GlobalFrameID&, RetrieveCompletionHandler&&);
    116     std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody&)>&&);
     116    std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody*)>&&);
    117117    std::unique_ptr<Entry> storeRedirect(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest& redirectRequest, Optional<Seconds> maxAgeCap);
    118118    std::unique_ptr<Entry> update(const WebCore::ResourceRequest&, const GlobalFrameID&, const Entry&, const WebCore::ResourceResponse& validatingResponse);
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp

    r239427 r239725  
    122122        return;
    123123    if (!m_cacheEntry && m_bufferedDataForCache) {
    124         m_cacheEntry = m_cache->store(m_originalRequest, m_response, m_bufferedDataForCache.copyRef(), [](auto& mappedBody) { });
     124        m_cacheEntry = m_cache->store(m_originalRequest, m_response, m_bufferedDataForCache.copyRef(), [](auto* mappedBody) { });
    125125        // Create a synthetic cache entry if we can't store.
    126126        if (!m_cacheEntry && isStatusCodeCacheableByDefault(m_response.httpStatusCode()))
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp

    r239427 r239725  
    885885    ASSERT(!record.key.isNull());
    886886
    887     if (!m_capacity)
    888         return;
     887    if (!m_capacity) {
     888        completionHandler(0);
     889        return;
     890    }
    889891
    890892    auto writeOperation = std::make_unique<WriteOperation>(*this, record, WTFMove(mappedBodyHandler), WTFMove(completionHandler));
Note: See TracChangeset for help on using the changeset viewer.