CacheStorage should check for origin file presence when computing the origin of a...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 3 Feb 2018 02:05:54 +0000 (02:05 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 3 Feb 2018 02:05:54 +0000 (02:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=182454

Patch by Youenn Fablet <youenn@apple.com> on 2018-02-02
Reviewed by Chris Dumez.

In case caches is opened for an origin but no cache is added, we do not have a caches name file but we do have an origin filename.
We should be checking the origin filename anyway since we will be reading it afterwards.

* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228041 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp

index 125bb7c..00a2de0 100644 (file)
@@ -1,5 +1,18 @@
 2018-02-02  Youenn Fablet  <youenn@apple.com>
 
+        CacheStorage should check for origin file presence when computing the origin of a folder
+        https://bugs.webkit.org/show_bug.cgi?id=182454
+
+        Reviewed by Chris Dumez.
+
+        In case caches is opened for an origin but no cache is added, we do not have a caches name file but we do have an origin filename.
+        We should be checking the origin filename anyway since we will be reading it afterwards.
+
+        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
+        (WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
+
+2018-02-02  Youenn Fablet  <youenn@apple.com>
+
         Configure serviceWorkerRegistrationDirectory on the web site data store and move it to a Caches subfolder as a default
         https://bugs.webkit.org/show_bug.cgi?id=182403
         <rdar://problem/36673358>
index eec9099..50d9a6a 100644 (file)
@@ -57,15 +57,15 @@ Caches::~Caches()
 
 void Caches::retrieveOriginFromDirectory(const String& folderPath, WorkQueue& queue, WTF::CompletionHandler<void(std::optional<WebCore::ClientOrigin>&&)>&& completionHandler)
 {
-    queue.dispatch([completionHandler = WTFMove(completionHandler), folderPath = folderPath.isolatedCopy()]() mutable {
-        if (!WebCore::FileSystem::fileExists(cachesListFilename(folderPath))) {
+    queue.dispatch([completionHandler = WTFMove(completionHandler), filename = cachesOriginFilename(folderPath)]() mutable {
+        if (!WebCore::FileSystem::fileExists(filename)) {
             RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler)]() mutable {
                 completionHandler(std::nullopt);
             });
             return;
         }
 
-        auto channel = IOChannel::open(cachesOriginFilename(folderPath), IOChannel::Type::Read);
+        auto channel = IOChannel::open(filename, IOChannel::Type::Read);
         channel->read(0, std::numeric_limits<size_t>::max(), nullptr, [completionHandler = WTFMove(completionHandler)](const Data& data, int error) mutable {
             ASSERT(RunLoop::isMain());
             if (error) {