Index: chrome/browser/extensions/extension_management_internal.h |
diff --git a/chrome/browser/extensions/extension_management_internal.h b/chrome/browser/extensions/extension_management_internal.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d01bb339c9547c6b236612518172220044ee970a |
--- /dev/null |
+++ b/chrome/browser/extensions/extension_management_internal.h |
@@ -0,0 +1,87 @@ |
+// 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_EXTENSION_MANAGEMENT_INTERNAL_H_ |
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/macros.h" |
+#include "chrome/browser/extensions/extension_management.h" |
+#include "extensions/common/manifest.h" |
+ |
+namespace base { |
+class DictionaryValue; |
+} // namespace base |
+ |
+namespace extensions { |
+ |
+class URLPatternSet; |
+ |
+namespace internal { |
+ |
+// Class to hold extension management settings for one or a group of |
+// extensions. Settings can be applied to an individual extension identified |
+// by an ID, a group of extensions with specific |update_url| or all |
+// extensions at once. |
+struct IndividualSettings { |
+ enum ParsingScope { |
+ // Parses the default settings. |
+ SCOPE_DEFAULT = 0, |
+ // Parses the settings for an extension with specified extension ID. |
+ SCOPE_INDIVIDUAL, |
+ }; |
+ |
+ IndividualSettings(); |
+ ~IndividualSettings(); |
+ |
+ void Reset(); |
+ |
+ // Parses the individual settings. |dict| is the a sub-dictionary in extension |
+ // management preference and |scope| represents the applicable range of the |
+ // settings, a single extension, a group of extensions or default settings. |
+ // Note that in case of parsing errors, |this| will NOT be left untouched. |
+ bool Parse(const base::DictionaryValue* dict, ParsingScope scope); |
+ |
+ // Extension installation mode. Setting this to INSTALLATION_FORCED or |
+ // INSTALLATION_RECOMMENDED will enable extension auto-loading (only |
+ // applicable to single extension), and in this case the |update_url| must |
+ // be specified, containing the update URL for this extension. |
+ // Note that |update_url| will be ignored for INSTALLATION_ALLOWED and |
+ // INSTALLATION_BLOCKED installation mode. |
+ // These settings will override the default settings, and unspecified |
+ // settings will take value from default settings. |
+ ExtensionManagement::InstallationMode installation_mode; |
+ std::string update_url; |
+ |
+ private: |
+ DISALLOW_ASSIGN(IndividualSettings); |
+}; |
+ |
+// Global extension management settings, applicable to all extensions. |
+struct GlobalSettings { |
+ GlobalSettings(); |
+ ~GlobalSettings(); |
+ |
+ void Reset(); |
+ |
+ // Settings specifying which URLs are allowed to install extensions, will be |
+ // enforced only if |has_restricted_install_sources| is set to true. |
+ URLPatternSet install_sources; |
+ bool has_restricted_install_sources; |
+ |
+ // Settings specifying all allowed app/extension types, will be enforced |
+ // only of |has_restricted_allowed_types| is set to true. |
+ std::vector<Manifest::Type> allowed_types; |
+ bool has_restricted_allowed_types; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(GlobalSettings); |
+}; |
+ |
+} // namespace internal |
+ |
+} // namespace extensions |
+ |
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_ |