Title: [211049] trunk/Source/WebKit2
Revision
211049
Author
[email protected]
Date
2017-01-23 12:21:40 -0800 (Mon, 23 Jan 2017)

Log Message

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):

Modified Paths

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 {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to