| 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
|
|
|