Index: chrome/browser/extensions/extension_l10n_util_unittest.cc |
=================================================================== |
--- chrome/browser/extensions/extension_l10n_util_unittest.cc (revision 24127) |
+++ chrome/browser/extensions/extension_l10n_util_unittest.cc (working copy) |
@@ -103,8 +103,7 @@ |
extension.get(), |
&error)); |
- EXPECT_EQ(static_cast<unsigned int>(2), |
- extension->supported_locales().size()); |
+ EXPECT_EQ(2U, extension->supported_locales().size()); |
} |
TEST(ExtensionL10nUtil, SetDefaultLocaleGoodDefaultLocaleInManifest) { |
@@ -132,4 +131,89 @@ |
EXPECT_FALSE(extension_l10n_util::ValidateDefaultLocale(extension.get())); |
} |
+TEST(ExtensionL10nUtil, LoadMessageCatalogsMissingFiles) { |
+ scoped_ptr<Extension> extension(CreateMinimalExtension("en-US")); |
+ extension->AddSupportedLocale("sr"); |
+ extension->AddSupportedLocale("en-US"); |
+ extension->set_application_locale("sr"); |
+ |
+ ScopedTempDir temp; |
+ ASSERT_TRUE(temp.CreateUniqueTempDir()); |
+ |
+ FilePath src_path = temp.path().AppendASCII(Extension::kLocaleFolder); |
+ ASSERT_TRUE(file_util::CreateDirectory(src_path)); |
+ |
+ std::string error; |
+ EXPECT_FALSE(extension_l10n_util::LoadMessageCatalogs(src_path, |
+ extension.get(), |
+ &error)); |
+ EXPECT_FALSE(error.empty()); |
+} |
+ |
+TEST(ExtensionL10nUtil, LoadMessageCatalogsBadJSONFormat) { |
+ scoped_ptr<Extension> extension(CreateMinimalExtension("en-US")); |
+ extension->AddSupportedLocale("sr"); |
+ extension->AddSupportedLocale("en-US"); |
+ extension->set_application_locale("sr"); |
+ |
+ ScopedTempDir temp; |
+ ASSERT_TRUE(temp.CreateUniqueTempDir()); |
+ |
+ FilePath src_path = temp.path().AppendASCII(Extension::kLocaleFolder); |
+ ASSERT_TRUE(file_util::CreateDirectory(src_path)); |
+ |
+ FilePath locale = src_path.AppendASCII("en_US"); |
+ ASSERT_TRUE(file_util::CreateDirectory(locale)); |
+ |
+ std::string data = "{ \"name\":"; |
+ ASSERT_TRUE( |
+ file_util::WriteFile(locale.AppendASCII(Extension::kMessagesFilename), |
+ data.c_str(), data.length())); |
+ |
+ std::string error; |
+ EXPECT_FALSE(extension_l10n_util::LoadMessageCatalogs(src_path, |
+ extension.get(), |
+ &error)); |
+ EXPECT_EQ("Line: 1, column: 10, Syntax error.", error); |
+} |
+ |
+TEST(ExtensionL10nUtil, LoadMessageCatalogsDuplicateKeys) { |
+ scoped_ptr<Extension> extension(CreateMinimalExtension("en-US")); |
+ extension->AddSupportedLocale("sr"); |
+ extension->AddSupportedLocale("en-US"); |
+ extension->set_application_locale("sr"); |
+ |
+ ScopedTempDir temp; |
+ ASSERT_TRUE(temp.CreateUniqueTempDir()); |
+ |
+ FilePath src_path = temp.path().AppendASCII(Extension::kLocaleFolder); |
+ ASSERT_TRUE(file_util::CreateDirectory(src_path)); |
+ |
+ FilePath locale_1 = src_path.AppendASCII("en_US"); |
+ ASSERT_TRUE(file_util::CreateDirectory(locale_1)); |
+ |
+ std::string data = |
+ "{ \"name\": { \"message\": \"something\" }, " |
+ "\"name\": { \"message\": \"something else\" } }"; |
+ ASSERT_TRUE( |
+ file_util::WriteFile(locale_1.AppendASCII(Extension::kMessagesFilename), |
+ data.c_str(), data.length())); |
+ |
+ FilePath locale_2 = src_path.AppendASCII("sr"); |
+ ASSERT_TRUE(file_util::CreateDirectory(locale_2)); |
+ |
+ ASSERT_TRUE( |
+ file_util::WriteFile(locale_2.AppendASCII(Extension::kMessagesFilename), |
+ data.c_str(), data.length())); |
+ |
+ std::string error; |
+ // JSON parser hides duplicates. We are going to get only one key/value |
+ // pair at the end. |
+ EXPECT_TRUE(extension_l10n_util::LoadMessageCatalogs(src_path, |
+ extension.get(), |
+ &error)); |
+ EXPECT_TRUE(error.empty()); |
+ EXPECT_EQ(1U, extension->message_handler()->GetDictionarySize()); |
+} |
+ |
} // namespace |