WebkitGTK disk-cache fix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From a5b0d220c1527e5a06db46505bc56f7c49ae57b5 Mon Sep 17 00:00:00 2001 | |
From: Lauro Moura <lmoura@igalia.com> | |
Date: Tue, 24 Mar 2020 00:28:13 -0300 | |
Subject: [PATCH xserver] [GTK] Using --skip-failing-tests cause some | |
disk-cache tests to fail https://bugs.webkit.org/show_bug.cgi?id=209338 | |
Reviewed by NOBODY (OOPS!). | |
GLIB's getVolumeFreeSpace implementation requires the file to exist to | |
return the correct size. During the NetworkProcess initialization it | |
caused the cache storage to be initially defined with zero capacity. | |
Further calls to NetworkProcess.setCacheModel worked as expected due | |
to the file already existing, updating the capacity correctly. | |
This issue was initially hidden due to | |
disk-cache/disk-cache-disable.html being one of the first cache tests | |
run, as it would disable/enable the cache, overriding the initial zero | |
capacity. | |
* NetworkProcess/cache/NetworkCache.cpp: | |
(WebKit::NetworkCache::Cache::open): | |
--- | |
Source/WebKit/ChangeLog | 21 +++++++++++++++++++ | |
.../NetworkProcess/cache/NetworkCache.cpp | 10 +++++++++ | |
2 files changed, 31 insertions(+) | |
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog | |
index c6bda312a47..1fc8890b335 100644 | |
--- a/Source/WebKit/ChangeLog | |
+++ b/Source/WebKit/ChangeLog | |
@@ -1,3 +1,24 @@ | |
+2020-03-23 Lauro Moura <lmoura@igalia.com> | |
+ | |
+ [GTK] Using --skip-failing-tests cause some disk-cache tests to fail | |
+ https://bugs.webkit.org/show_bug.cgi?id=209338 | |
+ | |
+ Reviewed by NOBODY (OOPS!). | |
+ | |
+ GLIB's getVolumeFreeSpace implementation requires the file to exist to | |
+ return the correct size. During the NetworkProcess initialization it | |
+ caused the cache storage to be initially defined with zero capacity. | |
+ Further calls to NetworkProcess.setCacheModel worked as expected due | |
+ to the file already existing, updating the capacity correctly. | |
+ | |
+ This issue was initially hidden due to | |
+ disk-cache/disk-cache-disable.html being one of the first cache tests | |
+ run, as it would disable/enable the cache, overriding the initial zero | |
+ capacity. | |
+ | |
+ * NetworkProcess/cache/NetworkCache.cpp: | |
+ (WebKit::NetworkCache::Cache::open): | |
+ | |
2020-03-23 David Kilzer <ddkilzer@apple.com> | |
IPC::Decoder::decodeFixedLengthData() should be marked WARN_UNUSED_RETURN | |
diff --git a/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp b/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp | |
index 72ba6bff3da..bbaa8967b2f 100644 | |
--- a/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp | |
+++ b/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp | |
@@ -86,6 +86,16 @@ RefPtr<Cache> Cache::open(NetworkProcess& networkProcess, const String& cachePat | |
if (!storage) | |
return nullptr; | |
+#if PLATFORM(GTK) || PLATFORM(WPE) | |
+ // GLIB's getVolumeFreeSpace requires the file to exist to work correctly. | |
+ // As this may not be the case when initializing the NetworkProcess, the first call | |
+ // to computeCapacity may fail and we must try again after the file is created. | |
+ if (!capacity) { | |
+ capacity = computeCapacity(networkProcess.cacheModel(), cachePath); | |
+ storage->setCapacity(capacity); | |
+ } | |
+#endif | |
+ | |
return adoptRef(*new Cache(networkProcess, cachePath, storage.releaseNonNull(), options, sessionID)); | |
} | |
-- | |
2.20.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment