Index: chrome/browser/extensions/declarative_user_script_master.cc |
diff --git a/chrome/browser/extensions/declarative_user_script_master.cc b/chrome/browser/extensions/declarative_user_script_master.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fccd01150491ef3d4b31d2305112e28652aa7c52 |
--- /dev/null |
+++ b/chrome/browser/extensions/declarative_user_script_master.cc |
@@ -0,0 +1,52 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/extensions/declarative_user_script_master.h" |
+ |
+#include <set> |
+ |
+#include "chrome/browser/profiles/profile.h" |
+#include "extensions/browser/extension_registry.h" |
+ |
+namespace extensions { |
+ |
+DeclarativeUserScriptMaster::DeclarativeUserScriptMaster( |
+ Profile* profile, |
+ const ExtensionId& extension_id) |
+ : extension_id_(extension_id), |
+ loader_(profile, |
+ extension_id, |
+ false /* listen_for_extension_system_loaded */), |
+ extension_registry_observer_(this) { |
+ extension_registry_observer_.Add(ExtensionRegistry::Get(profile)); |
+} |
+ |
+DeclarativeUserScriptMaster::~DeclarativeUserScriptMaster() { |
+} |
+ |
+void DeclarativeUserScriptMaster::OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ UnloadedExtensionInfo::Reason reason) { |
+ if (extension_id_ == extension->id()) |
+ ClearScripts(); |
+} |
+ |
+void DeclarativeUserScriptMaster::AddScript(const UserScript& script) { |
+ std::set<UserScript> set; |
+ set.insert(script); |
+ loader_.AddScripts(set); |
+} |
+ |
+void DeclarativeUserScriptMaster::RemoveScript(const UserScript& script) { |
+ std::set<UserScript> set; |
+ set.insert(script); |
+ loader_.RemoveScripts(set); |
+} |
+ |
+void DeclarativeUserScriptMaster::ClearScripts() { |
+ loader_.ClearScripts(); |
+} |
+ |
+} // namespace extensions |