Index: extensions/common/permissions/manifest_permission.cc |
diff --git a/extensions/common/permissions/manifest_permission.cc b/extensions/common/permissions/manifest_permission.cc |
index b15c541467da6056ff5d529037f6d47e08eb28e5..a3a3a0914a4eb62a38fb21ddf73a28f1acb93b3d 100644 |
--- a/extensions/common/permissions/manifest_permission.cc |
+++ b/extensions/common/permissions/manifest_permission.cc |
@@ -4,10 +4,51 @@ |
#include "extensions/common/permissions/manifest_permission.h" |
+#include "base/json/json_writer.h" |
+#include "extensions/common/manifest_handler.h" |
+#include "ipc/ipc_message.h" |
+#include "ipc/ipc_message_utils.h" |
+ |
namespace extensions { |
ManifestPermission::ManifestPermission() {} |
ManifestPermission::~ManifestPermission() { } |
+ManifestPermission* ManifestPermission::Clone() const { |
+ return Union(this); |
+} |
+ |
+bool ManifestPermission::Contains(const ManifestPermission* rhs) const { |
+ return scoped_ptr<ManifestPermission>(Intersect(rhs))->Equal(rhs); |
+} |
+ |
+bool ManifestPermission::Equal(const ManifestPermission* rhs) const { |
+ return ToValue()->Equals(rhs->ToValue().get()); |
+} |
+ |
+void ManifestPermission::Write(IPC::Message* m) const { |
+ base::ListValue singleton; |
+ base::Value* value = ToValue().release(); |
+ singleton.Append(value); |
+ IPC::WriteParam(m, singleton); |
+} |
+ |
+bool ManifestPermission::Read(const IPC::Message* m, PickleIterator* iter) { |
+ base::ListValue singleton; |
+ if (!IPC::ReadParam(m, iter, &singleton)) |
+ return false; |
+ if (singleton.GetSize() != 1) |
+ return false; |
+ base::Value* value = NULL; |
+ if (!singleton.Get(0, &value)) |
+ return false; |
+ return FromValue(value); |
+} |
+ |
+void ManifestPermission::Log(std::string* log) const { |
+ base::JSONWriter::WriteWithOptions( |
+ ToValue().get(), base::JSONWriter::OPTIONS_PRETTY_PRINT, log); |
+} |
+ |
} // namespace extensions |