Changeset 239759 in webkit


Ignore:
Timestamp:
Jan 8, 2019, 5:28:13 PM (6 years ago)
Author:
achristensen@apple.com
Message:

Fix CompletionHandler assertions introduced today.
https://bugs.webkit.org/show_bug.cgi?id=193237

This reverts part of r239710 and all of r239725, r239738, and r239748 which unsuccessfully tried to fix all the assertions.
This code is a mess that will have to be cleaned up later.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::from):

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

(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::remove):
(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::clear):
(WebKit::NetworkCache::Cache::retrieveData):

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

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

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::WriteOperation::~WriteOperation): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::store):

Location:
trunk/Source/WebKit
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r239757 r239759  
     12019-01-08  Alex Christensen  <achristensen@webkit.org>
     2
     3        Fix CompletionHandler assertions introduced today.
     4        https://bugs.webkit.org/show_bug.cgi?id=193237
     5
     6        This reverts part of r239710 and all of r239725, r239738, and r239748 which unsuccessfully tried to fix all the assertions.
     7        This code is a mess that will have to be cleaned up later.
     8
     9        * NetworkProcess/NetworkResourceLoader.cpp:
     10        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
     11        * NetworkProcess/cache/CacheStorageEngine.cpp:
     12        (WebKit::CacheStorage::Engine::from):
     13        * NetworkProcess/cache/CacheStorageEngine.h:
     14        * NetworkProcess/cache/NetworkCache.cpp:
     15        (WebKit::NetworkCache::Cache::store):
     16        (WebKit::NetworkCache::Cache::remove):
     17        (WebKit::NetworkCache::Cache::traverse):
     18        (WebKit::NetworkCache::Cache::clear):
     19        (WebKit::NetworkCache::Cache::retrieveData):
     20        * NetworkProcess/cache/NetworkCache.h:
     21        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
     22        (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):
     23        * NetworkProcess/cache/NetworkCacheStorage.cpp:
     24        (WebKit::NetworkCache::Storage::store):
     25        (WebKit::NetworkCache::Storage::WriteOperation::~WriteOperation): Deleted.
     26        * NetworkProcess/cache/NetworkCacheStorage.h:
     27        (WebKit::NetworkCache::Storage::store):
     28
    1292019-01-08  Jiewen Tan  <jiewen_tan@apple.com>
    230
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r239741 r239759  
    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 || mappedBody->shareableResourceHandle.isNull())
     799        if (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/CacheStorageEngine.cpp

    r239710 r239759  
    7474}
    7575
    76 void Engine::from(NetworkProcess& networkProcess, PAL::SessionID sessionID, CompletionHandler<void(Engine&)>&& callback)
     76void Engine::from(NetworkProcess& networkProcess, PAL::SessionID sessionID, Function<void(Engine&)>&& callback)
    7777{
    7878    if (auto* engine = networkProcess.findCacheEngine(sessionID)) {
  • trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h

    r239710 r239759  
    6060    ~Engine();
    6161
    62     static void from(NetworkProcess&, PAL::SessionID, CompletionHandler<void(Engine&)>&&);
     62    static void from(NetworkProcess&, PAL::SessionID, Function<void(Engine&)>&&);
    6363    static void destroyEngine(NetworkProcess&, PAL::SessionID);
    6464    static void fetchEntries(NetworkProcess&, PAL::SessionID, bool shouldComputeSize, CompletionHandler<void(Vector<WebsiteData::Entry>)>&&);
     
    121121
    122122    using CachesOrError = Expected<std::reference_wrapper<Caches>, WebCore::DOMCacheEngine::Error>;
    123     using CachesCallback = CompletionHandler<void(CachesOrError&&)>;
     123    using CachesCallback = Function<void(CachesOrError&&)>;
    124124    void readCachesFromDisk(const WebCore::ClientOrigin&, CachesCallback&&);
    125125
    126126    using CacheOrError = Expected<std::reference_wrapper<Cache>, WebCore::DOMCacheEngine::Error>;
    127     using CacheCallback = CompletionHandler<void(CacheOrError&&)>;
     127    using CacheCallback = Function<void(CacheOrError&&)>;
    128128    void readCache(uint64_t cacheIdentifier, CacheCallback&&);
    129129
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp

    r239740 r239759  
    373373}
    374374
    375 std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody*)>&& completionHandler)
     375std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, Function<void(MappedBody&)>&& completionHandler)
    376376{
    377377    ASSERT(responseData);
     
    393393            m_statistics->recordNotCachingResponse(key, storeDecision);
    394394
    395         completionHandler(nullptr);
    396395        return nullptr;
    397396    }
     
    409408        }
    410409#endif
    411         completionHandler(&mappedBody);
     410        completionHandler(mappedBody);
    412411        LOG(NetworkCache, "(NetworkProcess) stored");
    413412    });
     
    476475}
    477476
    478 void Cache::remove(const Vector<Key>& keys, CompletionHandler<void()>&& completionHandler)
     477void Cache::remove(const Vector<Key>& keys, Function<void()>&& completionHandler)
    479478{
    480479    m_storage->remove(keys, WTFMove(completionHandler));
    481480}
    482481
    483 void Cache::traverse(CompletionHandler<void(const TraversalEntry*)>&& traverseHandler)
     482void Cache::traverse(Function<void(const TraversalEntry*)>&& traverseHandler)
    484483{
    485484    // Protect against clients making excessive traversal requests.
     
    580579}
    581580
    582 void Cache::clear(WallTime modifiedSince, CompletionHandler<void()>&& completionHandler)
     581void Cache::clear(WallTime modifiedSince, Function<void()>&& completionHandler)
    583582{
    584583    LOG(NetworkCache, "(NetworkProcess) clearing cache");
     
    603602}
    604603
    605 void Cache::retrieveData(const DataKey& dataKey, CompletionHandler<void(const uint8_t*, size_t)> completionHandler)
     604void Cache::retrieveData(const DataKey& dataKey, Function<void(const uint8_t*, size_t)> completionHandler)
    606605{
    607606    Key key { dataKey, m_storage->salt() };
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h

    r239740 r239759  
    115115        WTF_MAKE_FAST_ALLOCATED;
    116116    };
    117     using RetrieveCompletionHandler = CompletionHandler<void(std::unique_ptr<Entry>, const RetrieveInfo&)>;
     117    using RetrieveCompletionHandler = Function<void(std::unique_ptr<Entry>, const RetrieveInfo&)>;
    118118    void retrieve(const WebCore::ResourceRequest&, const GlobalFrameID&, RetrieveCompletionHandler&&);
    119     std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody*)>&&);
     119    std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, Function<void(MappedBody&)>&&);
    120120    std::unique_ptr<Entry> storeRedirect(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest& redirectRequest, Optional<Seconds> maxAgeCap);
    121121    std::unique_ptr<Entry> update(const WebCore::ResourceRequest&, const GlobalFrameID&, const Entry&, const WebCore::ResourceResponse& validatingResponse);
     
    125125        const Storage::RecordInfo& recordInfo;
    126126    };
    127     void traverse(CompletionHandler<void(const TraversalEntry*)>&&);
     127    void traverse(Function<void(const TraversalEntry*)>&&);
    128128    void remove(const Key&);
    129129    void remove(const WebCore::ResourceRequest&);
    130     void remove(const Vector<Key>&, CompletionHandler<void()>&&);
     130    void remove(const Vector<Key>&, Function<void()>&&);
    131131
    132132    void clear();
    133     void clear(WallTime modifiedSince, CompletionHandler<void()>&&);
     133    void clear(WallTime modifiedSince, Function<void()>&&);
    134134
    135     void retrieveData(const DataKey&, CompletionHandler<void(const uint8_t*, size_t)>);
     135    void retrieveData(const DataKey&, Function<void(const uint8_t*, size_t)>);
    136136    void storeData(const DataKey&,  const uint8_t* data, size_t);
    137137   
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp

    r239725 r239759  
    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

    r239740 r239759  
    114114    { }
    115115
    116     ~WriteOperation()
    117     {
    118         if (completionHandler)
    119             completionHandler(0);
    120     }
    121 
    122116    Ref<Storage> storage;
    123117
     
    892886    ASSERT(!record.key.isNull());
    893887
    894     if (!m_capacity) {
    895         completionHandler(0);
    896         return;
    897     }
     888    if (!m_capacity)
     889        return;
    898890
    899891    auto writeOperation = std::make_unique<WriteOperation>(*this, record, WTFMove(mappedBodyHandler), WTFMove(completionHandler));
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h

    r239748 r239759  
    8383
    8484    using MappedBodyHandler = Function<void (const Data& mappedBody)>;
    85     void store(const Record&, MappedBodyHandler&&, CompletionHandler<void(int)>&& = [] (int) { });
     85    void store(const Record&, MappedBodyHandler&&, CompletionHandler<void(int)>&& = { });
    8686
    8787    void remove(const Key&);
Note: See TracChangeset for help on using the changeset viewer.