| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/user_script_loader.h" | 5 #include "chrome/browser/extensions/user_script_loader.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 const ExtensionId& extension_id) { | 121 const ExtensionId& extension_id) { |
| 122 ExtensionsInfo::const_iterator iter = extensions_info.find(extension_id); | 122 ExtensionsInfo::const_iterator iter = extensions_info.find(extension_id); |
| 123 if (iter == extensions_info.end()) | 123 if (iter == extensions_info.end()) |
| 124 return NULL; | 124 return NULL; |
| 125 return file_util::LoadMessageBundleSubstitutionMap( | 125 return file_util::LoadMessageBundleSubstitutionMap( |
| 126 iter->second.first, extension_id, iter->second.second); | 126 iter->second.first, extension_id, iter->second.second); |
| 127 } | 127 } |
| 128 | 128 |
| 129 void LoadUserScripts(UserScriptList* user_scripts, | 129 void LoadUserScripts(UserScriptList* user_scripts, |
| 130 const ExtensionsInfo& extensions_info, | 130 const ExtensionsInfo& extensions_info, |
| 131 const std::set<int64>& added_script_ids, | 131 const std::set<int>& added_script_ids, |
| 132 ContentVerifier* verifier) { | 132 ContentVerifier* verifier) { |
| 133 for (UserScriptList::iterator script = user_scripts->begin(); | 133 for (UserScriptList::iterator script = user_scripts->begin(); |
| 134 script != user_scripts->end(); | 134 script != user_scripts->end(); |
| 135 ++script) { | 135 ++script) { |
| 136 if (added_script_ids.count(script->id()) == 0) | 136 if (added_script_ids.count(script->id()) == 0) |
| 137 continue; | 137 continue; |
| 138 scoped_ptr<SubstitutionMap> localization_messages( | 138 scoped_ptr<SubstitutionMap> localization_messages( |
| 139 GetLocalizationMessages(extensions_info, script->extension_id())); | 139 GetLocalizationMessages(extensions_info, script->extension_id())); |
| 140 for (size_t k = 0; k < script->js_scripts().size(); ++k) { | 140 for (size_t k = 0; k < script->js_scripts().size(); ++k) { |
| 141 UserScript::File& script_file = script->js_scripts()[k]; | 141 UserScript::File& script_file = script->js_scripts()[k]; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 if (!shared_memory.ShareReadOnlyToProcess(base::GetCurrentProcessHandle(), | 195 if (!shared_memory.ShareReadOnlyToProcess(base::GetCurrentProcessHandle(), |
| 196 &readonly_handle)) | 196 &readonly_handle)) |
| 197 return scoped_ptr<base::SharedMemory>(); | 197 return scoped_ptr<base::SharedMemory>(); |
| 198 | 198 |
| 199 return make_scoped_ptr(new base::SharedMemory(readonly_handle, | 199 return make_scoped_ptr(new base::SharedMemory(readonly_handle, |
| 200 /*read_only=*/true)); | 200 /*read_only=*/true)); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void LoadScriptsOnFileThread(scoped_ptr<UserScriptList> user_scripts, | 203 void LoadScriptsOnFileThread(scoped_ptr<UserScriptList> user_scripts, |
| 204 const ExtensionsInfo& extensions_info, | 204 const ExtensionsInfo& extensions_info, |
| 205 const std::set<int64>& added_script_ids, | 205 const std::set<int>& added_script_ids, |
| 206 scoped_refptr<ContentVerifier> verifier, | 206 scoped_refptr<ContentVerifier> verifier, |
| 207 LoadScriptsCallback callback) { | 207 LoadScriptsCallback callback) { |
| 208 DCHECK(user_scripts.get()); | 208 DCHECK(user_scripts.get()); |
| 209 LoadUserScripts( | 209 LoadUserScripts( |
| 210 user_scripts.get(), extensions_info, added_script_ids, verifier); | 210 user_scripts.get(), extensions_info, added_script_ids, verifier); |
| 211 scoped_ptr<base::SharedMemory> memory = Serialize(*user_scripts); | 211 scoped_ptr<base::SharedMemory> memory = Serialize(*user_scripts); |
| 212 BrowserThread::PostTask( | 212 BrowserThread::PostTask( |
| 213 BrowserThread::UI, | 213 BrowserThread::UI, |
| 214 FROM_HERE, | 214 FROM_HERE, |
| 215 base::Bind(callback, base::Passed(&user_scripts), base::Passed(&memory))); | 215 base::Bind(callback, base::Passed(&user_scripts), base::Passed(&memory))); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 // Greasemonkey does. | 326 // Greasemonkey does. |
| 327 if (script->globs().empty() && script->url_patterns().is_empty()) | 327 if (script->globs().empty() && script->url_patterns().is_empty()) |
| 328 script->add_glob("*"); | 328 script->add_glob("*"); |
| 329 | 329 |
| 330 return true; | 330 return true; |
| 331 } | 331 } |
| 332 | 332 |
| 333 // static | 333 // static |
| 334 void UserScriptLoader::LoadScriptsForTest(UserScriptList* user_scripts) { | 334 void UserScriptLoader::LoadScriptsForTest(UserScriptList* user_scripts) { |
| 335 ExtensionsInfo info; | 335 ExtensionsInfo info; |
| 336 std::set<int64> added_script_ids; | 336 std::set<int> added_script_ids; |
| 337 for (UserScriptList::iterator it = user_scripts->begin(); | 337 for (UserScriptList::iterator it = user_scripts->begin(); |
| 338 it != user_scripts->end(); | 338 it != user_scripts->end(); |
| 339 ++it) { | 339 ++it) { |
| 340 added_script_ids.insert(it->id()); | 340 added_script_ids.insert(it->id()); |
| 341 } | 341 } |
| 342 LoadUserScripts( | 342 LoadUserScripts( |
| 343 user_scripts, info, added_script_ids, NULL /* no verifier for testing */); | 343 user_scripts, info, added_script_ids, NULL /* no verifier for testing */); |
| 344 } | 344 } |
| 345 | 345 |
| 346 UserScriptLoader::UserScriptLoader(Profile* profile, | 346 UserScriptLoader::UserScriptLoader(Profile* profile, |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 if (removed_scripts_.count(*it)) | 461 if (removed_scripts_.count(*it)) |
| 462 it = user_scripts_->erase(it); | 462 it = user_scripts_->erase(it); |
| 463 else | 463 else |
| 464 ++it; | 464 ++it; |
| 465 } | 465 } |
| 466 } | 466 } |
| 467 | 467 |
| 468 user_scripts_->insert( | 468 user_scripts_->insert( |
| 469 user_scripts_->end(), added_scripts_.begin(), added_scripts_.end()); | 469 user_scripts_->end(), added_scripts_.begin(), added_scripts_.end()); |
| 470 | 470 |
| 471 std::set<int64> added_script_ids; | 471 std::set<int> added_script_ids; |
| 472 for (std::set<UserScript>::const_iterator it = added_scripts_.begin(); | 472 for (std::set<UserScript>::const_iterator it = added_scripts_.begin(); |
| 473 it != added_scripts_.end(); | 473 it != added_scripts_.end(); |
| 474 ++it) { | 474 ++it) { |
| 475 added_script_ids.insert(it->id()); | 475 added_script_ids.insert(it->id()); |
| 476 } | 476 } |
| 477 | 477 |
| 478 // Expand |changed_extensions_| for OnScriptsLoaded, which will use it in | 478 // Expand |changed_extensions_| for OnScriptsLoaded, which will use it in |
| 479 // its IPC message. This must be done before we clear |added_scripts_| and | 479 // its IPC message. This must be done before we clear |added_scripts_| and |
| 480 // |removed_scripts_| below. | 480 // |removed_scripts_| below. |
| 481 std::set<UserScript> changed_scripts(added_scripts_); | 481 std::set<UserScript> changed_scripts(added_scripts_); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 // which leads to the above lookup failing. In this case, just continue. | 595 // which leads to the above lookup failing. In this case, just continue. |
| 596 if (!extension) | 596 if (!extension) |
| 597 continue; | 597 continue; |
| 598 extensions_info_[*it] = ExtensionSet::ExtensionPathAndDefaultLocale( | 598 extensions_info_[*it] = ExtensionSet::ExtensionPathAndDefaultLocale( |
| 599 extension->path(), LocaleInfo::GetDefaultLocale(extension)); | 599 extension->path(), LocaleInfo::GetDefaultLocale(extension)); |
| 600 } | 600 } |
| 601 } | 601 } |
| 602 } | 602 } |
| 603 | 603 |
| 604 } // namespace extensions | 604 } // namespace extensions |
| OLD | NEW |