Index: chrome/browser/extensions/declarative_user_script_master.h |
diff --git a/chrome/browser/extensions/declarative_user_script_master.h b/chrome/browser/extensions/declarative_user_script_master.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f4003bdf0e859bcb89b3803b60f56b718a8c9801 |
--- /dev/null |
+++ b/chrome/browser/extensions/declarative_user_script_master.h |
@@ -0,0 +1,66 @@ |
+// 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. |
+ |
+#ifndef CHROME_BROWSER_EXTENSIONS_DECLARATIVE_USER_SCRIPT_MASTER_H_ |
+#define CHROME_BROWSER_EXTENSIONS_DECLARATIVE_USER_SCRIPT_MASTER_H_ |
+ |
+#include "base/scoped_observer.h" |
+#include "chrome/browser/extensions/user_script_loader.h" |
+#include "extensions/browser/extension_registry_observer.h" |
+#include "extensions/common/extension.h" |
+ |
+class Profile; |
+ |
+namespace extensions { |
+ |
+class ExtensionRegistry; |
+class UserScript; |
+ |
+// Manages declarative user scripts for a single extension. Owns a |
+// UserScriptLoader to which file loading and shared memory management |
+// operations are delegated, and provides an interface for adding, removing, |
+// and clearing scripts. |
+class DeclarativeUserScriptMaster : public ExtensionRegistryObserver { |
+ public: |
+ DeclarativeUserScriptMaster(Profile* profile, |
+ const ExtensionId& extension_id); |
+ virtual ~DeclarativeUserScriptMaster(); |
+ |
+ // Adds script to shared memory region. This may not happen right away if a |
+ // script load is in progress. |
+ void AddScript(const UserScript& script); |
+ |
+ // Removes script from shared memory region. This may not happen right away if |
+ // a script load is in progress. |
+ void RemoveScript(const UserScript& script); |
+ |
+ // Removes all scripts from shared memory region. This may not happen right |
+ // away if a script load is in progress. |
+ void ClearScripts(); |
+ |
+ const ExtensionId& extension_id() const { return extension_id_; } |
+ |
+ private: |
+ // ExtensionRegistryObserver implementation. |
+ virtual void OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ UnloadedExtensionInfo::Reason reason) OVERRIDE; |
+ |
+ // ID of extension that owns scripts that this component manages. |
+ ExtensionId extension_id_; |
+ |
+ // Script loader that handles loading contents of scripts into shared memory |
+ // and notifying renderers of script updates. |
+ UserScriptLoader loader_; |
+ |
+ ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> |
+ extension_registry_observer_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DeclarativeUserScriptMaster); |
+}; |
+ |
+} // namespace extensions |
+ |
+#endif // CHROME_BROWSER_EXTENSIONS_DECLARATIVE_USER_SCRIPT_MASTER_H_ |