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

Unified Diff: chrome/browser/themes/theme_service_unittest.cc

Issue 11434002: Change ThemeService to handle uninstalled themes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed akalin's review feedback. Created 8 years 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/themes/theme_service_unittest.cc
diff --git a/chrome/browser/themes/theme_service_unittest.cc b/chrome/browser/themes/theme_service_unittest.cc
index a74c4b6695a72a10d773a69b03e5036bb6399631..ab83cd92a8d0b5b78a2bbfcbe919a4de871c0c8f 100644
--- a/chrome/browser/themes/theme_service_unittest.cc
+++ b/chrome/browser/themes/theme_service_unittest.cc
@@ -5,9 +5,42 @@
#include "chrome/browser/themes/theme_service.h"
#include "base/json/json_reader.h"
+#include "chrome/browser/extensions/extension_service_unittest.h"
+#include "chrome/browser/themes/theme_service_factory.h"
+#include "chrome/common/extensions/extension.h"
+#include "chrome/common/extensions/extension_manifest_constants.h"
+#include "chrome/test/base/testing_profile.h"
#include "testing/gtest/include/gtest/gtest.h"
-TEST(ThemeServiceTest, AlignmentConversion) {
+namespace {
+
+class ThemeServiceTest : public ExtensionServiceTestBase {
+ public:
+ ThemeServiceTest() {}
+ virtual ~ThemeServiceTest() {}
+
+ scoped_refptr<extensions::Extension> MakeThemeExtension(FilePath path) {
+ DictionaryValue source;
+ source.SetString(extension_manifest_keys::kName, "theme");
+ source.Set(extension_manifest_keys::kTheme, new DictionaryValue());
+ source.SetString(extension_manifest_keys::kUpdateURL, "http://foo.com");
+ source.SetString(extension_manifest_keys::kVersion, "0.0.0.0");
+ std::string error;
+ scoped_refptr<extensions::Extension> extension =
+ extensions::Extension::Create(
+ path, extensions::Extension::EXTERNAL_PREF_DOWNLOAD,
+ source, extensions::Extension::NO_FLAGS, &error);
+ EXPECT_TRUE(extension);
+ EXPECT_EQ("", error);
+ return extension;
+ }
+
+ void SetUp() {
+ InitializeEmptyExtensionService();
+ }
+};
+
+TEST_F(ThemeServiceTest, AlignmentConversion) {
// Verify that we get out what we put in.
std::string top_left = "left top";
int alignment = ThemeService::StringToAlignment(top_left);
@@ -33,7 +66,7 @@ TEST(ThemeServiceTest, AlignmentConversion) {
EXPECT_EQ("center center", ThemeService::AlignmentToString(alignment));
}
-TEST(ThemeServiceTest, AlignmentConversionInput) {
+TEST_F(ThemeServiceTest, AlignmentConversionInput) {
// Verify that we output in an expected format.
int alignment = ThemeService::StringToAlignment("bottom right");
EXPECT_EQ("right bottom", ThemeService::AlignmentToString(alignment));
@@ -50,3 +83,51 @@ TEST(ThemeServiceTest, AlignmentConversionInput) {
alignment = ThemeService::StringToAlignment("new zealandtop");
EXPECT_EQ("center center", ThemeService::AlignmentToString(alignment));
}
+
+// Installs then uninstalls a theme and makes sure that the ThemeService
+// reverts to the default theme after the uninstall.
+TEST_F(ThemeServiceTest, ThemeInstallUninstall) {
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ ThemeService* theme_service =
+ ThemeServiceFactory::GetForProfile(profile_.get());
+ theme_service->UseDefaultTheme();
+ scoped_refptr<extensions::Extension> extension =
+ MakeThemeExtension(temp_dir.path());
+ service_->AddExtension(extension);
+ // Let ThemeService finish creating the theme pack.
+ MessageLoop::current()->RunUntilIdle();
+ EXPECT_FALSE(theme_service->UsingDefaultTheme());
+ EXPECT_EQ(extension->id(), ThemeService::GetThemeIDForProfile(
+ profile_.get()));
+
+ // Now unload the extension, should revert to the default theme.
+ service_->UnloadExtension(extension->id(),
+ extension_misc::UNLOAD_REASON_UNINSTALL);
+ EXPECT_TRUE(theme_service->UsingDefaultTheme());
+}
+
+// Upgrades a theme and ensures that the ThemeService does not revert to the
+// default theme.
+TEST_F(ThemeServiceTest, ThemeUpgrade) {
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ ThemeService* theme_service =
+ ThemeServiceFactory::GetForProfile(profile_.get());
+ theme_service->UseDefaultTheme();
+ scoped_refptr<extensions::Extension> extension =
+ MakeThemeExtension(temp_dir.path());
+ service_->AddExtension(extension);
+ // Let ThemeService finish creating the theme pack.
+ MessageLoop::current()->RunUntilIdle();
+ EXPECT_FALSE(theme_service->UsingDefaultTheme());
+ EXPECT_EQ(extension->id(), ThemeService::GetThemeIDForProfile(
+ profile_.get()));
+
+ // Now unload the extension, should revert to the default theme.
+ service_->UnloadExtension(extension->id(),
+ extension_misc::UNLOAD_REASON_UPDATE);
+ EXPECT_FALSE(theme_service->UsingDefaultTheme());
+}
+
+}; // namespace

Powered by Google App Engine
This is Rietveld 408576698