Changeset 211049 in webkit
- Timestamp:
- Jan 23, 2017, 12:21:40 PM (9 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r211045 r211049 1 2017-01-23 Antti Koivisto <antti@apple.com> 2 3 Use priorities in speculative revalidation 4 https://bugs.webkit.org/show_bug.cgi?id=167314 5 6 Reviewed by Chris Dumez. 7 8 We currently do all speculative cache operations with 'Medium' priority 9 and network operations with 'Low'. We should use the actual request priorities instead. 10 11 * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: 12 (WebKit::NetworkCache::constructRevalidationRequest): 13 14 Use priority when constructing validation request. 15 16 (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage): 17 18 Use priority when retrieving from cache. 19 20 (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): 21 * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: 22 * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: 23 (WebKit::NetworkCache::SubresourceInfo::encode): 24 (WebKit::NetworkCache::SubresourceInfo::decode): 25 26 Save and restore the priority. 27 28 * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h: 29 (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo): 30 (WebKit::NetworkCache::SubresourceInfo::priority): 31 1 32 2017-01-23 Jer Noble <jer.noble@apple.com> 2 33 -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp
r210364 r211049 104 104 if (!lastModified.isEmpty()) 105 105 revalidationRequest.setHTTPHeaderField(HTTPHeaderName::IfModifiedSince, lastModified); 106 107 revalidationRequest.setPriority(subResourceInfo.priority()); 106 108 107 109 return revalidationRequest; … … 405 407 } 406 408 407 void SpeculativeLoadManager::retrieveEntryFromStorage(const Key& key, Re trieveCompletionHandler&& completionHandler)408 { 409 m_storage.retrieve(key, static_cast<unsigned>( ResourceLoadPriority::Medium), [completionHandler = WTFMove(completionHandler)](auto record) {409 void SpeculativeLoadManager::retrieveEntryFromStorage(const Key& key, ResourceLoadPriority priority, RetrieveCompletionHandler&& completionHandler) 410 { 411 m_storage.retrieve(key, static_cast<unsigned>(priority), [completionHandler = WTFMove(completionHandler)](auto record) { 410 412 if (!record) { 411 413 completionHandler(nullptr); … … 488 490 if (m_pendingPreloads.contains(key)) 489 491 return; 490 492 491 493 m_pendingPreloads.add(key, nullptr); 492 retrieveEntryFromStorage(key, [this, key, subResourceInfo, frameID](std::unique_ptr<Entry> entry) {494 retrieveEntryFromStorage(key, subResourceInfo.priority(), [this, key, subResourceInfo, frameID](std::unique_ptr<Entry> entry) { 493 495 ASSERT(!m_pendingPreloads.get(key)); 494 496 bool removed = m_pendingPreloads.remove(key); -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h
r210364 r211049 62 62 void addPreloadedEntry(std::unique_ptr<Entry>, const GlobalFrameID&, std::optional<WebCore::ResourceRequest>&& revalidationRequest = std::nullopt); 63 63 void preloadEntry(const Key&, const SubresourceInfo&, const GlobalFrameID&); 64 void retrieveEntryFromStorage(const Key&, RetrieveCompletionHandler&&);64 void retrieveEntryFromStorage(const Key&, WebCore::ResourceLoadPriority, RetrieveCompletionHandler&&); 65 65 void revalidateEntry(std::unique_ptr<Entry>, const SubresourceInfo&, const GlobalFrameID&); 66 66 bool satisfyPendingRequests(const Key&, Entry*); -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp
r210835 r211049 45 45 encoder << m_firstPartyForCookies; 46 46 encoder << m_requestHeaders; 47 encoder.encodeEnum(m_priority); 47 48 } 48 49 … … 61 62 return false; 62 63 64 if (!decoder.decodeEnum(info.m_priority)) 65 return false; 66 63 67 return true; 64 68 } -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h
r210502 r211049 48 48 , m_firstPartyForCookies(isTransient ? WebCore::URL() : request.firstPartyForCookies()) 49 49 , m_requestHeaders(isTransient ? WebCore::HTTPHeaderMap() : request.httpHeaderFields()) 50 , m_priority(request.priority()) 50 51 { 51 52 } … … 54 55 const WebCore::URL& firstPartyForCookies() const { ASSERT(!m_isTransient); return m_firstPartyForCookies; } 55 56 const WebCore::HTTPHeaderMap& requestHeaders() const { ASSERT(!m_isTransient); return m_requestHeaders; } 57 WebCore::ResourceLoadPriority priority() const { ASSERT(!m_isTransient); return m_priority; } 56 58 57 59 private: … … 59 61 WebCore::URL m_firstPartyForCookies; 60 62 WebCore::HTTPHeaderMap m_requestHeaders; 63 WebCore::ResourceLoadPriority m_priority; 61 64 }; 62 65
Note:
See TracChangeset
for help on using the changeset viewer.