| 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..7a53819ae5036b7c3d05d8b4617501f13d313081 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,49 @@ 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(), theme_service->GetThemeID());
|
| +
|
| + // 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(), theme_service->GetThemeID());
|
| +
|
| + // 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
|
|
|