Changeset 239740 in webkit


Ignore:
Timestamp:
Jan 8, 2019 1:23:00 PM (5 years ago)
Author:
achristensen@apple.com
Message:

Stop using NetworkProcess::singleton in NetworkCache code
https://bugs.webkit.org/show_bug.cgi?id=193243

Reviewed by Brent Fulgham.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::open):
(WebKit::NetworkCache::Cache::Cache):

  • NetworkProcess/cache/NetworkCache.h:

(WebKit::NetworkCache::Cache::networkProcess):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
(WebKit::NetworkCache::SpeculativeLoadManager::canRetrieve const):
(WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource):
(WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):

  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::Statistics::recordRetrievalRequest):
(WebKit::NetworkCache::Statistics::recordNotUsingCacheForRequest):
(WebKit::NetworkCache::Statistics::recordRetrievalFailure):
(WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
(WebKit::NetworkCache::Statistics::recordRevalidationSuccess):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::retrieveFromMemory):

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

Location:
trunk/Source/WebKit
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r239738 r239740  
     12019-01-08  Alex Christensen  <achristensen@webkit.org>
     2
     3        Stop using NetworkProcess::singleton in NetworkCache code
     4        https://bugs.webkit.org/show_bug.cgi?id=193243
     5
     6        Reviewed by Brent Fulgham.
     7
     8        * NetworkProcess/cache/NetworkCache.cpp:
     9        (WebKit::NetworkCache::Cache::open):
     10        (WebKit::NetworkCache::Cache::Cache):
     11        * NetworkProcess/cache/NetworkCache.h:
     12        (WebKit::NetworkCache::Cache::networkProcess):
     13        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
     14        (WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
     15        (WebKit::NetworkCache::SpeculativeLoadManager::canRetrieve const):
     16        (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry):
     17        (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource):
     18        (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
     19        (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):
     20        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
     21        (WebKit::NetworkCache::Statistics::recordRetrievalRequest):
     22        (WebKit::NetworkCache::Statistics::recordNotUsingCacheForRequest):
     23        (WebKit::NetworkCache::Statistics::recordRetrievalFailure):
     24        (WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
     25        (WebKit::NetworkCache::Statistics::recordRevalidationSuccess):
     26        * NetworkProcess/cache/NetworkCacheStorage.cpp:
     27        (WebKit::NetworkCache::retrieveFromMemory):
     28        * NetworkProcess/cache/NetworkCacheStorage.h:
     29        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
     30        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
     31
    1322019-01-08  Alex Christensen  <achristensen@webkit.org>
    233
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp

    r239725 r239740  
    6060}
    6161
    62 RefPtr<Cache> Cache::open(const String& cachePath, OptionSet<Option> options)
     62RefPtr<Cache> Cache::open(NetworkProcess& networkProcess, const String& cachePath, OptionSet<Option> options)
    6363{
    6464    auto storage = Storage::open(cachePath, options.contains(Option::TestingMode) ? Storage::Mode::AvoidRandomness : Storage::Mode::Normal);
     
    6969        return nullptr;
    7070
    71     return adoptRef(*new Cache(storage.releaseNonNull(), options));
     71    return adoptRef(*new Cache(networkProcess, storage.releaseNonNull(), options));
    7272}
    7373
     
    7979#endif
    8080
    81 Cache::Cache(Ref<Storage>&& storage, OptionSet<Option> options)
     81Cache::Cache(NetworkProcess& networkProcess, Ref<Storage>&& storage, OptionSet<Option> options)
    8282    : m_storage(WTFMove(storage))
     83    , m_networkProcess(networkProcess)
    8384{
    8485#if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h

    r239725 r239740  
    4242
    4343namespace WebKit {
     44
     45class NetworkProcess;
     46
    4447namespace NetworkCache {
    4548
     
    98101#endif
    99102    };
    100     static RefPtr<Cache> open(const String& cachePath, OptionSet<Option>);
     103    static RefPtr<Cache> open(NetworkProcess&, const String& cachePath, OptionSet<Option>);
    101104
    102105    void setCapacity(size_t);
     
    144147#endif
    145148
     149    NetworkProcess& networkProcess() { return m_networkProcess.get(); }
     150
    146151    ~Cache();
    147152
    148153private:
    149     Cache(Ref<Storage>&&, OptionSet<Option> options);
     154    Cache(NetworkProcess&, Ref<Storage>&&, OptionSet<Option> options);
    150155
    151156    Key makeCacheKey(const WebCore::ResourceRequest&);
     
    159164
    160165    Ref<Storage> m_storage;
     166    Ref<NetworkProcess> m_networkProcess;
    161167
    162168#if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
     
    169175};
    170176
    171 }
    172 }
     177} // namespace NetworkCache
     178} // namespace WebKit
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp

    r239427 r239740  
    6565#endif
    6666
    67 static void logSpeculativeLoadingDiagnosticMessage(const GlobalFrameID& frameID, const String& message)
     67static void logSpeculativeLoadingDiagnosticMessage(NetworkProcess& networkProcess, const GlobalFrameID& frameID, const String& message)
    6868{
    6969#if !LOG_DISABLED
     
    7171        allSpeculativeLoadingDiagnosticMessages().add(message);
    7272#endif
    73     NetworkProcess::singleton().logDiagnosticMessage(frameID.first, WebCore::DiagnosticLoggingKeys::networkCacheKey(), message, WebCore::ShouldSample::Yes);
     73    networkProcess.logDiagnosticMessage(frameID.first, WebCore::DiagnosticLoggingKeys::networkCacheKey(), message, WebCore::ShouldSample::Yes);
    7474}
    7575
     
    314314        if (!canUsePreloadedEntry(*preloadedEntry, request)) {
    315315            LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Retrieval: Could not use preloaded entry to satisfy request for '%s' due to HTTP headers mismatch:", storageKey.identifier().utf8().data());
    316             logSpeculativeLoadingDiagnosticMessage(frameID, preloadedEntry->wasRevalidated() ? DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey() : DiagnosticLoggingKeys::wastedSpeculativeWarmupWithoutRevalidationKey());
     316            logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, preloadedEntry->wasRevalidated() ? DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey() : DiagnosticLoggingKeys::wastedSpeculativeWarmupWithoutRevalidationKey());
    317317            return false;
    318318        }
    319319
    320320        LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Retrieval: Using preloaded entry to satisfy request for '%s':", storageKey.identifier().utf8().data());
    321         logSpeculativeLoadingDiagnosticMessage(frameID, preloadedEntry->wasRevalidated() ? DiagnosticLoggingKeys::successfulSpeculativeWarmupWithRevalidationKey() : DiagnosticLoggingKeys::successfulSpeculativeWarmupWithoutRevalidationKey());
     321        logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, preloadedEntry->wasRevalidated() ? DiagnosticLoggingKeys::successfulSpeculativeWarmupWithRevalidationKey() : DiagnosticLoggingKeys::successfulSpeculativeWarmupWithoutRevalidationKey());
    322322        return true;
    323323    }
     
    327327    if (!pendingPreload) {
    328328        if (m_notPreloadedEntries.get(storageKey))
    329             logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::entryWronglyNotWarmedUpKey());
     329            logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::entryWronglyNotWarmedUpKey());
    330330        else
    331             logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::unknownEntryRequestKey());
     331            logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::unknownEntryRequestKey());
    332332
    333333        return false;
     
    336336    if (!canUsePendingPreload(*pendingPreload, request)) {
    337337        LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Retrieval: revalidation already in progress for '%s' but unusable due to HTTP headers mismatch:", storageKey.identifier().utf8().data());
    338         logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey());
     338        logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey());
    339339        return false;
    340340    }
     
    409409        ASSERT(preloadedEntry);
    410410        if (preloadedEntry->wasRevalidated())
    411             logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey());
     411            logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey());
    412412        else
    413             logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::wastedSpeculativeWarmupWithoutRevalidationKey());
     413            logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::wastedSpeculativeWarmupWithoutRevalidationKey());
    414414    }));
    415415}
     
    478478        if (satisfyPendingRequests(key, revalidatedEntry.get())) {
    479479            if (revalidatedEntry)
    480                 logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::successfulSpeculativeWarmupWithRevalidationKey());
     480                logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::successfulSpeculativeWarmupWithRevalidationKey());
    481481            return;
    482482        }
     
    538538        if (satisfyPendingRequests(key, entry.get())) {
    539539            if (entry)
    540                 logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::successfulSpeculativeWarmupWithoutRevalidationKey());
     540                logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::successfulSpeculativeWarmupWithoutRevalidationKey());
    541541            return;
    542542        }
     
    561561            LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Not preloading '%s' because it is marked as transient", key.identifier().utf8().data());
    562562            m_notPreloadedEntries.add(key, std::make_unique<ExpiringEntry>([this, key, frameID] {
    563                 logSpeculativeLoadingDiagnosticMessage(frameID, DiagnosticLoggingKeys::entryRightlyNotWarmedUpKey());
     563                logSpeculativeLoadingDiagnosticMessage(m_cache.networkProcess(), frameID, DiagnosticLoggingKeys::entryRightlyNotWarmedUpKey());
    564564                m_notPreloadedEntries.remove(key);
    565565            }));
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStatistics.cpp

    r239427 r239740  
    187187void Statistics::recordRetrievalRequest(uint64_t webPageID)
    188188{
    189     NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::retrievalRequestKey(), WebCore::ShouldSample::Yes);
     189    m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::retrievalRequestKey(), WebCore::ShouldSample::Yes);
    190190}
    191191
     
    226226            String diagnosticKey = retrieveDecisionToDiagnosticKey(retrieveDecision);
    227227            LOG(NetworkCache, "(NetworkProcess) webPageID %" PRIu64 ": %s was previously requested but we are not using the cache, reason: %s", webPageID, requestURL.string().ascii().data(), diagnosticKey.utf8().data());
    228             NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheUnusedReasonKey(), diagnosticKey, WebCore::ShouldSample::Yes);
     228            m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheUnusedReasonKey(), diagnosticKey, WebCore::ShouldSample::Yes);
    229229        } else {
    230             NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheUnusedReasonKey(), WebCore::DiagnosticLoggingKeys::neverSeenBeforeKey(), WebCore::ShouldSample::Yes);
     230            m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheUnusedReasonKey(), WebCore::DiagnosticLoggingKeys::neverSeenBeforeKey(), WebCore::ShouldSample::Yes);
    231231            markAsRequested(hash);
    232232        }
     
    266266            String diagnosticKey = storeDecisionToDiagnosticKey(storeDecision.value());
    267267            LOG(NetworkCache, "(NetworkProcess) webPageID %" PRIu64 ": %s was previously request but is not in the cache, reason: %s", webPageID, requestURL.string().ascii().data(), diagnosticKey.utf8().data());
    268             NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheFailureReasonKey(), diagnosticKey, WebCore::ShouldSample::Yes);
     268            m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheFailureReasonKey(), diagnosticKey, WebCore::ShouldSample::Yes);
    269269        } else {
    270             NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheFailureReasonKey(), WebCore::DiagnosticLoggingKeys::neverSeenBeforeKey(), WebCore::ShouldSample::Yes);
     270            m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheFailureReasonKey(), WebCore::DiagnosticLoggingKeys::neverSeenBeforeKey(), WebCore::ShouldSample::Yes);
    271271            markAsRequested(hash);
    272272        }
     
    296296    if (decision == UseDecision::Use) {
    297297        LOG(NetworkCache, "(NetworkProcess) webPageID %" PRIu64 ": %s is in the cache and is used", webPageID, requestURL.string().ascii().data());
    298         NetworkProcess::singleton().logDiagnosticMessageWithResult(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::retrievalKey(), WebCore::DiagnosticLoggingResultPass, WebCore::ShouldSample::Yes);
     298        m_cache.networkProcess().logDiagnosticMessageWithResult(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::retrievalKey(), WebCore::DiagnosticLoggingResultPass, WebCore::ShouldSample::Yes);
    299299        return;
    300300    }
     
    302302    if (decision == UseDecision::Validate) {
    303303        LOG(NetworkCache, "(NetworkProcess) webPageID %" PRIu64 ": %s is in the cache but needs revalidation", webPageID, requestURL.string().ascii().data());
    304         NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::needsRevalidationKey(), WebCore::ShouldSample::Yes);
     304        m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::needsRevalidationKey(), WebCore::ShouldSample::Yes);
    305305        return;
    306306    }
     
    308308    String diagnosticKey = cachedEntryReuseFailureToDiagnosticKey(decision);
    309309    LOG(NetworkCache, "(NetworkProcess) webPageID %" PRIu64 ": %s is in the cache but wasn't used, reason: %s", webPageID, requestURL.string().ascii().data(), diagnosticKey.utf8().data());
    310     NetworkProcess::singleton().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheReuseFailureKey(), diagnosticKey, WebCore::ShouldSample::Yes);
     310    m_cache.networkProcess().logDiagnosticMessage(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheReuseFailureKey(), diagnosticKey, WebCore::ShouldSample::Yes);
    311311}
    312312
     
    316316    LOG(NetworkCache, "(NetworkProcess) webPageID %" PRIu64 ": %s was successfully revalidated", webPageID, requestURL.string().ascii().data());
    317317
    318     NetworkProcess::singleton().logDiagnosticMessageWithResult(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::revalidatingKey(), WebCore::DiagnosticLoggingResultPass, WebCore::ShouldSample::Yes);
     318    m_cache.networkProcess().logDiagnosticMessageWithResult(webPageID, WebCore::DiagnosticLoggingKeys::networkCacheKey(), WebCore::DiagnosticLoggingKeys::revalidatingKey(), WebCore::DiagnosticLoggingResultPass, WebCore::ShouldSample::Yes);
    319319}
    320320
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp

    r239738 r239740  
    6666
    6767    const Key key;
    68     const RetrieveCompletionHandler completionHandler;
     68    RetrieveCompletionHandler completionHandler;
    6969   
    7070    std::unique_ptr<Record> resultRecord;
     
    771771        if (operation->record.key == key) {
    772772            LOG(NetworkCacheStorage, "(NetworkProcess) found write operation in progress");
    773             RunLoop::main().dispatch([record = operation->record, completionHandler = WTFMove(completionHandler)] {
     773            RunLoop::main().dispatch([record = operation->record, completionHandler = WTFMove(completionHandler)] () mutable {
    774774                completionHandler(std::make_unique<Storage::Record>(record), { });
    775775            });
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h

    r239427 r239740  
    7979
    8080    // This may call completion handler synchronously on failure.
    81     using RetrieveCompletionHandler = Function<bool (std::unique_ptr<Record>, const Timings&)>;
     81    using RetrieveCompletionHandler = CompletionHandler<bool(std::unique_ptr<Record>, const Timings&)>;
    8282    void retrieve(const Key&, unsigned priority, RetrieveCompletionHandler&&);
    8383
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm

    r239683 r239740  
    123123#endif
    124124
    125     m_cache = NetworkCache::Cache::open(m_diskCacheDirectory, cacheOptions);
     125    m_cache = NetworkCache::Cache::open(*this, m_diskCacheDirectory, cacheOptions);
    126126    if (!m_cache)
    127127        RELEASE_LOG_ERROR(NetworkCache, "Failed to initialize the WebKit network disk cache");
  • trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp

    r239671 r239740  
    120120#endif
    121121
    122     m_cache = NetworkCache::Cache::open(m_diskCacheDirectory, cacheOptions);
     122    m_cache = NetworkCache::Cache::open(*this, m_diskCacheDirectory, cacheOptions);
    123123
    124124    if (!parameters.cookiePersistentStoragePath.isEmpty()) {
Note: See TracChangeset for help on using the changeset viewer.