Home | History | Annotate | Download | only in permissions
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "extensions/common/permissions/manifest_permission.h"
      6 
      7 #include "base/json/json_writer.h"
      8 #include "extensions/common/manifest_handler.h"
      9 #include "ipc/ipc_message.h"
     10 #include "ipc/ipc_message_utils.h"
     11 
     12 namespace extensions {
     13 
     14 ManifestPermission::ManifestPermission() {}
     15 
     16 ManifestPermission::~ManifestPermission() { }
     17 
     18 ManifestPermission* ManifestPermission::Clone() const {
     19   return Union(this);
     20 }
     21 
     22 bool ManifestPermission::Contains(const ManifestPermission* rhs) const {
     23   return scoped_ptr<ManifestPermission>(Intersect(rhs))->Equal(rhs);
     24 }
     25 
     26 bool ManifestPermission::Equal(const ManifestPermission* rhs) const {
     27   return ToValue()->Equals(rhs->ToValue().get());
     28 }
     29 
     30 void ManifestPermission::Write(IPC::Message* m) const {
     31   base::ListValue singleton;
     32   base::Value* value = ToValue().release();
     33   singleton.Append(value);
     34   IPC::WriteParam(m, singleton);
     35 }
     36 
     37 bool ManifestPermission::Read(const IPC::Message* m, PickleIterator* iter) {
     38   base::ListValue singleton;
     39   if (!IPC::ReadParam(m, iter, &singleton))
     40     return false;
     41   if (singleton.GetSize() != 1)
     42     return false;
     43   base::Value* value = NULL;
     44   if (!singleton.Get(0, &value))
     45     return false;
     46   return FromValue(value);
     47 }
     48 
     49 void ManifestPermission::Log(std::string* log) const {
     50   base::JSONWriter::WriteWithOptions(
     51       ToValue().get(), base::JSONWriter::OPTIONS_PRETTY_PRINT, log);
     52 }
     53 
     54 }  // namespace extensions
     55