summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/WebProcess/ResourceCache
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-06-02 12:07:03 +0100
committerBen Murdoch <benm@google.com>2011-06-10 10:47:21 +0100
commit2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch)
treee4964fbd1cb70599f7718ff03e50ea1dab33890b /Source/WebKit2/WebProcess/ResourceCache
parent87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff)
downloadexternal_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')
-rw-r--r--Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.cpp34
-rw-r--r--Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.h5
-rw-r--r--Source/WebKit2/WebProcess/ResourceCache/WebResourceCacheManager.messages.in4
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)
}