CachedPage* PageCache::get(HistoryItem& item, Page* page) { CachedPage* cachedPage = item.m_cachedPage.get(); if (!cachedPage) { if (item.m_pruningReason != PruningReason::None) logPageCacheFailureDiagnosticMessage(page, pruningReasonToDiagnosticLoggingKey(item.m_pruningReason)); return nullptr; } if (cachedPage->hasExpired() || (page && page->isResourceCachingDisabled())) { LOG(PageCache, "Not restoring page for %s from back/forward cache because cache entry has expired", item.url().string().ascii().data()); logPageCacheFailureDiagnosticMessage(page, DiagnosticLoggingKeys::expiredKey()); remove(item); return nullptr; } return cachedPage; }
std::unique_ptr<CachedPage> PageCache::take(HistoryItem& item, Page* page) { if (!item.m_cachedPage) { if (item.m_pruningReason != PruningReason::None) logPageCacheFailureDiagnosticMessage(page, pruningReasonToDiagnosticLoggingKey(item.m_pruningReason)); return nullptr; } std::unique_ptr<CachedPage> cachedPage = WTF::move(item.m_cachedPage); m_items.remove(&item); if (cachedPage->hasExpired()) { LOG(PageCache, "Not restoring page for %s from back/forward cache because cache entry has expired", item.url().string().ascii().data()); logPageCacheFailureDiagnosticMessage(page, DiagnosticLoggingKeys::expiredKey()); return nullptr; } return cachedPage; }