diff options
author | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-29 16:54:31 +0000 |
---|---|---|
committer | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-29 16:54:31 +0000 |
commit | e81d4d7c8966f4650ea8041f8d0bad4fe72b4f54 (patch) | |
tree | 46394d04d84e59b9caf598a7138350c3400762c9 /chrome/renderer/chrome_render_process_observer.cc | |
parent | 965b6b2599050aab93cc398630d10ce30f3b4248 (diff) | |
download | chromium_src-e81d4d7c8966f4650ea8041f8d0bad4fe72b4f54.zip chromium_src-e81d4d7c8966f4650ea8041f8d0bad4fe72b4f54.tar.gz chromium_src-e81d4d7c8966f4650ea8041f8d0bad4fe72b4f54.tar.bz2 |
Allow webRequest API extensions to clear the in-memory cache of WebKit.
If the behavior of a webRequest API extension changes (i.e. different URLs are blocked) this effect was not visible instantly due to WebKit's in-memory cache. This CL introduces a means to clear the cache.
BUG=94284
TEST=no
Review URL: http://codereview.chromium.org/7835031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103289 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/chrome_render_process_observer.cc')
-rw-r--r-- | chrome/renderer/chrome_render_process_observer.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/chrome/renderer/chrome_render_process_observer.cc b/chrome/renderer/chrome_render_process_observer.cc index 93d1fa8..ad41476 100644 --- a/chrome/renderer/chrome_render_process_observer.cc +++ b/chrome/renderer/chrome_render_process_observer.cc @@ -196,7 +196,8 @@ bool ChromeRenderProcessObserver::is_incognito_process_ = false; ChromeRenderProcessObserver::ChromeRenderProcessObserver( chrome::ChromeContentRendererClient* client) - : client_(client) { + : client_(client), + clear_cache_pending_(false) { const CommandLine& command_line = *CommandLine::ForCurrentProcess(); if (command_line.HasSwitch(switches::kEnableWatchdog)) { // TODO(JAR): Need to implement renderer IO msgloop watchdog. @@ -314,8 +315,12 @@ void ChromeRenderProcessObserver::OnSetCacheCapacities(size_t min_dead_capacity, min_dead_capacity, max_dead_capacity, capacity); } -void ChromeRenderProcessObserver::OnClearCache() { - WebCache::clear(); +void ChromeRenderProcessObserver::OnClearCache(bool on_navigation) { + if (on_navigation) { + clear_cache_pending_ = true; + } else { + WebCache::clear(); + } } void ChromeRenderProcessObserver::OnGetCacheResourceStats() { @@ -409,3 +414,10 @@ void ChromeRenderProcessObserver::OnPurgeMemory() { if (client_) client_->OnPurgeMemory(); } + +void ChromeRenderProcessObserver::ExecutePendingClearCache() { + if (clear_cache_pending_) { + clear_cache_pending_ = false; + WebCache::clear(); + } +} |