OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "extensions/common/extension_l10n_util.h" | 5 #include "extensions/common/extension_l10n_util.h" |
6 | 6 |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/memory/linked_ptr.h" | 10 #include "base/memory/linked_ptr.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 install_dir = | 127 install_dir = |
128 install_dir.AppendASCII("extension_with_locales").Append(kLocaleFolder); | 128 install_dir.AppendASCII("extension_with_locales").Append(kLocaleFolder); |
129 | 129 |
130 std::string error; | 130 std::string error; |
131 std::set<std::string> locales; | 131 std::set<std::string> locales; |
132 EXPECT_TRUE( | 132 EXPECT_TRUE( |
133 extension_l10n_util::GetValidLocales(install_dir, &locales, &error)); | 133 extension_l10n_util::GetValidLocales(install_dir, &locales, &error)); |
134 | 134 |
135 scoped_ptr<MessageBundle> bundle(extension_l10n_util::LoadMessageCatalogs( | 135 scoped_ptr<MessageBundle> bundle(extension_l10n_util::LoadMessageCatalogs( |
136 install_dir, "sr", "en_US", locales, &error)); | 136 install_dir, "sr", "en_US", locales, &error)); |
137 ASSERT_FALSE(NULL == bundle.get()); | 137 ASSERT_FALSE(nullptr == bundle.get()); |
138 EXPECT_TRUE(error.empty()); | 138 EXPECT_TRUE(error.empty()); |
139 EXPECT_EQ("Color", bundle->GetL10nMessage("color")); | 139 EXPECT_EQ("Color", bundle->GetL10nMessage("color")); |
140 EXPECT_EQ("Not in the US or GB.", bundle->GetL10nMessage("not_in_US_or_GB")); | 140 EXPECT_EQ("Not in the US or GB.", bundle->GetL10nMessage("not_in_US_or_GB")); |
141 } | 141 } |
142 | 142 |
143 TEST(ExtensionL10nUtil, LoadMessageCatalogsMissingFiles) { | 143 TEST(ExtensionL10nUtil, LoadMessageCatalogsMissingFiles) { |
144 base::ScopedTempDir temp; | 144 base::ScopedTempDir temp; |
145 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 145 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
146 | 146 |
147 base::FilePath src_path = temp.path().Append(kLocaleFolder); | 147 base::FilePath src_path = temp.path().Append(kLocaleFolder); |
148 ASSERT_TRUE(base::CreateDirectory(src_path)); | 148 ASSERT_TRUE(base::CreateDirectory(src_path)); |
149 | 149 |
150 std::set<std::string> valid_locales; | 150 std::set<std::string> valid_locales; |
151 valid_locales.insert("sr"); | 151 valid_locales.insert("sr"); |
152 valid_locales.insert("en"); | 152 valid_locales.insert("en"); |
153 std::string error; | 153 std::string error; |
154 EXPECT_TRUE(NULL == extension_l10n_util::LoadMessageCatalogs( | 154 EXPECT_TRUE(nullptr == extension_l10n_util::LoadMessageCatalogs( |
155 src_path, "en", "sr", valid_locales, &error)); | 155 src_path, "en", "sr", valid_locales, &error)); |
156 EXPECT_FALSE(error.empty()); | 156 EXPECT_FALSE(error.empty()); |
157 } | 157 } |
158 | 158 |
159 TEST(ExtensionL10nUtil, LoadMessageCatalogsBadJSONFormat) { | 159 TEST(ExtensionL10nUtil, LoadMessageCatalogsBadJSONFormat) { |
160 base::ScopedTempDir temp; | 160 base::ScopedTempDir temp; |
161 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 161 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
162 | 162 |
163 base::FilePath src_path = temp.path().Append(kLocaleFolder); | 163 base::FilePath src_path = temp.path().Append(kLocaleFolder); |
164 ASSERT_TRUE(base::CreateDirectory(src_path)); | 164 ASSERT_TRUE(base::CreateDirectory(src_path)); |
165 | 165 |
166 base::FilePath locale = src_path.AppendASCII("sr"); | 166 base::FilePath locale = src_path.AppendASCII("sr"); |
167 ASSERT_TRUE(base::CreateDirectory(locale)); | 167 ASSERT_TRUE(base::CreateDirectory(locale)); |
168 | 168 |
169 std::string data = "{ \"name\":"; | 169 std::string data = "{ \"name\":"; |
170 base::FilePath messages_file = locale.Append(kMessagesFilename); | 170 base::FilePath messages_file = locale.Append(kMessagesFilename); |
171 ASSERT_TRUE(base::WriteFile(messages_file, data.c_str(), data.length())); | 171 ASSERT_TRUE(base::WriteFile(messages_file, data.c_str(), data.length())); |
172 | 172 |
173 std::set<std::string> valid_locales; | 173 std::set<std::string> valid_locales; |
174 valid_locales.insert("sr"); | 174 valid_locales.insert("sr"); |
175 valid_locales.insert("en_US"); | 175 valid_locales.insert("en_US"); |
176 std::string error; | 176 std::string error; |
177 EXPECT_TRUE(NULL == extension_l10n_util::LoadMessageCatalogs( | 177 EXPECT_TRUE(nullptr == extension_l10n_util::LoadMessageCatalogs( |
178 src_path, "en_US", "sr", valid_locales, &error)); | 178 src_path, "en_US", "sr", valid_locales, &error)); |
179 EXPECT_EQ(ErrorUtils::FormatErrorMessage( | 179 EXPECT_EQ(ErrorUtils::FormatErrorMessage( |
180 errors::kLocalesInvalidLocale, | 180 errors::kLocalesInvalidLocale, |
181 base::UTF16ToUTF8(messages_file.LossyDisplayName()), | 181 base::UTF16ToUTF8(messages_file.LossyDisplayName()), |
182 "Line: 1, column: 10, Unexpected token."), | 182 "Line: 1, column: 10, Unexpected token."), |
183 error); | 183 error); |
184 } | 184 } |
185 | 185 |
186 TEST(ExtensionL10nUtil, LoadMessageCatalogsDuplicateKeys) { | 186 TEST(ExtensionL10nUtil, LoadMessageCatalogsDuplicateKeys) { |
187 base::ScopedTempDir temp; | 187 base::ScopedTempDir temp; |
188 ASSERT_TRUE(temp.CreateUniqueTempDir()); | 188 ASSERT_TRUE(temp.CreateUniqueTempDir()); |
(...skipping 18 matching lines...) Expand all Loading... |
207 | 207 |
208 std::set<std::string> valid_locales; | 208 std::set<std::string> valid_locales; |
209 valid_locales.insert("sr"); | 209 valid_locales.insert("sr"); |
210 valid_locales.insert("en"); | 210 valid_locales.insert("en"); |
211 std::string error; | 211 std::string error; |
212 // JSON parser hides duplicates. We are going to get only one key/value | 212 // JSON parser hides duplicates. We are going to get only one key/value |
213 // pair at the end. | 213 // pair at the end. |
214 scoped_ptr<MessageBundle> message_bundle( | 214 scoped_ptr<MessageBundle> message_bundle( |
215 extension_l10n_util::LoadMessageCatalogs( | 215 extension_l10n_util::LoadMessageCatalogs( |
216 src_path, "en", "sr", valid_locales, &error)); | 216 src_path, "en", "sr", valid_locales, &error)); |
217 EXPECT_TRUE(NULL != message_bundle.get()); | 217 EXPECT_TRUE(nullptr != message_bundle.get()); |
218 EXPECT_TRUE(error.empty()); | 218 EXPECT_TRUE(error.empty()); |
219 } | 219 } |
220 | 220 |
221 // Caller owns the returned object. | 221 // Caller owns the returned object. |
222 MessageBundle* CreateManifestBundle() { | 222 MessageBundle* CreateManifestBundle() { |
223 linked_ptr<base::DictionaryValue> catalog(new base::DictionaryValue); | 223 linked_ptr<base::DictionaryValue> catalog(new base::DictionaryValue); |
224 | 224 |
225 base::DictionaryValue* name_tree = new base::DictionaryValue(); | 225 base::DictionaryValue* name_tree = new base::DictionaryValue(); |
226 name_tree->SetString("message", "name"); | 226 name_tree->SetString("message", "name"); |
227 catalog->Set("name", name_tree); | 227 catalog->Set("name", name_tree); |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 | 592 |
593 ASSERT_TRUE(manifest.GetList(keys::kOverrideStartupPage, &startup_pages)); | 593 ASSERT_TRUE(manifest.GetList(keys::kOverrideStartupPage, &startup_pages)); |
594 ASSERT_TRUE(startup_pages->GetString(0, &result)); | 594 ASSERT_TRUE(startup_pages->GetString(0, &result)); |
595 EXPECT_EQ("http://www.foo.de", result); | 595 EXPECT_EQ("http://www.foo.de", result); |
596 | 596 |
597 EXPECT_TRUE(error.empty()); | 597 EXPECT_TRUE(error.empty()); |
598 } | 598 } |
599 | 599 |
600 // Try with NULL manifest. | 600 // Try with NULL manifest. |
601 TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithNullManifest) { | 601 TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithNullManifest) { |
602 EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(NULL)); | 602 EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(nullptr)); |
603 } | 603 } |
604 | 604 |
605 // Try with default and current locales missing. | 605 // Try with default and current locales missing. |
606 TEST(ExtensionL10nUtil, ShouldRelocalizeManifestEmptyManifest) { | 606 TEST(ExtensionL10nUtil, ShouldRelocalizeManifestEmptyManifest) { |
607 base::DictionaryValue manifest; | 607 base::DictionaryValue manifest; |
608 EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(&manifest)); | 608 EXPECT_FALSE(extension_l10n_util::ShouldRelocalizeManifest(&manifest)); |
609 } | 609 } |
610 | 610 |
611 // Try with missing current_locale. | 611 // Try with missing current_locale. |
612 TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithDefaultLocale) { | 612 TEST(ExtensionL10nUtil, ShouldRelocalizeManifestWithDefaultLocale) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 extension_l10n_util::GetAllFallbackLocales("en_US", "all", &fallback_locales); | 645 extension_l10n_util::GetAllFallbackLocales("en_US", "all", &fallback_locales); |
646 ASSERT_EQ(3U, fallback_locales.size()); | 646 ASSERT_EQ(3U, fallback_locales.size()); |
647 | 647 |
648 CHECK_EQ("en_US", fallback_locales[0]); | 648 CHECK_EQ("en_US", fallback_locales[0]); |
649 CHECK_EQ("en", fallback_locales[1]); | 649 CHECK_EQ("en", fallback_locales[1]); |
650 CHECK_EQ("all", fallback_locales[2]); | 650 CHECK_EQ("all", fallback_locales[2]); |
651 } | 651 } |
652 | 652 |
653 } // namespace | 653 } // namespace |
654 } // namespace extensions | 654 } // namespace extensions |
OLD | NEW |