diff options
| author | Kristian Monsen <kristianm@google.com> | 2010-12-21 16:31:19 +0000 |
|---|---|---|
| committer | Kristian Monsen <kristianm@google.com> | 2010-12-22 11:33:24 +0000 |
| commit | d531ae5ea94ec991d57dfa9cf8ab4de44ada92b8 (patch) | |
| tree | e9c02ad94d1712e12fda32299c3bd4e5d6d3d731 | |
| parent | 8349050efe037c35b231c2f108777bed60d470cc (diff) | |
| download | external_webkit-d531ae5ea94ec991d57dfa9cf8ab4de44ada92b8.zip external_webkit-d531ae5ea94ec991d57dfa9cf8ab4de44ada92b8.tar.gz external_webkit-d531ae5ea94ec991d57dfa9cf8ab4de44ada92b8.tar.bz2 | |
Adding a method to delete a WebCache
This is needed so the cache doesn't survive when closing
all private tabs.
Change-Id: I52ffaf89f8794466f98370c289b9a646de0fdb59
| -rw-r--r-- | WebKit/android/WebCoreSupport/WebCache.cpp | 7 | ||||
| -rw-r--r-- | WebKit/android/WebCoreSupport/WebCache.h | 1 | ||||
| -rw-r--r-- | WebKit/android/WebCoreSupport/WebRequestContext.cpp | 7 |
3 files changed, 13 insertions, 2 deletions
diff --git a/WebKit/android/WebCoreSupport/WebCache.cpp b/WebKit/android/WebCoreSupport/WebCache.cpp index 602395d..c7a6a1d 100644 --- a/WebKit/android/WebCoreSupport/WebCache.cpp +++ b/WebKit/android/WebCoreSupport/WebCache.cpp @@ -80,6 +80,13 @@ WebCache* WebCache::get(bool isPrivateBrowsing) return instancePtr->get(); } +void WebCache::cleanup(bool isPrivateBrowsing) +{ + MutexLocker lock(instanceMutex); + scoped_refptr<WebCache>* instancePtr = instance(isPrivateBrowsing); + *instancePtr = 0; +} + WebCache::~WebCache() { // We currently leak the HostResolver object to avoid a crash. diff --git a/WebKit/android/WebCoreSupport/WebCache.h b/WebKit/android/WebCoreSupport/WebCache.h index a231eb8..50ad03c 100644 --- a/WebKit/android/WebCoreSupport/WebCache.h +++ b/WebKit/android/WebCoreSupport/WebCache.h @@ -41,6 +41,7 @@ public: ~WebCache(); void clear(); + static void cleanup(bool isPrivateBrowsing); net::HostResolver* hostResolver() { return m_hostResolver.get(); } net::HttpCache* cache() { return m_cache.get(); } net::ProxyConfigServiceAndroid* proxy() { return m_proxyConfigService; } diff --git a/WebKit/android/WebCoreSupport/WebRequestContext.cpp b/WebKit/android/WebCoreSupport/WebRequestContext.cpp index 99e44ec..e108e2a 100644 --- a/WebKit/android/WebCoreSupport/WebRequestContext.cpp +++ b/WebKit/android/WebCoreSupport/WebRequestContext.cpp @@ -52,6 +52,7 @@ WebRequestContext::WebRequestContext(bool isPrivateBrowsing) if (m_isPrivateBrowsing) { // Delete the old files if this is the first private browsing instance // They are probably leftovers from a power cycle + // We do not need to clear the cache as it is in memory only for private browsing if (!numPrivateBrowsingInstances) WebCookieJar::cleanup(true); numPrivateBrowsingInstances++; @@ -74,9 +75,11 @@ WebRequestContext::~WebRequestContext() if (m_isPrivateBrowsing) { numPrivateBrowsingInstances--; - // This is the last private browsing context, delete the cookies - if (!numPrivateBrowsingInstances) + // This is the last private browsing context, delete the cookies and cache + if (!numPrivateBrowsingInstances) { WebCookieJar::cleanup(true); + WebCache::cleanup(true); + } } } |
