Move themes garbage-collection out of shutdown code.
Moved it to GarbageCollectExtensions(). This avoids some problems with
shutdown ordering causing crashes.
Re-enable themes sync integration tests on OS X (which were crashing).
BUG=63285,62869
TEST=themes sync integration tests
Review URL: http://codereview.chromium.org/4957005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66347 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc
index 7d539932..dc3f14b 100644
--- a/chrome/browser/extensions/extensions_service.cc
+++ b/chrome/browser/extensions/extensions_service.cc
@@ -21,6 +21,7 @@
#include "base/values.h"
#include "base/version.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/themes/browser_theme_provider.h"
#include "chrome/browser/browser_thread.h"
#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/dom_ui/shown_sections_handler.h"
@@ -1462,6 +1463,13 @@
NewRunnableFunction(
&extension_file_util::GarbageCollectExtensions, install_directory_,
extension_paths));
+
+ // Also garbage-collect themes. We check |profile_| to be
+ // defensive; in the future, we may call GarbageCollectExtensions()
+ // from somewhere other than Init() (e.g., in a timer).
+ if (profile_) {
+ profile_->GetThemeProvider()->RemoveUnusedThemes();
+ }
}
void ExtensionsService::OnLoadedInstalledExtensions() {