Diff
Modified: trunk/Source/WebKit2/ChangeLog (211048 => 211049)
--- trunk/Source/WebKit2/ChangeLog 2017-01-23 20:15:15 UTC (rev 211048)
+++ trunk/Source/WebKit2/ChangeLog 2017-01-23 20:21:40 UTC (rev 211049)
@@ -1,3 +1,34 @@
+2017-01-23 Antti Koivisto <[email protected]>
+
+ Use priorities in speculative revalidation
+ https://bugs.webkit.org/show_bug.cgi?id=167314
+
+ Reviewed by Chris Dumez.
+
+ We currently do all speculative cache operations with 'Medium' priority
+ and network operations with 'Low'. We should use the actual request priorities instead.
+
+ * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
+ (WebKit::NetworkCache::constructRevalidationRequest):
+
+ Use priority when constructing validation request.
+
+ (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage):
+
+ Use priority when retrieving from cache.
+
+ (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
+ * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
+ * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
+ (WebKit::NetworkCache::SubresourceInfo::encode):
+ (WebKit::NetworkCache::SubresourceInfo::decode):
+
+ Save and restore the priority.
+
+ * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
+ (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
+ (WebKit::NetworkCache::SubresourceInfo::priority):
+
2017-01-23 Jer Noble <[email protected]>
Video details does not apear and missing scrubber in Control Center
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp (211048 => 211049)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp 2017-01-23 20:15:15 UTC (rev 211048)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp 2017-01-23 20:21:40 UTC (rev 211049)
@@ -103,6 +103,8 @@
String lastModified = entry.response().httpHeaderField(HTTPHeaderName::LastModified);
if (!lastModified.isEmpty())
revalidationRequest.setHTTPHeaderField(HTTPHeaderName::IfModifiedSince, lastModified);
+
+ revalidationRequest.setPriority(subResourceInfo.priority());
return revalidationRequest;
}
@@ -404,9 +406,9 @@
}));
}
-void SpeculativeLoadManager::retrieveEntryFromStorage(const Key& key, RetrieveCompletionHandler&& completionHandler)
+void SpeculativeLoadManager::retrieveEntryFromStorage(const Key& key, ResourceLoadPriority priority, RetrieveCompletionHandler&& completionHandler)
{
- m_storage.retrieve(key, static_cast<unsigned>(ResourceLoadPriority::Medium), [completionHandler = WTFMove(completionHandler)](auto record) {
+ m_storage.retrieve(key, static_cast<unsigned>(priority), [completionHandler = WTFMove(completionHandler)](auto record) {
if (!record) {
completionHandler(nullptr);
return false;
@@ -487,9 +489,9 @@
{
if (m_pendingPreloads.contains(key))
return;
-
+
m_pendingPreloads.add(key, nullptr);
- retrieveEntryFromStorage(key, [this, key, subResourceInfo, frameID](std::unique_ptr<Entry> entry) {
+ retrieveEntryFromStorage(key, subResourceInfo.priority(), [this, key, subResourceInfo, frameID](std::unique_ptr<Entry> entry) {
ASSERT(!m_pendingPreloads.get(key));
bool removed = m_pendingPreloads.remove(key);
ASSERT_UNUSED(removed, removed);
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h (211048 => 211049)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h 2017-01-23 20:15:15 UTC (rev 211048)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h 2017-01-23 20:21:40 UTC (rev 211049)
@@ -61,7 +61,7 @@
void addPreloadedEntry(std::unique_ptr<Entry>, const GlobalFrameID&, std::optional<WebCore::ResourceRequest>&& revalidationRequest = std::nullopt);
void preloadEntry(const Key&, const SubresourceInfo&, const GlobalFrameID&);
- void retrieveEntryFromStorage(const Key&, RetrieveCompletionHandler&&);
+ void retrieveEntryFromStorage(const Key&, WebCore::ResourceLoadPriority, RetrieveCompletionHandler&&);
void revalidateEntry(std::unique_ptr<Entry>, const SubresourceInfo&, const GlobalFrameID&);
bool satisfyPendingRequests(const Key&, Entry*);
void retrieveSubresourcesEntry(const Key& storageKey, std::function<void (std::unique_ptr<SubresourcesEntry>)>&&);
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp (211048 => 211049)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp 2017-01-23 20:15:15 UTC (rev 211048)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp 2017-01-23 20:21:40 UTC (rev 211049)
@@ -44,6 +44,7 @@
encoder << m_firstPartyForCookies;
encoder << m_requestHeaders;
+ encoder.encodeEnum(m_priority);
}
bool SubresourceInfo::decode(WTF::Persistence::Decoder& decoder, SubresourceInfo& info)
@@ -60,6 +61,9 @@
if (!decoder.decode(info.m_requestHeaders))
return false;
+ if (!decoder.decodeEnum(info.m_priority))
+ return false;
+
return true;
}
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h (211048 => 211049)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h 2017-01-23 20:15:15 UTC (rev 211048)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h 2017-01-23 20:21:40 UTC (rev 211049)
@@ -47,6 +47,7 @@
: m_isTransient(isTransient)
, m_firstPartyForCookies(isTransient ? WebCore::URL() : request.firstPartyForCookies())
, m_requestHeaders(isTransient ? WebCore::HTTPHeaderMap() : request.httpHeaderFields())
+ , m_priority(request.priority())
{
}
@@ -53,11 +54,13 @@
bool isTransient() const { return m_isTransient; }
const WebCore::URL& firstPartyForCookies() const { ASSERT(!m_isTransient); return m_firstPartyForCookies; }
const WebCore::HTTPHeaderMap& requestHeaders() const { ASSERT(!m_isTransient); return m_requestHeaders; }
+ WebCore::ResourceLoadPriority priority() const { ASSERT(!m_isTransient); return m_priority; }
private:
bool m_isTransient { true };
WebCore::URL m_firstPartyForCookies;
WebCore::HTTPHeaderMap m_requestHeaders;
+ WebCore::ResourceLoadPriority m_priority;
};
struct SubresourceLoad {