Index: extensions/browser/api/execute_code_function.cc |
diff --git a/extensions/browser/api/execute_code_function.cc b/extensions/browser/api/execute_code_function.cc |
index f1a80cfd873fe4f5d3c6f8b14a69e58dfa69da6c..6451b24b1734cb095096a327a73b5c94af4bf65f 100644 |
--- a/extensions/browser/api/execute_code_function.cc |
+++ b/extensions/browser/api/execute_code_function.cc |
@@ -43,21 +43,33 @@ ExecuteCodeFunction::~ExecuteCodeFunction() { |
} |
void ExecuteCodeFunction::DidLoadFile(bool success, |
+ const GURL& file_url, |
std::unique_ptr<std::string> data) { |
if (!success || !details_->file) { |
DidLoadAndLocalizeFile(resource_.relative_path().AsUTF8Unsafe(), success, |
std::move(data)); |
return; |
} |
- |
- ScriptExecutor::ScriptType script_type = |
- ShouldInsertCSS() ? ScriptExecutor::CSS : ScriptExecutor::JAVASCRIPT; |
+ file_url_ = file_url; |
std::string extension_id; |
+ if (extension()) |
+ extension_id = extension()->id(); |
+ |
+ bool needs_css_localization = |
+ ShouldInsertCSS() && !extension_id.empty() && |
+ data->find(MessageBundle::kMessageBegin) != std::string::npos; |
+ |
+ if (!needs_css_localization) { |
+ DidLoadAndLocalizeFile(resource_.relative_path().AsUTF8Unsafe(), true, |
+ std::move(data)); |
+ return; |
+ } |
+ |
+ // The file is CSS and needs localization. |
base::FilePath extension_path; |
std::string extension_default_locale; |
if (extension()) { |
- extension_id = extension()->id(); |
extension_path = extension()->path(); |
extension()->manifest()->GetString(manifest_keys::kDefaultLocale, |
&extension_default_locale); |
@@ -65,31 +77,24 @@ void ExecuteCodeFunction::DidLoadFile(bool success, |
content::BrowserThread::PostTask( |
content::BrowserThread::FILE, FROM_HERE, |
- base::Bind(&ExecuteCodeFunction::GetFileURLAndLocalizeCSS, this, |
- script_type, base::Passed(std::move(data)), extension_id, |
- extension_path, extension_default_locale)); |
+ base::Bind(&ExecuteCodeFunction::LocalizeCSS, this, |
+ base::Passed(std::move(data)), extension_id, extension_path, |
+ extension_default_locale)); |
} |
-void ExecuteCodeFunction::GetFileURLAndLocalizeCSS( |
- ScriptExecutor::ScriptType script_type, |
+void ExecuteCodeFunction::LocalizeCSS( |
std::unique_ptr<std::string> data, |
const std::string& extension_id, |
const base::FilePath& extension_path, |
const std::string& extension_default_locale) { |
- // Check if the file is CSS and needs localization. |
- if ((script_type == ScriptExecutor::CSS) && !extension_id.empty() && |
- (data->find(MessageBundle::kMessageBegin) != std::string::npos)) { |
- std::unique_ptr<SubstitutionMap> localization_messages( |
- file_util::LoadMessageBundleSubstitutionMap( |
- extension_path, extension_id, extension_default_locale)); |
- |
- // We need to do message replacement on the data, so it has to be mutable. |
- std::string error; |
- MessageBundle::ReplaceMessagesWithExternalDictionary(*localization_messages, |
- data.get(), &error); |
- } |
+ std::unique_ptr<SubstitutionMap> localization_messages( |
+ file_util::LoadMessageBundleSubstitutionMap(extension_path, extension_id, |
+ extension_default_locale)); |
- file_url_ = net::FilePathToFileURL(resource_.GetFilePath()); |
+ // We need to do message replacement on the data, so it has to be mutable. |
+ std::string error; |
+ MessageBundle::ReplaceMessagesWithExternalDictionary(*localization_messages, |
+ data.get(), &error); |
// Call back DidLoadAndLocalizeFile on the UI thread. The success parameter |
// is always true, because if loading had failed, we wouldn't have had |
@@ -199,6 +204,14 @@ bool ExecuteCodeFunction::RunAsync() { |
return LoadFile(*details_->file); |
} |
+void ExecuteCodeFunction::GetFileURL(std::unique_ptr<std::string> data) { |
+ content::BrowserThread::PostTask( |
+ content::BrowserThread::UI, FROM_HERE, |
+ base::Bind(&ExecuteCodeFunction::DidLoadFile, this, true, |
+ net::FilePathToFileURL(resource_.GetFilePath()), |
+ base::Passed(std::move(data)))); |
+} |
+ |
bool ExecuteCodeFunction::LoadFile(const std::string& file) { |
resource_ = extension()->GetResource(file); |
@@ -219,8 +232,11 @@ bool ExecuteCodeFunction::LoadFile(const std::string& file) { |
&resource_id)) { |
base::StringPiece resource = |
ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id); |
- DidLoadFile(true, base::WrapUnique( |
- new std::string(resource.data(), resource.size()))); |
+ content::BrowserThread::PostTask( |
+ content::BrowserThread::FILE, FROM_HERE, |
Devlin
2016/08/31 23:20:37
So, previously it looks like for component extensi
lazyboy
2016/09/01 03:52:47
Done. PTAL, thanks!
|
+ base::Bind(&ExecuteCodeFunction::GetFileURL, this, |
+ base::Passed(base::WrapUnique( |
+ new std::string(resource.data(), resource.size()))))); |
} else { |
scoped_refptr<FileReader> file_reader(new FileReader( |
resource_, base::Bind(&ExecuteCodeFunction::DidLoadFile, this))); |