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

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

Issue 202063: Implemented the rest of loading/parsing logic for extension i18n:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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_file_util.cc
===================================================================
--- chrome/browser/extensions/extension_file_util.cc (revision 25781)
+++ chrome/browser/extensions/extension_file_util.cc (working copy)
@@ -4,6 +4,7 @@
#include "chrome/browser/extensions/extension_file_util.h"
+#include "app/l10n_util.h"
#include "base/file_util.h"
#include "base/logging.h"
#include "base/scoped_temp_dir.h"
@@ -94,7 +95,8 @@
return true;
}
-Extension* LoadExtension(const FilePath& extension_path, bool require_key,
+Extension* LoadExtension(const FilePath& extension_path,
+ bool require_key,
std::string* error) {
FilePath manifest_path =
extension_path.AppendASCII(Extension::kManifestFilename);
@@ -113,9 +115,16 @@
return NULL;
}
+ DictionaryValue* manifest = static_cast<DictionaryValue*>(root.get());
+ ExtensionMessageBundle* message_bundle =
+ LoadLocaleInfo(extension_path, *manifest, error);
+ if (!message_bundle && !error->empty())
+ return NULL;
+
scoped_ptr<Extension> extension(new Extension(extension_path));
- if (!extension->InitFromValue(*static_cast<DictionaryValue*>(root.get()),
- require_key, error))
+ // Assign message bundle to extension.
+ extension->set_message_bundle(message_bundle);
+ if (!extension->InitFromValue(*manifest, require_key, error))
return NULL;
if (!ValidateExtension(extension.get(), error))
@@ -218,22 +227,6 @@
}
}
- // Load locale information if available.
- FilePath locale_path =
- extension->path().AppendASCII(Extension::kLocaleFolder);
- if (file_util::PathExists(locale_path)) {
- if (!extension_l10n_util::AddValidLocales(locale_path,
- extension,
- error)) {
- return false;
- }
-
- if (!extension_l10n_util::ValidateDefaultLocale(extension)) {
- *error = extension_manifest_errors::kLocalesNoDefaultLocaleSpecified;
- return false;
- }
- }
-
// Check children of extension root to see if any of them start with _ and is
// not on the reserved list.
if (!CheckForIllegalFilenames(extension->path(), error)) {
@@ -311,6 +304,40 @@
}
}
+ExtensionMessageBundle* LoadLocaleInfo(const FilePath& extension_path,
+ const DictionaryValue& manifest,
+ std::string* error) {
+ error->clear();
+ // Load locale information if available.
+ FilePath locale_path = extension_path.AppendASCII(Extension::kLocaleFolder);
+ if (!file_util::PathExists(locale_path))
+ return NULL;
+
+ std::set<std::string> locales;
+ if (!extension_l10n_util::GetValidLocales(locale_path, &locales, error))
+ return NULL;
+
+ std::string default_locale =
+ extension_l10n_util::GetDefaultLocaleFromManifest(manifest, error);
+ if (default_locale.empty() ||
+ locales.find(default_locale) == locales.end()) {
+ *error = extension_manifest_errors::kLocalesNoDefaultLocaleSpecified;
+ return NULL;
+ }
+
+ // We can't call g_browser_process->GetApplicationLocale() since we are not
+ // on the main thread.
+ static std::string app_locale = l10n_util::GetApplicationLocale(L"");
+ if (locales.find(app_locale) == locales.end())
+ app_locale = "";
+ ExtensionMessageBundle* message_bundle =
+ extension_l10n_util::LoadMessageCatalogs(locale_path,
+ default_locale,
+ app_locale,
+ error);
+ return message_bundle;
+}
+
bool CheckForIllegalFilenames(const FilePath& extension_path,
std::string* error) {
// Reserved underscore names.
« no previous file with comments | « chrome/browser/extensions/extension_file_util.h ('k') | chrome/browser/extensions/extension_file_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698