WebKit Bugzilla
Attachment 369487 Details for
Bug 197736
: Limit number of prefetches of a given page
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197736-20190509145001.patch (text/plain), 3.37 KB, created by
Rob Buis
on 2019-05-09 05:50:01 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Rob Buis
Created:
2019-05-09 05:50:01 PDT
Size:
3.37 KB
patch
obsolete
>Subversion Revision: 245127 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index b8082181010baea60ae247624c9165dbcad66457..b45c9cfe816548b141a9f97f0a0ba34b3301c0ab 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,18 @@ >+2019-05-09 Rob Buis <rbuis@igalia.com> >+ >+ Limit number of prefetches of a given page >+ https://bugs.webkit.org/show_bug.cgi?id=197736 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Limit prefetches for same url to 1. >+ >+ * NetworkProcess/NetworkResourceLoader.cpp: >+ (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): >+ * NetworkProcess/cache/PrefetchCache.cpp: >+ (WebKit::PrefetchCache::contains const): >+ * NetworkProcess/cache/PrefetchCache.h: >+ > 2019-05-08 Antoine Quint <graouts@apple.com> > > [iOS] Correctly handle overlapping regions for elements with a touch-action property >diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >index 4510e9268a22c205c8c6b035a7b0fcfe478e06e2..acb03eeda530ef74865a7750e6f1db724e25d1d4 100644 >--- a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >@@ -810,8 +810,12 @@ void NetworkResourceLoader::tryStoreAsCacheEntry() > return; > > if (isCrossOriginPrefetch()) { >- if (auto session = m_connection->networkProcess().networkSession(sessionID())) >+ if (auto session = m_connection->networkProcess().networkSession(sessionID())) { >+ // Limit prefetches for same url to 1. >+ if (session->prefetchCache().contains(m_networkLoad->currentRequest().url())) >+ return; > session->prefetchCache().store(m_networkLoad->currentRequest().url(), WTFMove(m_response), WTFMove(m_bufferedDataForCache)); >+ } > return; > } > m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable { >diff --git a/Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp b/Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp >index 73cab47f91ee74241f232fffbe3f992df9c56cfc..1ae112af6354b297868073ebc034b769cd19258a 100644 >--- a/Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp >+++ b/Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp >@@ -63,6 +63,14 @@ std::unique_ptr<PrefetchCache::Entry> PrefetchCache::take(const URL& url) > return resources->take(url); > } > >+bool PrefetchCache::contains(const URL& url) const >+{ >+ auto* resources = m_sessionPrefetches.get(); >+ if (!resources) >+ return nullptr; >+ return resources->contains(url); >+} >+ > static const Seconds expirationTimeout { 5_s }; > > void PrefetchCache::store(const URL& requestUrl, WebCore::ResourceResponse&& response, RefPtr<WebCore::SharedBuffer>&& buffer) >diff --git a/Source/WebKit/NetworkProcess/cache/PrefetchCache.h b/Source/WebKit/NetworkProcess/cache/PrefetchCache.h >index c8895fe24b76f8d04adb638c73b1a1c84b2a9c40..b95b3a5cff9cdcfb95e267612095250d046d91bd 100644 >--- a/Source/WebKit/NetworkProcess/cache/PrefetchCache.h >+++ b/Source/WebKit/NetworkProcess/cache/PrefetchCache.h >@@ -54,6 +54,7 @@ public: > }; > > std::unique_ptr<Entry> take(const URL&); >+ bool contains(const URL&) const; > void store(const URL&, WebCore::ResourceResponse&&, RefPtr<WebCore::SharedBuffer>&&); > > private:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197736
:
369487
|
369489
|
369500