Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Unified Diff: chrome/browser/browsing_data/browsing_data_remover.cc

Issue 12500009: Add the ability to clear the shader disk cache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/browsing_data/browsing_data_remover.cc
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc
index 8cd800cdec188cbeaf8810ade0ad335af74176b5..5c3e0e458f52f1cf81e84f1ec0b8c9f223642de5 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc
@@ -51,6 +51,7 @@
#include "content/public/browser/download_manager.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/plugin_data_remover.h"
+#include "content/public/browser/shader_disk_cache.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/user_metrics.h"
#include "net/base/net_errors.h"
@@ -148,6 +149,7 @@ BrowsingDataRemover::BrowsingDataRemover(Profile* profile,
waiting_for_clear_quota_managed_data_(false),
waiting_for_clear_server_bound_certs_(false),
waiting_for_clear_session_storage_(false),
+ waiting_for_clear_shader_cache_(false),
remove_mask_(0),
remove_origin_(GURL()),
origin_set_mask_(0) {
@@ -506,6 +508,17 @@ void BrowsingDataRemover::RemoveImpl(int remove_mask,
}
#endif
+ if (remove_mask & REMOVE_SHADER_CACHE) {
+ waiting_for_clear_shader_cache_ = true;
+ content::RecordAction(UserMetricsAction("ClearBrowsingData_ShaderCache"));
+
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&BrowsingDataRemover::ClearShaderCacheOnIOThread,
+ base::Unretained(this), profile_->GetPath(), delete_begin_,
+ delete_end_));
+ }
+
// Always wipe accumulated network related data (TransportSecurityState and
// HttpServerPropertiesManager data).
waiting_for_clear_networking_history_ = true;
@@ -575,7 +588,8 @@ bool BrowsingDataRemover::AllDone() {
!waiting_for_clear_content_licenses_ &&
!waiting_for_clear_form_ &&
!waiting_for_clear_hostname_resolution_cache_ &&
- !waiting_for_clear_network_predictor_;
+ !waiting_for_clear_network_predictor_ &&
+ !waiting_for_clear_shader_cache_;
}
void BrowsingDataRemover::Observe(int type,
@@ -768,6 +782,36 @@ void BrowsingDataRemover::DoClearCache(int rv) {
}
}
+void BrowsingDataRemover::ClearedShaderCache() {
+ // This function should be called on the UI thread.
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ waiting_for_clear_shader_cache_ = false;
+ NotifyAndDeleteIfDone();
+}
+
+void BrowsingDataRemover::ClearedShaderCacheOnIOThread() {
+ // This function should be called on the IO thread.
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+
+ // Notify the UI thread that we are done.
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&BrowsingDataRemover::ClearedShaderCache,
+ base::Unretained(this)));
+}
+
+void BrowsingDataRemover::ClearShaderCacheOnIOThread(
+ const base::FilePath path, const base::Time delete_begin,
+ const base::Time delete_end) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+
+ content::ShaderCacheFactory::GetInstance()->ClearByPath(
+ path, delete_begin, delete_end,
+ base::Bind(&BrowsingDataRemover::ClearedShaderCacheOnIOThread,
+ base::Unretained(this)));
+}
+
#if !defined(DISABLE_NACL)
void BrowsingDataRemover::ClearedNaClCache() {
// This function should be called on the UI thread.

Powered by Google App Engine
This is Rietveld 408576698