diff options
-rw-r--r-- | chrome/browser/extensions/extension_file_util.cc | 2 | ||||
-rw-r--r-- | chrome/browser/utility_process_host.cc | 6 | ||||
-rwxr-xr-x | chrome/chrome.gyp | 6 | ||||
-rw-r--r-- | chrome/common/extensions/extension.cc | 2 | ||||
-rw-r--r-- | chrome/common/extensions/extension_l10n_util.cc (renamed from chrome/browser/extensions/extension_l10n_util.cc) | 21 | ||||
-rw-r--r-- | chrome/common/extensions/extension_l10n_util.h (renamed from chrome/browser/extensions/extension_l10n_util.h) | 11 | ||||
-rw-r--r-- | chrome/common/extensions/extension_l10n_util_unittest.cc (renamed from chrome/browser/extensions/extension_l10n_util_unittest.cc) | 3 | ||||
-rw-r--r-- | chrome/common/extensions/extension_resource.cc | 2 | ||||
-rw-r--r-- | chrome/common/extensions/extension_resource_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/utility/utility_main.cc | 7 |
10 files changed, 45 insertions, 17 deletions
diff --git a/chrome/browser/extensions/extension_file_util.cc b/chrome/browser/extensions/extension_file_util.cc index 6372f71..5b1e16c 100644 --- a/chrome/browser/extensions/extension_file_util.cc +++ b/chrome/browser/extensions/extension_file_util.cc @@ -10,8 +10,8 @@ #include "base/scoped_temp_dir.h" #include "base/string_util.h" #include "chrome/browser/extensions/extension_prefs.h" -#include "chrome/browser/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/json_value_serializer.h" #include "net/base/file_stream.h" diff --git a/chrome/browser/utility_process_host.cc b/chrome/browser/utility_process_host.cc index 0e44688..95729b0 100644 --- a/chrome/browser/utility_process_host.cc +++ b/chrome/browser/utility_process_host.cc @@ -4,6 +4,8 @@ #include "chrome/browser/utility_process_host.h" +#include "app/app_switches.h" +#include "app/l10n_util.h" #include "base/command_line.h" #include "base/file_util.h" #include "base/message_loop.h" @@ -89,6 +91,10 @@ bool UtilityProcessHost::StartProcess(const FilePath& exposed_dir) { switches::kUtilityProcess); cmd_line.AppendSwitchWithValue(switches::kProcessChannelID, ASCIIToWide(channel_id())); + // Pass on the browser locale. + std::string locale = l10n_util::GetApplicationLocale(L""); + cmd_line.AppendSwitchWithValue(switches::kLang, ASCIIToWide(locale)); + SetCrashReporterCommandLine(&cmd_line); base::ProcessHandle process; diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index 8d0bb7e..736d860 100755 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -535,6 +535,8 @@ 'common/extensions/extension_error_utils.h', 'common/extensions/extension_action.cc', 'common/extensions/extension_action.h', + 'common/extensions/extension_l10n_util.cc', + 'common/extensions/extension_l10n_util.h', 'common/extensions/extension_message_bundle.cc', 'common/extensions/extension_message_bundle.h', 'common/extensions/extension_resource.cc', @@ -1323,8 +1325,6 @@ 'browser/extensions/extension_host.h', 'browser/extensions/extension_install_ui.cc', 'browser/extensions/extension_install_ui.h', - 'browser/extensions/extension_l10n_util.cc', - 'browser/extensions/extension_l10n_util.h', 'browser/extensions/extension_message_service.cc', 'browser/extensions/extension_message_service.h', 'browser/extensions/extension_browser_event_router.cc', @@ -4494,7 +4494,6 @@ 'browser/download/save_package_unittest.cc', 'browser/encoding_menu_controller_unittest.cc', 'browser/extensions/extension_file_util_unittest.cc', - 'browser/extensions/extension_l10n_util_unittest.cc', 'browser/extensions/extension_messages_unittest.cc', 'browser/extensions/extension_process_manager_unittest.cc', 'browser/extensions/extension_ui_unittest.cc', @@ -4621,6 +4620,7 @@ 'common/extensions/extension_resource_unittest.cc', 'common/extensions/extension_unittest.cc', 'common/extensions/extension_action_unittest.cc', + 'common/extensions/extension_l10n_util_unittest.cc', 'common/extensions/extension_message_bundle_unittest.cc', 'common/extensions/update_manifest_unittest.cc', 'common/extensions/url_pattern_unittest.cc', diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc index c7207c1..db05c4b 100644 --- a/chrome/common/extensions/extension.cc +++ b/chrome/common/extensions/extension.cc @@ -13,11 +13,11 @@ #include "base/stl_util-inl.h" #include "base/third_party/nss/blapi.h" #include "base/third_party/nss/sha256.h" -#include "chrome/browser/extensions/extension_l10n_util.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_error_reporter.h" #include "chrome/common/extensions/extension_error_utils.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/user_script.h" #include "chrome/common/notification_service.h" #include "chrome/common/url_constants.h" diff --git a/chrome/browser/extensions/extension_l10n_util.cc b/chrome/common/extensions/extension_l10n_util.cc index 1ac93ff..8ff7ec6 100644 --- a/chrome/browser/extensions/extension_l10n_util.cc +++ b/chrome/common/extensions/extension_l10n_util.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_l10n_util.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include <set> #include <string> @@ -21,8 +21,17 @@ namespace errors = extension_manifest_errors; namespace keys = extension_manifest_keys; +static std::string* GetProcessLocale() { + static std::string locale; + return &locale; +} + namespace extension_l10n_util { +void SetProcessLocale(const std::string& locale) { + *(GetProcessLocale()) = locale; +} + std::string GetDefaultLocaleFromManifest(const DictionaryValue& manifest, std::string* error) { std::string default_locale; @@ -75,7 +84,7 @@ void GetParentLocales(const std::string& current_locale, const int kNameCapacity = 256; char parent[kNameCapacity]; - strncpy(parent, locale.c_str(), kNameCapacity); + base::strlcpy(parent, locale.c_str(), kNameCapacity); parent_locales->push_back(parent); UErrorCode err = U_ZERO_ERROR; while (uloc_getParent(parent, parent, kNameCapacity, &err) > 0) { @@ -187,10 +196,12 @@ void GetL10nRelativePaths(const FilePath& relative_resource_path, std::vector<FilePath>* l10n_paths) { DCHECK(NULL != l10n_paths); + std::string* current_locale = GetProcessLocale(); + if (current_locale->empty()) + *current_locale = l10n_util::GetApplicationLocale(L""); + std::vector<std::string> locales; - static const std::string current_locale = - l10n_util::GetApplicationLocale(L""); - GetParentLocales(current_locale, &locales); + GetParentLocales(*current_locale, &locales); FilePath locale_relative_path; for (size_t i = 0; i < locales.size(); ++i) { diff --git a/chrome/browser/extensions/extension_l10n_util.h b/chrome/common/extensions/extension_l10n_util.h index 07be73e..87ad43f 100644 --- a/chrome/browser/extensions/extension_l10n_util.h +++ b/chrome/common/extensions/extension_l10n_util.h @@ -4,8 +4,8 @@ // // This file declares extension specific l10n utils. -#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_L10N_UTIL_H_ -#define CHROME_BROWSER_EXTENSIONS_EXTENSION_L10N_UTIL_H_ +#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_L10N_UTIL_H_ +#define CHROME_COMMON_EXTENSIONS_EXTENSION_L10N_UTIL_H_ #include <set> #include <string> @@ -18,6 +18,11 @@ class FilePath; namespace extension_l10n_util { +// Set the locale for this process to a fixed value, rather than using the +// normal file-based lookup mechanisms. This is used to set the locale inside +// the sandboxed utility process, where file reading is not allowed. +void SetProcessLocale(const std::string& locale); + // Returns default locale in form "en-US" or "sr" or empty string if // "default_locale" section was not defined in the manifest.json file. std::string GetDefaultLocaleFromManifest(const DictionaryValue& manifest, @@ -74,4 +79,4 @@ void GetL10nRelativePaths(const FilePath& relative_resource_path, } // namespace extension_l10n_util -#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_L10N_UTIL_H_ +#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_L10N_UTIL_H_ diff --git a/chrome/browser/extensions/extension_l10n_util_unittest.cc b/chrome/common/extensions/extension_l10n_util_unittest.cc index 7e7ce27..d6e5ad3 100644 --- a/chrome/browser/extensions/extension_l10n_util_unittest.cc +++ b/chrome/common/extensions/extension_l10n_util_unittest.cc @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_l10n_util.h" - #include "app/l10n_util.h" #include "base/file_path.h" #include "base/file_util.h" @@ -14,6 +12,7 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include "testing/gtest/include/gtest/gtest.h" namespace { diff --git a/chrome/common/extensions/extension_resource.cc b/chrome/common/extensions/extension_resource.cc index e92a8d0..7b2a833 100644 --- a/chrome/common/extensions/extension_resource.cc +++ b/chrome/common/extensions/extension_resource.cc @@ -7,7 +7,7 @@ #include "base/file_path.h" #include "base/file_util.h" #include "base/string_util.h" -#include "chrome/browser/extensions/extension_l10n_util.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include "googleurl/src/gurl.h" #include "net/base/net_util.h" diff --git a/chrome/common/extensions/extension_resource_unittest.cc b/chrome/common/extensions/extension_resource_unittest.cc index 6954408..f467e47 100644 --- a/chrome/common/extensions/extension_resource_unittest.cc +++ b/chrome/common/extensions/extension_resource_unittest.cc @@ -8,9 +8,9 @@ #include "base/file_util.h" #include "base/path_service.h" #include "base/scoped_temp_dir.h" -#include "chrome/browser/extensions/extension_l10n_util.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_resource.h" #include "testing/gtest/include/gtest/gtest.h" diff --git a/chrome/utility/utility_main.cc b/chrome/utility/utility_main.cc index bb669a7..b2eaa46 100644 --- a/chrome/utility/utility_main.cc +++ b/chrome/utility/utility_main.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "app/app_switches.h" #include "base/command_line.h" #include "base/message_loop.h" #include "base/string_util.h" @@ -9,6 +10,7 @@ #include "chrome/common/child_process.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_switches.h" +#include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/logging_chrome.h" #include "chrome/common/main_function_params.h" #include "chrome/utility/utility_thread.h" @@ -39,6 +41,11 @@ int UtilityMain(const MainFunctionParams& parameters) { target_services->LowerToken(); #endif + CommandLine* command_line = CommandLine::ForCurrentProcess(); + std::string lang = command_line->GetSwitchValueASCII(switches::kLang); + if (!lang.empty()) + extension_l10n_util::SetProcessLocale(lang); + MessageLoop::current()->Run(); return 0; |