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

Unified Diff: chrome/browser/extensions/extension_l10n_util_unittest.cc

Issue 173487: Implemented the rest of loading/parsing logic for extension i18n:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 months 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/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

Powered by Google App Engine
This is Rietveld 408576698