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() {