Index: chrome/browser/extensions/extension_system_impl.cc |
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc |
index 9804b81a247431896a6c014557a3d8a824b4ee58..b78d98cd616d3f863f3a1d89c59a0ed6b5c3d23a 100644 |
--- a/chrome/browser/extensions/extension_system_impl.cc |
+++ b/chrome/browser/extensions/extension_system_impl.cc |
@@ -12,10 +12,12 @@ |
#include "base/metrics/field_trial.h" |
#include "base/metrics/histogram.h" |
#include "base/strings/string_tokenizer.h" |
+#include "base/strings/string_util.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/content_settings/cookie_settings.h" |
#include "chrome/browser/extensions/blacklist.h" |
#include "chrome/browser/extensions/component_loader.h" |
+#include "chrome/browser/extensions/declarative_user_script_master.h" |
#include "chrome/browser/extensions/error_console/error_console.h" |
#include "chrome/browser/extensions/extension_error_reporter.h" |
#include "chrome/browser/extensions/extension_service.h" |
@@ -26,11 +28,11 @@ |
#include "chrome/browser/extensions/install_verifier.h" |
#include "chrome/browser/extensions/navigation_observer.h" |
#include "chrome/browser/extensions/shared_module_service.h" |
+#include "chrome/browser/extensions/shared_user_script_master.h" |
#include "chrome/browser/extensions/standard_management_policy_provider.h" |
#include "chrome/browser/extensions/state_store_notification_observer.h" |
#include "chrome/browser/extensions/unpacked_installer.h" |
#include "chrome/browser/extensions/updater/manifest_fetch_data.h" |
-#include "chrome/browser/extensions/user_script_master.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/ui/webui/extensions/extension_icon_source.h" |
@@ -305,7 +307,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) { |
bool allow_noisy_errors = !command_line->HasSwitch(switches::kNoErrorDialogs); |
ExtensionErrorReporter::Init(allow_noisy_errors); |
- user_script_master_.reset(new UserScriptMaster(profile_)); |
+ shared_user_script_master_.reset(new SharedUserScriptMaster(profile_)); |
// ExtensionService depends on RuntimeData. |
runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_))); |
@@ -439,8 +441,9 @@ ManagementPolicy* ExtensionSystemImpl::Shared::management_policy() { |
return management_policy_.get(); |
} |
-UserScriptMaster* ExtensionSystemImpl::Shared::user_script_master() { |
- return user_script_master_.get(); |
+SharedUserScriptMaster* |
+ExtensionSystemImpl::Shared::shared_user_script_master() { |
+ return shared_user_script_master_.get(); |
} |
InfoMap* ExtensionSystemImpl::Shared::info_map() { |
@@ -482,6 +485,27 @@ ContentVerifier* ExtensionSystemImpl::Shared::content_verifier() { |
return content_verifier_.get(); |
} |
+DeclarativeUserScriptMaster* |
+ExtensionSystemImpl::Shared::GetDeclarativeUserScriptMasterByExtension( |
+ const ExtensionId& extension_id) { |
+ DCHECK(ready().is_signaled()); |
+ DeclarativeUserScriptMaster* master = NULL; |
+ for (ScopedVector<DeclarativeUserScriptMaster>::iterator it = |
+ declarative_user_script_masters_.begin(); |
+ it != declarative_user_script_masters_.end(); |
+ ++it) { |
+ if ((*it)->extension_id() == extension_id) { |
+ master = *it; |
+ break; |
+ } |
+ } |
+ if (!master) { |
+ master = new DeclarativeUserScriptMaster(profile_, extension_id); |
+ declarative_user_script_masters_.push_back(master); |
+ } |
+ return master; |
+} |
+ |
// |
// ExtensionSystemImpl |
// |
@@ -506,7 +530,7 @@ void ExtensionSystemImpl::Shutdown() { |
void ExtensionSystemImpl::InitForRegularProfile(bool extensions_enabled) { |
DCHECK(!profile_->IsOffTheRecord()); |
- if (user_script_master() || extension_service()) |
+ if (shared_user_script_master() || extension_service()) |
return; // Already initialized. |
// The InfoMap needs to be created before the ProcessManager. |
@@ -529,8 +553,8 @@ ManagementPolicy* ExtensionSystemImpl::management_policy() { |
return shared_->management_policy(); |
} |
-UserScriptMaster* ExtensionSystemImpl::user_script_master() { |
- return shared_->user_script_master(); |
+SharedUserScriptMaster* ExtensionSystemImpl::shared_user_script_master() { |
+ return shared_->shared_user_script_master(); |
} |
ProcessManager* ExtensionSystemImpl::process_manager() { |
@@ -589,6 +613,12 @@ scoped_ptr<ExtensionSet> ExtensionSystemImpl::GetDependentExtensions( |
extension); |
} |
+DeclarativeUserScriptMaster* |
+ExtensionSystemImpl::GetDeclarativeUserScriptMasterByExtension( |
+ const ExtensionId& extension_id) { |
+ return shared_->GetDeclarativeUserScriptMasterByExtension(extension_id); |
+} |
+ |
void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( |
const Extension* extension) { |
base::Time install_time; |