Diff
Modified: trunk/Source/WebKit/CMakeLists.txt (221446 => 221447)
--- trunk/Source/WebKit/CMakeLists.txt 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/CMakeLists.txt 2017-08-31 21:55:17 UTC (rev 221447)
@@ -117,6 +117,7 @@
NetworkProcess/PingLoad.cpp
NetworkProcess/cache/CacheStorageEngine.cpp
+ NetworkProcess/cache/CacheStorageEngineCache.cpp
NetworkProcess/cache/CacheStorageEngineCaches.cpp
NetworkProcess/cache/CacheStorageEngineConnection.cpp
NetworkProcess/cache/NetworkCache.cpp
Modified: trunk/Source/WebKit/ChangeLog (221446 => 221447)
--- trunk/Source/WebKit/ChangeLog 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/ChangeLog 2017-08-31 21:55:17 UTC (rev 221447)
@@ -1,3 +1,40 @@
+2017-08-31 Youenn Fablet <you...@apple.com>
+
+ Introduce CacheStorageEngineCache to handle cache records
+ https://bugs.webkit.org/show_bug.cgi?id=176137
+
+ Reviewed by Alex Christensen.
+
+ CacheStorageEngineCache is the equivalent of WebCore Cache.
+ It contains a list of records that it needs to manage (add, update, remove).
+ Moving the logic of this management from CacheStorageEngine to this new class so as to ease future development.
+
+ * CMakeLists.txt:
+ * NetworkProcess/cache/CacheStorageEngine.cpp:
+ (WebKit::CacheStorage::Engine::open):
+ (WebKit::CacheStorage::Engine::remove):
+ (WebKit::CacheStorage::Engine::retrieveRecords):
+ (WebKit::CacheStorage::Engine::putRecords):
+ (WebKit::CacheStorage::Engine::deleteMatchingRecords):
+ (WebKit::CacheStorage::Engine::cache):
+ (WebKit::CacheStorage::Engine::writeCacheRecords): Deleted.
+ (WebKit::CacheStorage::Engine::removeCacheRecords): Deleted.
+ (WebKit::CacheStorage::Engine::queryCache): Deleted.
+ * NetworkProcess/cache/CacheStorageEngine.h:
+ * NetworkProcess/cache/CacheStorageEngineCache.cpp: Added.
+ * NetworkProcess/cache/CacheStorageEngineCache.h:
+ (WebKit::CacheStorage::Cache::identifier const):
+ (WebKit::CacheStorage::Cache::name const):
+ (WebKit::CacheStorage::Cache::info const):
+ * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
+ (WebKit::CacheStorage::Caches::find):
+ (WebKit::CacheStorage::Caches::open):
+ (WebKit::CacheStorage::Caches::remove):
+ (WebKit::CacheStorage::encodeCacheNames):
+ (WebKit::CacheStorage::Caches::readCachesFromDisk):
+ (WebKit::CacheStorage::Caches::cacheInfos const):
+ * WebKit.xcodeproj/project.pbxproj:
+
2017-08-31 David Quesada <david_ques...@apple.com>
WKNavigationDelegatePrivate client redirect SPI needs to be able to detect redirects scheduled before the document finishes loading
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp (221446 => 221447)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp 2017-08-31 21:55:17 UTC (rev 221447)
@@ -93,7 +93,7 @@
Caches& caches = cachesOrError.value();
if (auto* cache = caches.find(cacheName)) {
- callback(cache->identifier);
+ callback(cache->identifier());
return;
}
@@ -146,93 +146,32 @@
callback(makeUnexpected(result.error()));
return;
}
- // FIXME: Pass records by reference.
- auto& records = result.value().get().records;
- Vector<Record> copy;
- copy.reserveInitialCapacity(records.size());
- for (auto& record : records)
- copy.uncheckedAppend(record.copy());
-
- callback(WTFMove(copy));
+ callback(result.value().get().records());
});
}
void Engine::putRecords(uint64_t cacheIdentifier, Vector<Record>&& records, RecordIdentifiersCallback&& callback)
{
- readCache(cacheIdentifier, [this, cacheIdentifier, records = WTFMove(records), callback = WTFMove(callback)](CacheOrError&& result) mutable {
+ readCache(cacheIdentifier, [this, records = WTFMove(records), callback = WTFMove(callback)](CacheOrError&& result) mutable {
if (!result.hasValue()) {
callback(makeUnexpected(result.error()));
return;
}
- Cache& cache = result.value();
-
- WebCore::CacheQueryOptions options;
- Vector<uint64_t> recordIdentifiers;
- recordIdentifiers.reserveInitialCapacity(records.size());
- for (auto& record : records) {
- auto matchingRecords = Engine::queryCache(cache.records, record.request, options);
- if (matchingRecords.isEmpty()) {
- record.identifier = ++cache.nextRecordIdentifier;
- recordIdentifiers.uncheckedAppend(record.identifier);
- cache.records.append(WTFMove(record));
- } else {
- auto identifier = matchingRecords[0];
- auto position = cache.records.findMatching([&](const auto& item) { return item.identifier == identifier; });
- ASSERT(position != notFound);
- if (position != notFound) {
- auto& existingRecord = cache.records[position];
- recordIdentifiers.uncheckedAppend(identifier);
- existingRecord.responseHeadersGuard = record.responseHeadersGuard;
- existingRecord.response = WTFMove(record.response);
- existingRecord.responseBody = WTFMove(record.responseBody);
- ++existingRecord.updateResponseCounter;
- }
- }
- }
- writeCacheRecords(cacheIdentifier, WTFMove(recordIdentifiers), [callback = WTFMove(callback)](RecordIdentifiersOrError&& result) mutable {
- callback(WTFMove(result));
- });
+ result.value().get().put(WTFMove(records), WTFMove(callback));
});
}
void Engine::deleteMatchingRecords(uint64_t cacheIdentifier, WebCore::ResourceRequest&& request, WebCore::CacheQueryOptions&& options, RecordIdentifiersCallback&& callback)
{
- readCache(cacheIdentifier, [this, cacheIdentifier, request = WTFMove(request), options = WTFMove(options), callback = WTFMove(callback)](CacheOrError&& result) mutable {
+ readCache(cacheIdentifier, [this, request = WTFMove(request), options = WTFMove(options), callback = WTFMove(callback)](CacheOrError&& result) mutable {
if (!result.hasValue()) {
callback(makeUnexpected(result.error()));
return;
}
- auto& currentRecords = result.value().get().records;
-
- auto recordsToRemove = queryCache(currentRecords, request, options);
- if (recordsToRemove.isEmpty()) {
- callback({ });
- return;
- }
-
- Vector<Record> recordsToKeep;
- for (auto& record : currentRecords) {
- if (recordsToRemove.findMatching([&](auto item) { return item == record.identifier; }) == notFound)
- recordsToKeep.append(record.copy());
- }
- removeCacheRecords(cacheIdentifier, WTFMove(recordsToRemove), [this, cacheIdentifier, recordsToKeep = WTFMove(recordsToKeep), callback = WTFMove(callback)](RecordIdentifiersOrError&& result) mutable {
- if (!result.hasValue()) {
- callback(makeUnexpected(result.error()));
- return;
- }
-
- auto* writtenCache = cache(cacheIdentifier);
- if (!writtenCache) {
- callback(makeUnexpected(Error::Internal));
- return;
- }
- writtenCache->records = WTFMove(recordsToKeep);
-
- callback(WTFMove(result.value()));
- });
+ result.value().get().remove(WTFMove(request), WTFMove(options), WTFMove(callback));
});
}
@@ -304,18 +243,6 @@
callback(std::reference_wrapper<Cache> { *cache });
}
-void Engine::writeCacheRecords(uint64_t cacheIdentifier, Vector<uint64_t>&& recordsIdentifiers, RecordIdentifiersCallback&& callback)
-{
- // FIXME: Implement writing.
- callback(WTFMove(recordsIdentifiers));
-}
-
-void Engine::removeCacheRecords(uint64_t cacheIdentifier, Vector<uint64_t>&& recordsIdentifiers, RecordIdentifiersCallback&& callback)
-{
- // FIXME: Implement writing.
- callback(WTFMove(recordsIdentifiers));
-}
-
Cache* Engine::cache(uint64_t cacheIdentifier)
{
Cache* result = nullptr;
@@ -326,19 +253,6 @@
return result;
}
-Vector<uint64_t> Engine::queryCache(const Vector<Record>& records, const WebCore::ResourceRequest& request, const WebCore::CacheQueryOptions& options)
-{
- if (!options.ignoreMethod && request.httpMethod() != "GET")
- return { };
-
- Vector<uint64_t> results;
- for (const auto& record : records) {
- if (WebCore::DOMCache::queryCacheMatch(request, record.request, record.response, options))
- results.append(record.identifier);
- }
- return results;
-}
-
void Engine::writeFile(const String& filename, NetworkCache::Data&& data, WebCore::DOMCache::CompletionCallback&& callback)
{
if (!shouldPersist()) {
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h (221446 => 221447)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h 2017-08-31 21:55:17 UTC (rev 221447)
@@ -85,11 +85,6 @@
using CacheCallback = WTF::Function<void(CacheOrError&&)>;
void readCache(uint64_t cacheIdentifier, CacheCallback&&);
- void writeCacheRecords(uint64_t cacheIdentifier, Vector<uint64_t>&&, WebCore::DOMCache::RecordIdentifiersCallback&&);
- void removeCacheRecords(uint64_t cacheIdentifier, Vector<uint64_t>&&, WebCore::DOMCache::RecordIdentifiersCallback&&);
-
- Vector<uint64_t> queryCache(const Vector<WebCore::DOMCache::Record>&, const WebCore::ResourceRequest&, const WebCore::CacheQueryOptions&);
-
Cache* cache(uint64_t cacheIdentifier);
HashMap<String, Ref<Caches>> m_caches;
Added: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp (0 => 221447)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp (rev 0)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp 2017-08-31 21:55:17 UTC (rev 221447)
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CacheStorageEngine.h"
+
+#include "NetworkCacheIOChannel.h"
+#include "NetworkCacheKey.h"
+#include "NetworkProcess.h"
+#include <WebCore/CacheQueryOptions.h>
+#include <pal/SessionID.h>
+#include <wtf/CurrentTime.h>
+#include <wtf/MainThread.h>
+#include <wtf/NeverDestroyed.h>
+#include <wtf/persistence/PersistentCoders.h>
+#include <wtf/persistence/PersistentDecoder.h>
+#include <wtf/persistence/PersistentEncoder.h>
+#include <wtf/text/StringBuilder.h>
+#include <wtf/text/StringHash.h>
+
+
+using namespace WebCore;
+using namespace WebCore::DOMCache;
+using namespace WebKit::NetworkCache;
+
+namespace WebKit {
+
+namespace CacheStorage {
+
+Cache::Cache(uint64_t identifier, String&& name)
+ : m_identifier(identifier)
+ , m_name(WTFMove(name))
+{
+}
+
+Vector<Record> Cache::records() const
+{
+ Vector<Record> records;
+ records.reserveInitialCapacity(m_records.size());
+ for (auto& record : m_records)
+ records.uncheckedAppend(record.copy());
+ return records;
+}
+
+void Cache::put(Vector<Record>&& records, RecordIdentifiersCallback&& callback)
+{
+ bool shouldWriteRecordList { false };
+ WebCore::CacheQueryOptions options;
+ Vector<uint64_t> recordIdentifiers;
+ recordIdentifiers.reserveInitialCapacity(records.size());
+ for (auto& record : records) {
+ auto matchingRecords = queryCache(record.request, options);
+ if (matchingRecords.isEmpty()) {
+ record.identifier = ++m_nextRecordIdentifier;
+ recordIdentifiers.uncheckedAppend(record.identifier);
+ m_records.append(WTFMove(record));
+
+ shouldWriteRecordList = true;
+ writeRecordToDisk(m_records.last());
+ } else {
+ auto identifier = matchingRecords[0];
+ auto position = m_records.findMatching([&](const auto& item) { return item.identifier == identifier; });
+ ASSERT(position != notFound);
+ if (position != notFound) {
+ auto& existingRecord = m_records[position];
+ recordIdentifiers.uncheckedAppend(identifier);
+ existingRecord.responseHeadersGuard = record.responseHeadersGuard;
+ existingRecord.response = WTFMove(record.response);
+ existingRecord.responseBody = WTFMove(record.responseBody);
+ ++existingRecord.updateResponseCounter;
+
+ writeRecordToDisk(existingRecord);
+ }
+ }
+ }
+
+ if (!shouldWriteRecordList) {
+ callback(WTFMove(recordIdentifiers));
+ return;
+ }
+ writeRecordsList([callback = WTFMove(callback), recordIdentifiers = WTFMove(recordIdentifiers)](std::optional<Error>&& error) mutable {
+ if (error) {
+ callback(makeUnexpected(error.value()));
+ return;
+ }
+ callback(WTFMove(recordIdentifiers));
+ });
+}
+
+void Cache::remove(WebCore::ResourceRequest&& request, WebCore::CacheQueryOptions&& options, RecordIdentifiersCallback&& callback)
+{
+ auto recordIdentifiers = queryCache(request, options);
+ if (recordIdentifiers.isEmpty()) {
+ callback({ });
+ return;
+ }
+
+ Vector<Record> recordsToKeep;
+ for (auto& record : m_records) {
+ if (recordIdentifiers.findMatching([&](auto item) { return item == record.identifier; }) == notFound)
+ recordsToKeep.append(WTFMove(record));
+ else
+ removeRecordFromDisk(record);
+ }
+ m_records = WTFMove(recordsToKeep);
+
+ writeRecordsList([callback = WTFMove(callback), recordIdentifiers = WTFMove(recordIdentifiers)](std::optional<Error>&& error) mutable {
+ if (error) {
+ callback(makeUnexpected(error.value()));
+ return;
+ }
+ callback(WTFMove(recordIdentifiers));
+ });
+}
+
+Vector<uint64_t> Cache::queryCache(const ResourceRequest& request, const CacheQueryOptions& options)
+{
+ if (!options.ignoreMethod && request.httpMethod() != "GET")
+ return { };
+
+ Vector<uint64_t> results;
+ for (const auto& record : m_records) {
+ if (WebCore::DOMCache::queryCacheMatch(request, record.request, record.response, options))
+ results.append(record.identifier);
+ }
+ return results;
+}
+
+void Cache::writeRecordsList(CompletionCallback&& callback)
+{
+ // FIXME: Implement this.
+ callback(std::nullopt);
+}
+
+void Cache::writeRecordToDisk(Record& record)
+{
+ // FIXME: Implement this.
+}
+
+void Cache::removeRecordFromDisk(Record& record)
+{
+ // FIXME: Implement this.
+}
+
+} // namespace CacheStorage
+
+} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.h (221446 => 221447)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.h 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.h 2017-08-31 21:55:17 UTC (rev 221447)
@@ -33,11 +33,30 @@
namespace CacheStorage {
-struct Cache {
- uint64_t identifier { 0 };
- String name;
- Vector<WebCore::DOMCache::Record> records;
- uint64_t nextRecordIdentifier { 0 };
+class Cache {
+public:
+ Cache(uint64_t identifier, String&& name);
+
+ uint64_t identifier() const { return m_identifier; }
+ const String& name() const { return m_name; }
+
+ Vector<WebCore::DOMCache::Record> records() const;
+ WebCore::DOMCache::CacheInfo info() const { return { m_identifier, m_name }; }
+
+ void put(Vector<WebCore::DOMCache::Record>&&, WebCore::DOMCache::RecordIdentifiersCallback&&);
+ void remove(WebCore::ResourceRequest&&, WebCore::CacheQueryOptions&&, WebCore::DOMCache::RecordIdentifiersCallback&&);
+
+private:
+ Vector<uint64_t> queryCache(const WebCore::ResourceRequest&, const WebCore::CacheQueryOptions&);
+
+ void writeRecordsList(WebCore::DOMCache::CompletionCallback&&);
+ void writeRecordToDisk(WebCore::DOMCache::Record&);
+ void removeRecordFromDisk(WebCore::DOMCache::Record&);
+
+ uint64_t m_identifier { 0 };
+ String m_name;
+ Vector<WebCore::DOMCache::Record> m_records;
+ uint64_t m_nextRecordIdentifier { 0 };
};
} // namespace CacheStorage
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp (221446 => 221447)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp 2017-08-31 21:55:17 UTC (rev 221447)
@@ -101,17 +101,17 @@
Cache* Caches::find(const String& name)
{
- auto position = m_caches.findMatching([&](const auto& item) { return item.name == name; });
+ auto position = m_caches.findMatching([&](const auto& item) { return item.name() == name; });
return (position != notFound) ? &m_caches[position] : nullptr;
}
Cache* Caches::find(uint64_t identifier)
{
- auto position = m_caches.findMatching([&](const auto& item) { return item.identifier == identifier; });
+ auto position = m_caches.findMatching([&](const auto& item) { return item.identifier() == identifier; });
if (position != notFound)
return &m_caches[position];
- position = m_removedCaches.findMatching([&](const auto& item) { return item.identifier == identifier; });
+ position = m_removedCaches.findMatching([&](const auto& item) { return item.identifier() == identifier; });
return (position != notFound) ? &m_removedCaches[position] : nullptr;
}
@@ -120,7 +120,7 @@
ASSERT(m_engine);
uint64_t cacheIdentifier = m_engine->nextCacheIdentifier();
- m_caches.append(Cache { cacheIdentifier, WTFMove(name), { }, 0 });
+ m_caches.append(Cache { cacheIdentifier, WTFMove(name) });
writeCachesToDisk([callback = WTFMove(callback), cacheIdentifier](std::optional<Error>&& error) mutable {
if (error) {
callback(makeUnexpected(error.value()));
@@ -134,10 +134,10 @@
{
ASSERT(m_engine);
- auto position = m_caches.findMatching([&](const auto& item) { return item.identifier == identifier; });
+ auto position = m_caches.findMatching([&](const auto& item) { return item.identifier() == identifier; });
if (position == notFound) {
- ASSERT(m_removedCaches.findMatching([&](const auto& item) { return item.identifier == identifier; }) != notFound);
+ ASSERT(m_removedCaches.findMatching([&](const auto& item) { return item.identifier() == identifier; }) != notFound);
callback(std::nullopt);
return;
}
@@ -156,7 +156,7 @@
uint64_t size = caches.size();
encoder << size;
for (auto& cache : caches)
- encoder << cache.name;
+ encoder << cache.name();
return Data { encoder.buffer(), encoder.bufferSize() };
}
@@ -214,7 +214,7 @@
Vector<Cache> caches;
caches.reserveInitialCapacity(result.value().size());
for (auto& name : result.value())
- caches.uncheckedAppend(Cache { m_engine->nextCacheIdentifier(), WTFMove(name), { }, 0 });
+ caches.uncheckedAppend(Cache { m_engine->nextCacheIdentifier(), WTFMove(name) });
callback(WTFMove(caches));
});
@@ -252,7 +252,7 @@
Vector<CacheInfo> cacheInfos;
cacheInfos.reserveInitialCapacity(m_caches.size());
for (auto& cache : m_caches)
- cacheInfos.uncheckedAppend(CacheInfo { cache.identifier, cache.name });
+ cacheInfos.uncheckedAppend(CacheInfo { cache.identifier(), cache.name() });
return cacheInfos;
}
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (221446 => 221447)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2017-08-31 21:50:57 UTC (rev 221446)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2017-08-31 21:55:17 UTC (rev 221447)
@@ -899,6 +899,7 @@
41897ED81F415D8A0016FA42 /* CacheStorageEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 41897ED21F415D850016FA42 /* CacheStorageEngine.h */; };
41897ED91F415D8A0016FA42 /* CacheStorageEngineConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41897ED31F415D850016FA42 /* CacheStorageEngineConnection.cpp */; };
41897EDA1F415D8A0016FA42 /* CacheStorageEngineConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 41897ED41F415D850016FA42 /* CacheStorageEngineConnection.h */; };
+ 41C8581A1F5136CA0065E085 /* CacheStorageEngineCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41C858191F510DEE0065E085 /* CacheStorageEngineCache.cpp */; };
41D129DA1F3D101800D15E47 /* WebCacheStorageProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D129D91F3D101400D15E47 /* WebCacheStorageProvider.h */; };
41DC45961E3D6E2200B11F51 /* NetworkRTCProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DC45941E3D6E1E00B11F51 /* NetworkRTCProvider.h */; };
41DC45971E3D6E2200B11F51 /* NetworkRTCProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41DC45951E3D6E1E00B11F51 /* NetworkRTCProvider.cpp */; };
@@ -3175,6 +3176,7 @@
41897ED51F415D850016FA42 /* CacheStorageEngineConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = CacheStorageEngineConnection.messages.in; sourceTree = "<group>"; };
41897ED61F415D860016FA42 /* CacheStorageEngine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CacheStorageEngine.cpp; sourceTree = "<group>"; };
41AC86811E042E5300303074 /* WebRTCResolver.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; name = WebRTCResolver.messages.in; path = Network/webrtc/WebRTCResolver.messages.in; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = "<none>"; };
+ 41C858191F510DEE0065E085 /* CacheStorageEngineCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheStorageEngineCache.cpp; sourceTree = "<group>"; };
41D129D91F3D101400D15E47 /* WebCacheStorageProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCacheStorageProvider.h; sourceTree = "<group>"; };
41DC45941E3D6E1E00B11F51 /* NetworkRTCProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkRTCProvider.h; path = NetworkProcess/webrtc/NetworkRTCProvider.h; sourceTree = "<group>"; };
41DC45951E3D6E1E00B11F51 /* NetworkRTCProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkRTCProvider.cpp; path = NetworkProcess/webrtc/NetworkRTCProvider.cpp; sourceTree = "<group>"; };
@@ -8203,6 +8205,7 @@
children = (
41897ED61F415D860016FA42 /* CacheStorageEngine.cpp */,
41897ED21F415D850016FA42 /* CacheStorageEngine.h */,
+ 41C858191F510DEE0065E085 /* CacheStorageEngineCache.cpp */,
41FABD281F4DDFDC006A6C97 /* CacheStorageEngineCache.h */,
4135FBCF1F4FB7F20074C47B /* CacheStorageEngineCaches.cpp */,
4135FBD01F4FB7F20074C47B /* CacheStorageEngineCaches.h */,
@@ -9996,6 +9999,7 @@
E170876B16D6CA6900F99226 /* BlobRegistryProxy.cpp in Sources */,
BCF18638167D071E00A1A85A /* CacheModel.cpp in Sources */,
41897ED71F415D8A0016FA42 /* CacheStorageEngine.cpp in Sources */,
+ 41C8581A1F5136CA0065E085 /* CacheStorageEngineCache.cpp in Sources */,
4135FBD11F4FB8090074C47B /* CacheStorageEngineCaches.cpp in Sources */,
41897ED91F415D8A0016FA42 /* CacheStorageEngineConnection.cpp in Sources */,
517CF0E3163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp in Sources */,