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 12namespace extensions { 13 14ManifestPermission::ManifestPermission() {} 15 16ManifestPermission::~ManifestPermission() { } 17 18ManifestPermission* ManifestPermission::Clone() const { 19 return Union(this); 20} 21 22bool ManifestPermission::Contains(const ManifestPermission* rhs) const { 23 return scoped_ptr<ManifestPermission>(Intersect(rhs))->Equal(rhs); 24} 25 26bool ManifestPermission::Equal(const ManifestPermission* rhs) const { 27 return ToValue()->Equals(rhs->ToValue().get()); 28} 29 30void 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 37bool 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 49void 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