Index: chrome/browser/extensions/declarative_user_script_manager.cc |
diff --git a/chrome/browser/extensions/declarative_user_script_manager.cc b/chrome/browser/extensions/declarative_user_script_manager.cc |
index e740b5b4f4e25c94889afcea7c8d1f92cecc1eb6..4f2f5b7ee366f34beb9b4707d8600f904e8e2589 100644 |
--- a/chrome/browser/extensions/declarative_user_script_manager.cc |
+++ b/chrome/browser/extensions/declarative_user_script_manager.cc |
@@ -4,12 +4,12 @@ |
#include "chrome/browser/extensions/declarative_user_script_manager.h" |
-#include "chrome/browser/extensions/declarative_user_script_master.h" |
+#include "chrome/browser/extensions/extension_declarative_user_script_master.h" |
namespace extensions { |
DeclarativeUserScriptManager::DeclarativeUserScriptManager(Profile* profile) |
- : profile_(profile) { |
+ : profile_(profile), current_instance_id_(ConsumerID::kDefaultInstanceID) { |
} |
DeclarativeUserScriptManager::~DeclarativeUserScriptManager() { |
@@ -18,15 +18,48 @@ DeclarativeUserScriptManager::~DeclarativeUserScriptManager() { |
DeclarativeUserScriptMaster* |
DeclarativeUserScriptManager::GetDeclarativeUserScriptMasterByID( |
const std::string& id) { |
- UserScriptMasterMap::iterator it = declarative_user_script_masters_.find(id); |
+ RulesRegistryKey key(id); |
+ RulesRegistryKeyToIDMap::iterator it = |
+ rules_registry_key_to_id_map_.find(key); |
+ if (it != rules_registry_key_to_id_map_.end()) |
+ return GetDeclarativeUserScriptMasterByID(it->second); |
+ |
+ ConsumerID consumer_id(ConsumerID::EXTENSIONS, id, ConsumerID::TAB, |
+ GetNextID()); |
+ rules_registry_key_to_id_map_[key] = consumer_id; |
+ return CreateDeclarativeUserScriptMaster(consumer_id); |
+} |
+ |
+DeclarativeUserScriptMaster* |
+DeclarativeUserScriptManager::GetDeclarativeUserScriptMasterByID( |
+ const ConsumerID& consumer_id) { |
+ UserScriptMasterMap::iterator it = |
+ declarative_user_script_masters_.find(consumer_id); |
if (it != declarative_user_script_masters_.end()) |
return it->second.get(); |
- linked_ptr<DeclarativeUserScriptMaster> master( |
- new DeclarativeUserScriptMaster(profile_, id)); |
- declarative_user_script_masters_[id] = master; |
+ return CreateDeclarativeUserScriptMaster(consumer_id); |
+} |
+ |
+DeclarativeUserScriptMaster* |
+DeclarativeUserScriptManager::CreateDeclarativeUserScriptMaster( |
+ const ConsumerID& consumer_id) { |
+ linked_ptr<DeclarativeUserScriptMaster> master; |
+ switch (consumer_id.host_type()) { |
+ case ConsumerID::EXTENSIONS: |
+ master.reset( |
+ new ExtensionDeclarativeUserScriptMaster(profile_, consumer_id)); |
+ break; |
+ default: |
+ master.reset(new DeclarativeUserScriptMaster(profile_, consumer_id)); |
+ } |
+ declarative_user_script_masters_[consumer_id] = master; |
return master.get(); |
} |
-} // extensions |
+int DeclarativeUserScriptManager::GetNextID() { |
+ return ++current_instance_id_; |
+} |
+ |
+} // namespace extensions |