Chromium Code Reviews| Index: chrome/browser/extensions/user_script_master.cc |
| diff --git a/chrome/browser/extensions/user_script_master.cc b/chrome/browser/extensions/user_script_master.cc |
| index 8267b78eef58d5f5b7bc7fe5d4af5cebcfec180a..15b2f6117881a6f9f33b87dab83a8284a8c3b034 100644 |
| --- a/chrome/browser/extensions/user_script_master.cc |
| +++ b/chrome/browser/extensions/user_script_master.cc |
| @@ -4,6 +4,7 @@ |
| #include "chrome/browser/extensions/user_script_master.h" |
| +#include <map> |
| #include <string> |
| #include <vector> |
| @@ -18,7 +19,9 @@ |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/chrome_notification_types.h" |
| #include "chrome/common/extensions/extension.h" |
| +#include "chrome/common/extensions/extension_file_util.h" |
| #include "chrome/common/extensions/extension_messages.h" |
| +#include "chrome/common/extensions/extension_message_bundle.h" |
| #include "chrome/common/extensions/extension_resource.h" |
| #include "content/browser/renderer_host/render_process_host.h" |
| #include "content/common/notification_service.h" |
| @@ -44,6 +47,12 @@ static bool GetDeclarationValue(const base::StringPiece& line, |
| UserScriptMaster::ScriptReloader::ScriptReloader(UserScriptMaster* master) |
| : master_(master) { |
| CHECK(BrowserThread::GetCurrentThreadIdentifier(&master_thread_id_)); |
| + |
| + // Gather extensions information needed for localization. |
| + if (master && master->profile_ && master->profile_->GetExtensionInfoMap()) { |
| + const ExtensionInfoMap* info_map = master->profile_->GetExtensionInfoMap(); |
| + info_map->extensions().GetExtensionsPathAndDefaultLocale(extensions_info_); |
| + } |
| } |
| // static |
| @@ -160,7 +169,8 @@ void UserScriptMaster::ScriptReloader::NotifyMaster( |
| Release(); |
| } |
| -static bool LoadScriptContent(UserScript::File* script_file) { |
| +static bool LoadScriptContent(UserScript::File* script_file, |
| + const SubstitutionMap& localization_messages) { |
| std::string content; |
| const FilePath& path = ExtensionResource::GetFilePath( |
| script_file->extension_root(), script_file->relative_path()); |
| @@ -169,6 +179,15 @@ static bool LoadScriptContent(UserScript::File* script_file) { |
| return false; |
| } |
| + // Localize the content. |
| + if (!localization_messages.empty()) { |
| + std::string error; |
| + LOG(INFO) << "$$$_BEFORE_LOCALIZATION " << content; |
|
Nebojša Ćirić
2011/08/10 20:38:57
Remove LOG(INFO).
adriansc
2011/08/10 23:20:53
Done.
|
| + ExtensionMessageBundle::ReplaceMessagesWithExternalDictionary( |
| + localization_messages, &content, &error); |
| + LOG(INFO) << "@@@_AFTER__LOCALIZATION " << content; |
| + } |
| + |
| // Remove BOM from the content. |
| std::string::size_type index = content.find(kUtf8ByteOrderMark); |
| if (index == 0) { |
| @@ -180,20 +199,28 @@ static bool LoadScriptContent(UserScript::File* script_file) { |
| return true; |
| } |
| -// static |
| void UserScriptMaster::ScriptReloader::LoadUserScripts( |
| UserScriptList* user_scripts) { |
| for (size_t i = 0; i < user_scripts->size(); ++i) { |
| UserScript& script = user_scripts->at(i); |
| + SubstitutionMap localization_messages; |
| + if (extensions_info_.find(script.extension_id()) != |
| + extensions_info_.end()) { |
| + localization_messages = |
| + extension_file_util::LoadExtensionMessageBundleSubstitutionMap( |
| + extensions_info_[script.extension_id()].first, |
| + script.extension_id(), |
| + extensions_info_[script.extension_id()].second); |
|
Nebojša Ćirić
2011/08/10 20:38:57
Refactor this into a method call.
adriansc
2011/08/10 23:20:53
Done.
|
| + } |
| for (size_t k = 0; k < script.js_scripts().size(); ++k) { |
| UserScript::File& script_file = script.js_scripts()[k]; |
| if (script_file.GetContent().empty()) |
| - LoadScriptContent(&script_file); |
| + LoadScriptContent(&script_file, localization_messages); |
| } |
| for (size_t k = 0; k < script.css_scripts().size(); ++k) { |
| UserScript::File& script_file = script.css_scripts()[k]; |
| if (script_file.GetContent().empty()) |
| - LoadScriptContent(&script_file); |
| + LoadScriptContent(&script_file, localization_messages); |
| } |
| } |
| } |