Diff
Modified: trunk/Source/WebCore/ChangeLog (221453 => 221454)
--- trunk/Source/WebCore/ChangeLog 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/ChangeLog 2017-08-31 23:20:03 UTC (rev 221454)
@@ -1,3 +1,32 @@
+2017-08-31 Youenn Fablet <you...@apple.com>
+
+ Update CacheStorage caches only if it is updated
+ https://bugs.webkit.org/show_bug.cgi?id=176135
+
+ Reviewed by Alex Christensen.
+
+ Covered by existing tests.
+
+ When retrieving caches from the engine, CacheStorage gets an update counter.
+ When this counter is different from the previous received one, CacheStorage will update its cache list.
+ Otherwise it will skip this update step.
+
+ * Modules/cache/CacheStorage.cpp:
+ (WebCore::CacheStorage::retrieveCaches):
+ * Modules/cache/CacheStorage.h:
+ * Modules/cache/CacheStorageConnection.cpp:
+ (WebCore::CacheStorageConnection::retrieveCaches):
+ * Modules/cache/CacheStorageConnection.h:
+ (WebCore::CacheStorageConnection::doRetrieveCaches):
+ * Modules/cache/DOMCache.cpp:
+ (WebCore::DOMCache::CacheInfos::isolatedCopy):
+ * Modules/cache/DOMCache.h:
+ (WebCore::DOMCache::CacheInfos::encode const):
+ (WebCore::DOMCache::CacheInfos::decode):
+ * Modules/cache/WorkerCacheStorageConnection.cpp:
+ (WebCore::WorkerCacheStorageConnection::doRetrieveCaches):
+ * Modules/cache/WorkerCacheStorageConnection.h:
+
2017-08-31 Eric Carlson <eric.carl...@apple.com>
Switch HTMLMediaElement to release logging
Modified: trunk/Source/WebCore/Modules/cache/CacheStorage.cpp (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/CacheStorage.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/CacheStorage.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -119,7 +119,7 @@
return;
setPendingActivity(this);
- m_connection->retrieveCaches(origin, [this, callback = WTFMove(callback)](CacheInfosOrError&& result) {
+ m_connection->retrieveCaches(origin, m_updateCounter, [this, callback = WTFMove(callback)](CacheInfosOrError&& result) {
if (!m_isStopped) {
// FIXME: We should probably propagate that error up to the promise based operation.
ASSERT(result.hasValue());
@@ -127,17 +127,23 @@
callback();
return;
}
+
auto& cachesInfo = result.value();
- ASSERT(scriptExecutionContext());
- m_caches.removeAllMatching([&](auto& cache) {
- return cachesInfo.findMatching([&](const auto& info) { return info.identifier == cache->identifier(); }) == notFound;
- });
- for (auto& info : cachesInfo) {
- if (m_caches.findMatching([&](const auto& cache) { return info.identifier == cache->identifier(); }) == notFound)
- m_caches.append(Cache::create(*scriptExecutionContext(), WTFMove(info.name), info.identifier, m_connection.copyRef()));
+ if (m_updateCounter != cachesInfo.updateCounter) {
+ m_updateCounter = cachesInfo.updateCounter;
+
+ ASSERT(scriptExecutionContext());
+
+ Vector<Ref<Cache>> caches;
+ caches.reserveInitialCapacity(cachesInfo.infos.size());
+ for (auto& info : cachesInfo.infos) {
+ auto position = m_caches.findMatching([&](const auto& cache) { return info.identifier == cache->identifier(); });
+ caches.uncheckedAppend(position != notFound ? m_caches[position].copyRef() : Cache::create(*scriptExecutionContext(), WTFMove(info.name), info.identifier, m_connection.copyRef()));
+ }
+ m_caches = WTFMove(caches);
+
}
-
callback();
}
unsetPendingActivity(this);
Modified: trunk/Source/WebCore/Modules/cache/CacheStorage.h (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/CacheStorage.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/CacheStorage.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -56,6 +56,7 @@
String origin() const;
Vector<Ref<Cache>> m_caches;
+ uint64_t m_updateCounter { 0 };
Ref<CacheStorageConnection> m_connection;
bool m_isStopped { false };
};
Modified: trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -47,12 +47,12 @@
doRemove(requestIdentifier, cacheIdentifier);
}
-void CacheStorageConnection::retrieveCaches(const String& origin, CacheInfosCallback&& callback)
+void CacheStorageConnection::retrieveCaches(const String& origin, uint64_t updateCounter, CacheInfosCallback&& callback)
{
uint64_t requestIdentifier = ++m_lastRequestIdentifier;
m_retrieveCachesPendingRequests.add(requestIdentifier, WTFMove(callback));
- doRetrieveCaches(requestIdentifier, origin);
+ doRetrieveCaches(requestIdentifier, origin, updateCounter);
}
void CacheStorageConnection::retrieveRecords(uint64_t cacheIdentifier, RecordsCallback&& callback)
Modified: trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -39,7 +39,7 @@
void open(const String& origin, const String& cacheName, DOMCache::CacheIdentifierCallback&&);
void remove(uint64_t cacheIdentifier, DOMCache::CacheIdentifierCallback&&);
- void retrieveCaches(const String& origin, DOMCache::CacheInfosCallback&&);
+ void retrieveCaches(const String& origin, uint64_t updateCounter, DOMCache::CacheInfosCallback&&);
void retrieveRecords(uint64_t cacheIdentifier, DOMCache::RecordsCallback&&);
void batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest&, CacheQueryOptions&&, DOMCache::RecordIdentifiersCallback&&);
@@ -62,7 +62,7 @@
private:
virtual void doOpen(uint64_t requestIdentifier, const String& /* origin */, const String& /* cacheName */) { openCompleted(requestIdentifier, makeUnexpected(DOMCache::Error::NotImplemented)); }
virtual void doRemove(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */) { removeCompleted(requestIdentifier, makeUnexpected(DOMCache::Error::NotImplemented)); }
- virtual void doRetrieveCaches(uint64_t requestIdentifier, const String& /* origin */) { updateCaches(requestIdentifier, { }); }
+ virtual void doRetrieveCaches(uint64_t requestIdentifier, const String& /* origin */, uint64_t /* updateCounter */) { updateCaches(requestIdentifier, { }); }
virtual void doRetrieveRecords(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */) { updateRecords(requestIdentifier, { }); }
virtual void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */, const ResourceRequest&, CacheQueryOptions&&) { deleteRecordsCompleted(requestIdentifier, makeUnexpected(DOMCache::Error::NotImplemented)); }
Modified: trunk/Source/WebCore/Modules/cache/DOMCache.cpp (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/DOMCache.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/DOMCache.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -109,6 +109,15 @@
return Record { identifier, updateResponseCounter, requestHeadersGuard, request, options, referrer, responseHeadersGuard, response, copyResponseBody(responseBody) };
}
+CacheInfos CacheInfos::isolatedCopy()
+{
+ Vector<CacheInfo> isolatedCaches;
+ isolatedCaches.reserveInitialCapacity(infos.size());
+ for (const auto& info : infos)
+ isolatedCaches.uncheckedAppend(CacheInfo { info.identifier, info.name.isolatedCopy() });
+ return { WTFMove(isolatedCaches), updateCounter };
+}
+
} // namespace DOMCache
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/cache/DOMCache.h (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/DOMCache.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/DOMCache.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -73,6 +73,16 @@
String name;
};
+struct CacheInfos {
+ CacheInfos isolatedCopy();
+
+ template<class Encoder> void encode(Encoder&) const;
+ template<class Decoder> static bool decode(Decoder&, CacheInfos&);
+
+ Vector<CacheInfo> infos;
+ uint64_t updateCounter;
+};
+
using CacheIdentifierOrError = Expected<uint64_t, Error>;
using CacheIdentifierCallback = WTF::Function<void(const CacheIdentifierOrError&)>;
@@ -79,7 +89,8 @@
using RecordIdentifiersOrError = Expected<Vector<uint64_t>, Error>;
using RecordIdentifiersCallback = WTF::Function<void(RecordIdentifiersOrError&&)>;
-using CacheInfosOrError = Expected<Vector<WebCore::DOMCache::CacheInfo>, Error>;
+
+using CacheInfosOrError = Expected<CacheInfos, Error>;
using CacheInfosCallback = WTF::Function<void(CacheInfosOrError&&)>;
using RecordsOrError = Expected<Vector<Record>, Error>;
@@ -87,6 +98,19 @@
using CompletionCallback = WTF::Function<void(std::optional<Error>&&)>;
+template<class Encoder> inline void CacheInfos::encode(Encoder& encoder) const
+{
+ encoder << infos;
+ encoder << updateCounter;
+}
+
+template<class Decoder> inline bool CacheInfos::decode(Decoder& decoder, CacheInfos& cacheInfos)
+{
+ if (!decoder.decode(cacheInfos.infos))
+ return false;
+ return decoder.decode(cacheInfos.updateCounter);
+}
+
} // namespace DOMCache
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -142,23 +142,19 @@
});
}
-void WorkerCacheStorageConnection::doRetrieveCaches(uint64_t requestIdentifier, const String& origin)
+void WorkerCacheStorageConnection::doRetrieveCaches(uint64_t requestIdentifier, const String& origin, uint64_t updateCounter)
{
- m_proxy.postTaskToLoader([this, protectedThis = makeRef(*this), requestIdentifier, origin = origin.isolatedCopy()](ScriptExecutionContext&) mutable {
+ m_proxy.postTaskToLoader([this, protectedThis = makeRef(*this), requestIdentifier, origin = origin.isolatedCopy(), updateCounter](ScriptExecutionContext&) mutable {
ASSERT(isMainThread());
ASSERT(m_mainThreadConnection);
- m_mainThreadConnection->retrieveCaches(origin, [this, protectedThis = WTFMove(protectedThis), requestIdentifier](CacheInfosOrError&& result) mutable {
+ m_mainThreadConnection->retrieveCaches(origin, updateCounter, [this, protectedThis = WTFMove(protectedThis), requestIdentifier](CacheInfosOrError&& result) mutable {
CacheInfosOrError isolatedResult;
if (!result.hasValue())
isolatedResult = WTFMove(result);
- else {
- Vector<CacheInfo> isolatedCaches;
- isolatedCaches.reserveInitialCapacity(result.value().size());
- for (const auto& cache : result.value())
- isolatedCaches.uncheckedAppend(CacheInfo { cache.identifier, cache.name.isolatedCopy() });
- isolatedResult = WTFMove(isolatedCaches);
- }
+ else
+ isolatedResult = result.value().isolatedCopy();
+
m_proxy.postTaskForModeToWorkerGlobalScope([this, protectedThis = WTFMove(protectedThis), requestIdentifier, result = WTFMove(isolatedResult)](ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
updateCaches(requestIdentifier, WTFMove(result));
Modified: trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h (221453 => 221454)
--- trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -44,7 +44,7 @@
// WebCore::CacheStorageConnection
void doOpen(uint64_t requestIdentifier, const String& origin, const String& cacheName) final;
void doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
- void doRetrieveCaches(uint64_t requestIdentifier, const String& origin) final;
+ void doRetrieveCaches(uint64_t requestIdentifier, const String& origin, uint64_t updateCounter) final;
void doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&) final;
Modified: trunk/Source/WebKit/ChangeLog (221453 => 221454)
--- trunk/Source/WebKit/ChangeLog 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/ChangeLog 2017-08-31 23:20:03 UTC (rev 221454)
@@ -1,5 +1,36 @@
2017-08-31 Youenn Fablet <you...@apple.com>
+ Update CacheStorage caches only if it is updated
+ https://bugs.webkit.org/show_bug.cgi?id=176135
+
+ Reviewed by Alex Christensen.
+
+ For each change to CacheStorageEngineCaches list of cache, CacheStorageEngineCaches increments a counter.
+ When sending the list of caches, CacheStorageEngineCaches will compare its counter with the one provided.
+ If they sare the same, CacheStorageEngineCaches will return nothing.
+ Otherwise it returns the whole list of caches.
+
+ * NetworkProcess/cache/CacheStorageEngine.cpp:
+ (WebKit::CacheStorage::Engine::retrieveCaches):
+ * NetworkProcess/cache/CacheStorageEngine.h:
+ * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
+ (WebKit::CacheStorage::Caches::initialize):
+ (WebKit::CacheStorage::Caches::open):
+ (WebKit::CacheStorage::Caches::remove):
+ (WebKit::CacheStorage::Caches::clearMemoryRepresentation):
+ (WebKit::CacheStorage::Caches::cacheInfos const):
+ * NetworkProcess/cache/CacheStorageEngineCaches.h:
+ (WebKit::CacheStorage::Caches::updateCounter const):
+ * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
+ (WebKit::CacheStorageEngineConnection::caches):
+ * NetworkProcess/cache/CacheStorageEngineConnection.h:
+ * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
+ * WebProcess/Cache/WebCacheStorageConnection.cpp:
+ (WebKit::WebCacheStorageConnection::doRetrieveCaches):
+ * WebProcess/Cache/WebCacheStorageConnection.h:
+
+2017-08-31 Youenn Fablet <you...@apple.com>
+
Introduce CacheStorageEngineCache to handle cache records
https://bugs.webkit.org/show_bug.cgi?id=176137
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -127,15 +127,15 @@
});
}
-void Engine::retrieveCaches(const String& origin, CacheInfosCallback&& callback)
+void Engine::retrieveCaches(const String& origin, uint64_t updateCounter, CacheInfosCallback&& callback)
{
- readCachesFromDisk(origin, [callback = WTFMove(callback)](CachesOrError&& cachesOrError) mutable {
+ readCachesFromDisk(origin, [updateCounter, callback = WTFMove(callback)](CachesOrError&& cachesOrError) mutable {
if (!cachesOrError.hasValue()) {
callback(makeUnexpected(cachesOrError.error()));
return;
}
- callback(cachesOrError.value().get().cacheInfos());
+ callback(cachesOrError.value().get().cacheInfos(updateCounter));
});
}
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -55,7 +55,7 @@
void open(const String& origin, const String& cacheName, WebCore::DOMCache::CacheIdentifierCallback&&);
void remove(uint64_t cacheIdentifier, WebCore::DOMCache::CacheIdentifierCallback&&);
- void retrieveCaches(const String& origin, WebCore::DOMCache::CacheInfosCallback&&);
+ void retrieveCaches(const String& origin, uint64_t updateCounter, WebCore::DOMCache::CacheInfosCallback&&);
void retrieveRecords(uint64_t cacheIdentifier, WebCore::DOMCache::RecordsCallback&&);
void putRecords(uint64_t cacheIdentifier, Vector<WebCore::DOMCache::Record>&&, WebCore::DOMCache::RecordIdentifiersCallback&&);
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -75,6 +75,8 @@
}
m_storage = storage.releaseNonNull();
readCachesFromDisk([this, callback = WTFMove(callback)](Expected<Vector<Cache>, Error>&& result) {
+ makeDirty();
+
if (!result.hasValue()) {
callback(result.error());
@@ -99,7 +101,7 @@
m_rootPath = { };
}
-Cache* Caches::find(const String& name)
+const Cache* Caches::find(const String& name) const
{
auto position = m_caches.findMatching([&](const auto& item) { return item.name() == name; });
return (position != notFound) ? &m_caches[position] : nullptr;
@@ -119,6 +121,8 @@
{
ASSERT(m_engine);
+ makeDirty();
+
uint64_t cacheIdentifier = m_engine->nextCacheIdentifier();
m_caches.append(Cache { cacheIdentifier, WTFMove(name) });
writeCachesToDisk([callback = WTFMove(callback), cacheIdentifier](std::optional<Error>&& error) mutable {
@@ -142,9 +146,12 @@
return;
}
+ makeDirty();
+
auto cache = WTFMove(m_caches[position]);
m_caches.remove(position);
m_removedCaches.append(WTFMove(cache));
+ ++m_updateCounter;
writeCachesToDisk(WTFMove(callback));
}
@@ -242,18 +249,27 @@
void Caches::clearMemoryRepresentation()
{
+ makeDirty();
m_caches.clear();
m_isInitialized = false;
m_storage = nullptr;
}
-Vector<CacheInfo> Caches::cacheInfos() const
+bool Caches::isDirty(uint64_t updateCounter) const
{
+ ASSERT(m_updateCounter >= updateCounter);
+ return m_updateCounter != updateCounter;
+}
+
+CacheInfos Caches::cacheInfos(uint64_t updateCounter) const
+{
Vector<CacheInfo> cacheInfos;
- cacheInfos.reserveInitialCapacity(m_caches.size());
- for (auto& cache : m_caches)
- cacheInfos.uncheckedAppend(CacheInfo { cache.identifier(), cache.name() });
- return cacheInfos;
+ if (isDirty(updateCounter)) {
+ cacheInfos.reserveInitialCapacity(m_caches.size());
+ for (auto& cache : m_caches)
+ cacheInfos.uncheckedAppend(CacheInfo { cache.identifier(), cache.name() });
+ }
+ return { WTFMove(cacheInfos), m_updateCounter };
}
} // namespace CacheStorage
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.h (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -39,20 +39,18 @@
static Ref<Caches> create(Engine& engine, const String& origin) { return adoptRef(*new Caches { engine, origin }); }
void initialize(WebCore::DOMCache::CompletionCallback&&);
+ void open(String&& name, WebCore::DOMCache::CacheIdentifierCallback&&);
+ void remove(uint64_t identifier, WebCore::DOMCache::CompletionCallback&&);
+ void clearMemoryRepresentation();
+ void detach();
+
bool isInitialized() const { return m_isInitialized; }
+ WebCore::DOMCache::CacheInfos cacheInfos(uint64_t updateCounter) const;
- Cache* find(const String& name);
+ const Cache* find(const String& name) const;
Cache* find(uint64_t identifier);
- void open(String&& name, WebCore::DOMCache::CacheIdentifierCallback&&);
- void remove(uint64_t identifier, WebCore::DOMCache::CompletionCallback&&);
-
- Vector<WebCore::DOMCache::CacheInfo> cacheInfos() const;
-
- void clearMemoryRepresentation();
- void detach();
-
private:
Caches(Engine&, const String& rootPath);
@@ -61,8 +59,12 @@
bool shouldPersist() const { return !m_rootPath.isNull(); }
+ void makeDirty() { ++m_updateCounter; }
+ bool isDirty(uint64_t updateCounter) const;
+
bool m_isInitialized { false };
Engine* m_engine { nullptr };
+ uint64_t m_updateCounter { 0 };
String m_rootPath;
Vector<Cache> m_caches;
Vector<Cache> m_removedCaches;
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -56,9 +56,9 @@
});
}
-void CacheStorageEngineConnection::caches(PAL::SessionID sessionID, uint64_t requestIdentifier, const String& origin)
+void CacheStorageEngineConnection::caches(PAL::SessionID sessionID, uint64_t requestIdentifier, const String& origin, uint64_t updateCounter)
{
- Engine::from(sessionID).retrieveCaches(origin, [protectedThis = makeRef(*this), this, sessionID, origin, requestIdentifier](CacheInfosOrError&& result) {
+ Engine::from(sessionID).retrieveCaches(origin, updateCounter, [protectedThis = makeRef(*this), this, sessionID, origin, requestIdentifier](CacheInfosOrError&& result) {
m_connection.connection().send(Messages::WebCacheStorageConnection::UpdateCaches(requestIdentifier, result), sessionID.sessionID());
});
}
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -52,7 +52,7 @@
void open(PAL::SessionID, uint64_t openRequestIdentifier, const String& origin, const String& cacheName);
void remove(PAL::SessionID, uint64_t removeRequestIdentifier, uint64_t cacheIdentifier);
- void caches(PAL::SessionID, uint64_t retrieveCachesIdentifier, const String& origin);
+ void caches(PAL::SessionID, uint64_t retrieveCachesIdentifier, const String& origin, uint64_t updateCounter);
void clearMemoryRepresentation(PAL::SessionID, const String& origin);
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in (221453 => 221454)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in 2017-08-31 23:20:03 UTC (rev 221454)
@@ -23,7 +23,7 @@
messages -> CacheStorageEngineConnection {
Open(PAL::SessionID sessionID, uint64_t requestIdentifier, String origin, String cacheName);
Remove(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier);
- Caches(PAL::SessionID sessionID, uint64_t requestIdentifier, String origin);
+ Caches(PAL::SessionID sessionID, uint64_t requestIdentifier, String origin, uint64_t updateCounter);
ClearMemoryRepresentation(PAL::SessionID sessionID, String origin);
Modified: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp (221453 => 221454)
--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp 2017-08-31 23:20:03 UTC (rev 221454)
@@ -66,9 +66,9 @@
connection().send(Messages::CacheStorageEngineConnection::Remove(m_sessionID, requestIdentifier, cacheIdentifier), 0);
}
-void WebCacheStorageConnection::doRetrieveCaches(uint64_t requestIdentifier, const String& origin)
+void WebCacheStorageConnection::doRetrieveCaches(uint64_t requestIdentifier, const String& origin, uint64_t updateCounter)
{
- connection().send(Messages::CacheStorageEngineConnection::Caches(m_sessionID, requestIdentifier, origin), 0);
+ connection().send(Messages::CacheStorageEngineConnection::Caches(m_sessionID, requestIdentifier, origin, updateCounter), 0);
}
void WebCacheStorageConnection::doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier)
Modified: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h (221453 => 221454)
--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h 2017-08-31 23:19:31 UTC (rev 221453)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h 2017-08-31 23:20:03 UTC (rev 221454)
@@ -54,7 +54,7 @@
// WebCore::CacheStorageConnection
void doOpen(uint64_t requestIdentifier, const String& origin, const String& cacheName) final;
void doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
- void doRetrieveCaches(uint64_t requestIdentifier, const String& origin) final;
+ void doRetrieveCaches(uint64_t requestIdentifier, const String& origin, uint64_t updateCounter) final;
void doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&) final;