Index: extensions/common/permissions/manifest_permission.h |
diff --git a/extensions/common/permissions/manifest_permission.h b/extensions/common/permissions/manifest_permission.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6688407eff7e0b57136026000dbdc48a6f68fe2b |
--- /dev/null |
+++ b/extensions/common/permissions/manifest_permission.h |
@@ -0,0 +1,88 @@ |
+// Copyright 2013 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 EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_H_ |
+#define EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_H_ |
+ |
+#include <string> |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/pickle.h" |
+#include "extensions/common/permissions/permission_message.h" |
+ |
+class PickleIterator; |
+ |
+namespace base { |
+class Value; |
+class ListValue; |
+} |
+ |
+namespace IPC { |
+class Message; |
+} |
+ |
+namespace extensions { |
+ |
+// Represent the custom behavior of a top-level manifest entry contributing to |
+// permission messages and storage. |
+class ManifestPermission { |
+ public: |
+ ManifestPermission(); |
+ virtual ~ManifestPermission(); |
+ |
+ // The manifest key this permission applies to. |
+ virtual std::string name() const = 0; |
+ |
+ // Same as name(), needed for compatibility with APIPermission. |
+ virtual std::string id() const = 0; |
+ |
+ // Returns true if this permission has any PermissionMessages. |
+ virtual bool HasMessages() const = 0; |
+ |
+ // Returns the localized permission messages of this permission. |
+ virtual PermissionMessages GetMessages() const = 0; |
+ |
+ // Parses the ManifestPermission from |value|. Returns false if error happens. |
+ virtual bool FromValue(const base::Value* value) = 0; |
+ |
+ // Stores this into a new created |value|. |
+ virtual scoped_ptr<base::Value> ToValue() const = 0; |
+ |
+ // Clones this. |
+ virtual ManifestPermission* Clone() const = 0; |
+ |
+ // Returns a new manifest permission which equals this - |rhs|. |
+ virtual ManifestPermission* Diff(const ManifestPermission* rhs) const = 0; |
+ |
+ // Returns a new manifest permission which equals the union of this and |rhs|. |
+ virtual ManifestPermission* Union(const ManifestPermission* rhs) const = 0; |
+ |
+ // Returns a new manifest permission which equals the intersect of this and |
+ // |rhs|. |
+ virtual ManifestPermission* Intersect(const ManifestPermission* rhs) |
+ const = 0; |
+ |
+ // Returns true if |rhs| is a subset of this. |
+ virtual bool Contains(const ManifestPermission* rhs) const = 0; |
+ |
+ // Returns true if |rhs| is equal to this. |
+ virtual bool Equal(const ManifestPermission* rhs) const = 0; |
+ |
+ // IPC functions |
+ // Writes this into the given IPC message |m|. |
+ virtual void Write(IPC::Message* m) const = 0; |
+ |
+ // Reads from the given IPC message |m|. |
+ virtual bool Read(const IPC::Message* m, PickleIterator* iter) = 0; |
+ |
+ // Logs this permission. |
+ virtual void Log(std::string* log) const = 0; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(ManifestPermission); |
+}; |
+ |
+} // namespace extensions |
+ |
+#endif // EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_H_ |