diff options
author | Ben Murdoch <benm@google.com> | 2011-06-02 12:07:03 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-10 10:47:21 +0100 |
commit | 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch) | |
tree | e4964fbd1cb70599f7718ff03e50ea1dab33890b /Source/WebKit2/WebProcess/ResourceCache | |
parent | 87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff) | |
download | external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.zip external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.gz external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.bz2 |
Merge WebKit at r84325: Initial merge by git.
Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b
Diffstat (limited to 'Source/WebKit2/WebProcess/ResourceCache')
3 files changed, 29 insertions, 14 deletions
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<ResourceCachesToClear>(cachesToClear); +#else + UNUSED_PARAM(cachesToClear); +#endif + RefPtr<SecurityOrigin> 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<CFMutableArrayRef> hostArray(AdoptCF, CFArrayCreateMutable(0, 0, &kCFTypeArrayCallBacks)); - RetainPtr<CFStringRef> host(AdoptCF, origin->host().createCFString()); - CFArrayAppendValue(hostArray.get(), host.get()); + if (resourceCachesToClear != InMemoryResourceCachesOnly) { + RetainPtr<CFMutableArrayRef> hostArray(AdoptCF, CFArrayCreateMutable(0, 0, &kCFTypeArrayCallBacks)); + RetainPtr<CFStringRef> 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<ResourceCachesToClear>(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 <wtf/Noncopyable.h> #include <wtf/RetainPtr.h> #include <wtf/text/WTFString.h> @@ -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<CFArrayRef> 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) } |