summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/chrome_render_process_observer.cc
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-29 16:54:31 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-29 16:54:31 +0000
commite81d4d7c8966f4650ea8041f8d0bad4fe72b4f54 (patch)
tree46394d04d84e59b9caf598a7138350c3400762c9 /chrome/renderer/chrome_render_process_observer.cc
parent965b6b2599050aab93cc398630d10ce30f3b4248 (diff)
downloadchromium_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.cc18
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();
+ }
+}