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

Unified Diff: chrome/browser/browser_theme_provider.cc

Issue 303006: Delete unused themes from disk on shutdown. (Closed)
Patch Set: Created 11 years, 2 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
« no previous file with comments | « chrome/browser/browser_theme_provider.h ('k') | chrome/browser/profile.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browser_theme_provider.cc
diff --git a/chrome/browser/browser_theme_provider.cc b/chrome/browser/browser_theme_provider.cc
index 0adfa6b5f9a9a048042daf58f3b0a6faf21ad64a..eb7aeb4500790a024740f2756d88720bf984ef8b 100644
--- a/chrome/browser/browser_theme_provider.cc
+++ b/chrome/browser/browser_theme_provider.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/browser_list.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_window.h"
+#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/metrics/user_metrics.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/theme_resources_util.h"
@@ -299,6 +300,8 @@ BrowserThemeProvider::BrowserThemeProvider()
BrowserThemeProvider::~BrowserThemeProvider() {
ClearCaches();
+
+ RemoveUnusedThemes();
}
void BrowserThemeProvider::Init(Profile* profile) {
@@ -509,6 +512,25 @@ void BrowserThemeProvider::SetTheme(Extension* extension) {
UserMetrics::RecordAction(L"Themes_Installed", profile_);
}
+void BrowserThemeProvider::RemoveUnusedThemes() {
+ if (!profile_)
+ return;
+ ExtensionsService* service = profile_->GetExtensionsService();
+ if (!service)
+ return;
+ std::string current_theme = GetThemeID();
+ std::vector<std::string> remove_list;
+ const ExtensionList* extensions = service->extensions();
+ for (ExtensionList::const_iterator it = extensions->begin();
+ it != extensions->end(); ++it) {
+ if ((*it)->IsTheme() && (*it)->id() != current_theme) {
+ remove_list.push_back((*it)->id());
+ }
+ }
+ for (size_t i = 0; i < remove_list.size(); ++i)
+ service->UninstallExtension(remove_list[i], false);
+}
+
void BrowserThemeProvider::UseDefaultTheme() {
ClearAllThemeData();
NotifyThemeChanged();
@@ -1281,7 +1303,7 @@ void BrowserThemeProvider::SaveCachedImageData() const {
std::string pref_name = resource_names_.find(it->second)->second;
pref_images->SetString(UTF8ToWide(pref_name), WideToUTF8(disk_path));
}
- profile_->GetPrefs()->SavePersistentPrefs();
+ profile_->GetPrefs()->ScheduleSavePersistentPrefs();
}
void BrowserThemeProvider::SaveThemeID(const std::string& id) {
« no previous file with comments | « chrome/browser/browser_theme_provider.h ('k') | chrome/browser/profile.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698