Diff
Modified: trunk/Source/WebCore/ChangeLog (198392 => 198393)
--- trunk/Source/WebCore/ChangeLog 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebCore/ChangeLog 2016-03-18 07:56:20 UTC (rev 198393)
@@ -1,3 +1,28 @@
+2016-03-18 Darin Adler <[email protected]>
+
+ Disable Caches in Safari's Develop menu does not disable caches.
+ https://bugs.webkit.org/show_bug.cgi?id=64483
+
+ Reviewed by Antti Koivisto.
+
+ Add a new setting, ResourceCachingDisabled, for use in future versions of Safari.
+
+ * history/PageCache.cpp:
+ (WebCore::canCachePage): Check resourceCachingDisabled and return false.
+ (WebCore::PageCache::take): Check resourceCachingDisabled, and return null.
+ (WebCore::PageCache::get): Ditto.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::subresourceCachePolicy): Check resourceCachingDisabled, and
+ request a reload.
+ (WebCore::FrameLoader::addExtraFieldsToRequest): Check resourceCachingDisabled, and
+ set the cache policy to trigger a reload.
+ * loader/cache/CachedResourceLoader.cpp:
+ (WebCore::CachedResourceLoader::cachePolicy): Check resourceCachingDisabled, and
+ request a reload.
+
+ * page/Settings.in: Added resourceCachingDisabled.
+
2016-03-18 Csaba Osztrogonác <[email protected]>
[Mac][cmake] Unreviewed speculative buildfix. Just for fun.
Modified: trunk/Source/WebCore/history/PageCache.cpp (198392 => 198393)
--- trunk/Source/WebCore/history/PageCache.cpp 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebCore/history/PageCache.cpp 2016-03-18 07:56:20 UTC (rev 198393)
@@ -193,7 +193,7 @@
DiagnosticLoggingClient& diagnosticLoggingClient = mainFrame.diagnosticLoggingClient();
bool isCacheable = canCacheFrame(mainFrame, diagnosticLoggingClient, indentLevel + 1);
- if (!page.settings().usesPageCache()) {
+ if (!page.settings().usesPageCache() || page.settings().resourceCachingDisabled()) {
PCLOG(" -Page settings says b/f cache disabled");
logPageCacheFailureDiagnosticMessage(diagnosticLoggingClient, DiagnosticLoggingKeys::isDisabledKey());
isCacheable = false;
@@ -423,7 +423,7 @@
m_items.remove(&item);
std::unique_ptr<CachedPage> cachedPage = WTFMove(item.m_cachedPage);
- if (cachedPage->hasExpired()) {
+ if (cachedPage->hasExpired() || (page && page->settings().resourceCachingDisabled())) {
LOG(PageCache, "Not restoring page for %s from back/forward cache because cache entry has expired", item.url().string().ascii().data());
logPageCacheFailureDiagnosticMessage(page, DiagnosticLoggingKeys::expiredKey());
return nullptr;
@@ -441,7 +441,7 @@
return nullptr;
}
- if (cachedPage->hasExpired()) {
+ if (cachedPage->hasExpired() || (page && page->settings().resourceCachingDisabled())) {
LOG(PageCache, "Not restoring page for %s from back/forward cache because cache entry has expired", item.url().string().ascii().data());
logPageCacheFailureDiagnosticMessage(page, DiagnosticLoggingKeys::expiredKey());
remove(item);
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (198392 => 198393)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2016-03-18 07:56:20 UTC (rev 198393)
@@ -2155,6 +2155,9 @@
CachePolicy FrameLoader::subresourceCachePolicy() const
{
+ if (m_frame.settings().resourceCachingDisabled())
+ return CachePolicyReload;
+
if (m_isComplete)
return CachePolicyVerify;
@@ -2561,6 +2564,11 @@
void FrameLoader::addExtraFieldsToRequest(ResourceRequest& request, FrameLoadType loadType, bool mainResource)
{
+ bool cachingDisabled = frame().settings().resourceCachingDisabled();
+
+ if (cachingDisabled)
+ request.setCachePolicy(ReloadIgnoringCacheData);
+
// Don't set the cookie policy URL if it's already been set.
// But make sure to set it on all requests regardless of protocol, as it has significance beyond the cookie policy (<rdar://problem/6616664>).
if (request.firstPartyForCookies().isEmpty()) {
@@ -2576,7 +2584,10 @@
applyUserAgent(request);
- if (!mainResource) {
+ if (cachingDisabled) {
+ // Cache policy was already set above in the non-HTTP-specific code.
+ loadType = FrameLoadType::ReloadFromOrigin;
+ } else if (!mainResource) {
if (request.isConditional())
request.setCachePolicy(ReloadIgnoringCacheData);
else if (documentLoader()->isLoadingInAPISense()) {
@@ -2613,7 +2624,7 @@
request.setHTTPHeaderField(HTTPHeaderName::Pragma, "no-cache");
}
}
-
+
if (mainResource)
request.setHTTPAccept(defaultAcceptHeader);
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (198392 => 198393)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2016-03-18 07:56:20 UTC (rev 198393)
@@ -923,13 +923,17 @@
CachePolicy CachedResourceLoader::cachePolicy(CachedResource::Type type) const
{
- if (!frame())
+ Frame* frame = this->frame();
+ if (!frame)
return CachePolicyVerify;
+ if (frame->settings().resourceCachingDisabled())
+ return CachePolicyReload;
+
if (type != CachedResource::MainResource)
- return frame()->loader().subresourceCachePolicy();
+ return frame->loader().subresourceCachePolicy();
- switch (frame()->loader().loadType()) {
+ switch (frame->loader().loadType()) {
case FrameLoadType::ReloadFromOrigin:
case FrameLoadType::Reload:
return CachePolicyReload;
Modified: trunk/Source/WebCore/page/Settings.in (198392 => 198393)
--- trunk/Source/WebCore/page/Settings.in 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebCore/page/Settings.in 2016-03-18 07:56:20 UTC (rev 198393)
@@ -251,3 +251,5 @@
# enforces all frame sandbox flags (see enum SandboxFlag in SecurityContext.h), and also disables <meta http-equiv>
# processing and subframe loading.
contentDispositionAttachmentSandboxEnabled initial=false
+
+resourceCachingDisabled initial=false
Modified: trunk/Source/WebKit/mac/ChangeLog (198392 => 198393)
--- trunk/Source/WebKit/mac/ChangeLog 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit/mac/ChangeLog 2016-03-18 07:56:20 UTC (rev 198393)
@@ -1,3 +1,18 @@
+2016-03-18 Darin Adler <[email protected]>
+
+ Disable Caches in Safari's Develop menu does not disable caches.
+ https://bugs.webkit.org/show_bug.cgi?id=64483
+
+ Reviewed by Antti Koivisto.
+
+ * WebView/WebPreferenceKeysPrivate.h: Added ResourceCachingDisabled.
+ * WebView/WebPreferences.mm:
+ (-[WebPreferences isResourceCachingDisabled]): Added.
+ (-[WebPreferences setResourceCachingDisabled:]): Added.
+ * WebView/WebPreferencesPrivate.h: Added resourceCachingDisabled.
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]): Push resourceCachingDisabled into WebCore.
+
2016-03-17 Csaba Osztrogonác <[email protected]>
[cmake][Mac] Unreviewed speculative buildfix after r198088. Just for fun.
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (198392 => 198393)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2016-03-18 07:56:20 UTC (rev 198393)
@@ -161,6 +161,7 @@
#define WebKitMediaKeysStorageDirectoryKey @"WebKitMediaKeysStorageDirectory"
#define WebKitShadowDOMEnabledPreferenceKey @"WebKitShadowDOMEnabled"
#define WebKitCustomElementsEnabledPreferenceKey @"WebKitCustomElementsEnabled"
+#define WebKitResourceCachingDisabledPreferenceKey @"WebKitResourceCachingDisabled"
#if !TARGET_OS_IPHONE
// These are private both because callers should be using the cover methods and because the
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (198392 => 198393)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2016-03-18 07:56:20 UTC (rev 198393)
@@ -704,7 +704,8 @@
}
- (void)_setUnsignedIntValue:(unsigned int)value forKey:(NSString *)key
-{ if ([self _unsignedIntValueForKey:key] == value)
+{
+ if ([self _unsignedIntValueForKey:key] == value)
return;
NSString *_key = KEY(key);
#if PLATFORM(IOS)
@@ -2699,6 +2700,16 @@
[self _setBoolValue:flag forKey:WebKitCustomElementsEnabledPreferenceKey];
}
+- (BOOL)isResourceCachingDisabled
+{
+ return [self _boolValueForKey:WebKitResourceCachingDisabledPreferenceKey];
+}
+
+- (void)setResourceCachingDisabled:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitResourceCachingDisabledPreferenceKey];
+}
+
@end
@implementation WebPreferences (WebInternal)
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (198392 => 198393)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2016-03-18 07:56:20 UTC (rev 198393)
@@ -484,5 +484,6 @@
@property (nonatomic) BOOL _javascript_MarkupEnabled;
@property (nonatomic) BOOL mediaDataLoadsAutomatically;
@property (nonatomic) BOOL attachmentElementEnabled;
+@property (nonatomic, getter=isResourceCachingDisabled) BOOL resourceCachingDisabled;
@end
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (198392 => 198393)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2016-03-18 07:56:20 UTC (rev 198393)
@@ -2516,6 +2516,8 @@
#if ENABLE(ATTACHMENT_ELEMENT)
settings.setAttachmentElementEnabled([preferences attachmentElementEnabled]);
#endif
+
+ settings.setResourceCachingDisabled(preferences.resourceCachingDisabled);
}
static inline IMP getMethod(id o, SEL s)
Modified: trunk/Source/WebKit2/ChangeLog (198392 => 198393)
--- trunk/Source/WebKit2/ChangeLog 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit2/ChangeLog 2016-03-18 07:56:20 UTC (rev 198393)
@@ -1,3 +1,19 @@
+2016-03-18 Darin Adler <[email protected]>
+
+ Disable Caches in Safari's Develop menu does not disable caches.
+ https://bugs.webkit.org/show_bug.cgi?id=64483
+
+ Reviewed by Antti Koivisto.
+
+ * Shared/WebPreferencesDefinitions.h: Added ResourceCachingDisabled.
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetResourceCachingDisabled): Added.
+ (WKPreferencesGetResourceCachingDisabled): Added.
+ * UIProcess/API/C/WKPreferencesRefPrivate.h: Ditto.
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences): Push ResourceCachingDisabled setting
+ into WebCore.
+
2016-03-18 Carlos Garcia Campos <[email protected]>
Unreviewed. Try to fix GTK+ debug build after r198364.
Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (198392 => 198393)
--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2016-03-18 07:56:20 UTC (rev 198393)
@@ -227,6 +227,7 @@
macro(MockCaptureDevicesEnabled, mockCaptureDevicesEnabled, Bool, bool, false) \
macro(ShadowDOMEnabled, shadowDOMEnabled, Bool, bool, true) \
macro(CustomElementsEnabled, customElementsEnabled, Bool, bool, false) \
+ macro(ResourceCachingDisabled, resourceCachingDisabled, Bool, bool, false) \
FOR_EACH_ADDITIONAL_WEBKIT_BOOL_PREFERENCE(macro) \
\
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (198392 => 198393)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2016-03-18 07:56:20 UTC (rev 198393)
@@ -1506,3 +1506,13 @@
{
return toImpl(preferencesRef)->shadowDOMEnabled();
}
+
+void WKPreferencesSetResourceCachingDisabled(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setResourceCachingDisabled(flag);
+}
+
+bool WKPreferencesGetResourceCachingDisabled(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->resourceCachingDisabled();
+}
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (198392 => 198393)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2016-03-18 07:56:20 UTC (rev 198393)
@@ -419,6 +419,10 @@
WK_EXPORT void WKPreferencesSetCustomElementsEnabled(WKPreferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetCustomElementsEnabled(WKPreferencesRef);
+// Defaults to false
+WK_EXPORT void WKPreferencesSetResourceCachingDisabled(WKPreferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetResourceCachingDisabled(WKPreferencesRef);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (198392 => 198393)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-03-18 07:41:54 UTC (rev 198392)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-03-18 07:56:20 UTC (rev 198393)
@@ -3045,6 +3045,8 @@
settings.setShouldDispatchJavaScriptWindowOnErrorEvents(true);
+ settings.setResourceCachingDisabled(store.getBoolValueForKey(WebPreferencesKey::resourceCachingDisabledKey()));
+
#if USE(APPLE_INTERNAL_SDK)
#include <WebKitAdditions/WebPagePreferences.cpp>
#endif