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

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

Issue 7552028: Injected CSS localization fix (see bug no.) (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Inserted whitespace. Created 9 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/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);
}
}
}

Powered by Google App Engine
This is Rietveld 408576698