From 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Thu, 2 Jun 2011 12:07:03 +0100 Subject: Merge WebKit at r84325: Initial merge by git. Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b --- .../ResourceCache/WebResourceCacheManager.cpp | 34 +++++++++++++++------- .../ResourceCache/WebResourceCacheManager.h | 5 ++-- .../WebResourceCacheManager.messages.in | 4 +-- 3 files changed, 29 insertions(+), 14 deletions(-) (limited to 'Source/WebKit2/WebProcess/ResourceCache') diff --git a/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp b/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp index 1596319..febf61b 100644 --- a/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp +++ b/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp @@ -28,6 +28,7 @@ #include "Connection.h" #include "MessageID.h" +#include "ResourceCachesToClear.h" #include "SecurityOriginData.h" #include "WebCoreArgumentCoders.h" #include "WebResourceCacheManagerProxyMessages.h" @@ -62,6 +63,8 @@ void WebResourceCacheManager::didReceiveMessage(CoreIPC::Connection* connection, void WebResourceCacheManager::getCacheOrigins(uint64_t callbackID) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + MemoryCache::SecurityOriginSet origins; memoryCache()->getOriginsWithCache(origins); @@ -93,11 +96,18 @@ void WebResourceCacheManager::getCacheOrigins(uint64_t callbackID) const } WebProcess::shared().connection()->send(Messages::WebResourceCacheManagerProxy::DidGetCacheOrigins(identifiers, callbackID), 0); - WebProcess::shared().terminateIfPossible(); } -void WebResourceCacheManager::clearCacheForOrigin(SecurityOriginData originData) const +void WebResourceCacheManager::clearCacheForOrigin(SecurityOriginData originData, uint32_t cachesToClear) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + +#if USE(CFURLCACHE) + ResourceCachesToClear resourceCachesToClear = static_cast(cachesToClear); +#else + UNUSED_PARAM(cachesToClear); +#endif + RefPtr origin = SecurityOrigin::create(originData.protocol, originData.host, originData.port); if (!origin) return; @@ -105,19 +115,23 @@ void WebResourceCacheManager::clearCacheForOrigin(SecurityOriginData originData) memoryCache()->removeResourcesWithOrigin(origin.get()); #if USE(CFURLCACHE) - RetainPtr hostArray(AdoptCF, CFArrayCreateMutable(0, 0, &kCFTypeArrayCallBacks)); - RetainPtr host(AdoptCF, origin->host().createCFString()); - CFArrayAppendValue(hostArray.get(), host.get()); + if (resourceCachesToClear != InMemoryResourceCachesOnly) { + RetainPtr hostArray(AdoptCF, CFArrayCreateMutable(0, 0, &kCFTypeArrayCallBacks)); + RetainPtr host(AdoptCF, origin->host().createCFString()); + CFArrayAppendValue(hostArray.get(), host.get()); - clearCFURLCacheForHostNames(hostArray.get()); + clearCFURLCacheForHostNames(hostArray.get()); + } #endif - WebProcess::shared().terminateIfPossible(); } -void WebResourceCacheManager::clearCacheForAllOrigins() const +void WebResourceCacheManager::clearCacheForAllOrigins(uint32_t cachesToClear) const { - WebProcess::shared().clearResourceCaches(); - WebProcess::shared().terminateIfPossible(); + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + + ResourceCachesToClear resourceCachesToClear = static_cast(cachesToClear); + + WebProcess::shared().clearResourceCaches(resourceCachesToClear); } } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.h b/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.h index 3a29a4b..0172389 100644 --- a/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.h +++ b/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.h @@ -27,6 +27,7 @@ #define WebResourceCacheManager_h #include "Arguments.h" +#include "ResourceCachesToClear.h" #include #include #include @@ -56,8 +57,8 @@ private: void didReceiveWebResourceCacheManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); void getCacheOrigins(uint64_t callbackID) const; - void clearCacheForOrigin(SecurityOriginData origin) const; - void clearCacheForAllOrigins() const; + void clearCacheForOrigin(SecurityOriginData, uint32_t cachesToClear) const; + void clearCacheForAllOrigins(uint32_t cachesToClear) const; #if USE(CFURLCACHE) static RetainPtr cfURLCacheHostNames(); diff --git a/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.messages.in b/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.messages.in index b6d5900..336b253 100644 --- a/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.messages.in +++ b/Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.messages.in @@ -22,6 +22,6 @@ messages -> WebResourceCacheManager { void GetCacheOrigins(uint64_t callbackID) - void ClearCacheForOrigin(WebKit::SecurityOriginData originIdentifier) - void ClearCacheForAllOrigins() + void ClearCacheForOrigin(WebKit::SecurityOriginData originIdentifier, uint32_t cachesToClear) + void ClearCacheForAllOrigins(uint32_t cachesToClear) } -- cgit v1.1