diff options
Diffstat (limited to 'chrome/common/extensions/permissions/socket_permission.cc')
-rw-r--r-- | chrome/common/extensions/permissions/socket_permission.cc | 114 |
1 files changed, 2 insertions, 112 deletions
diff --git a/chrome/common/extensions/permissions/socket_permission.cc b/chrome/common/extensions/permissions/socket_permission.cc index 5a087f5..c2eb84c 100644 --- a/chrome/common/extensions/permissions/socket_permission.cc +++ b/chrome/common/extensions/permissions/socket_permission.cc @@ -9,25 +9,20 @@ #include "base/logging.h" #include "base/memory/scoped_ptr.h" #include "base/utf_string_conversions.h" -#include "base/values.h" -#include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/permissions/permissions_info.h" +#include "chrome/common/extensions/permissions/set_disjunction_permission.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" namespace extensions { SocketPermission::SocketPermission(const APIPermissionInfo* info) - : APIPermission(info) { + : SetDisjunctionPermission<SocketPermissionData, SocketPermission>(info) { } SocketPermission::~SocketPermission() { } -bool SocketPermission::HasMessages() const { - return !data_set_.empty(); -} - PermissionMessages SocketPermission::GetMessages() const { DCHECK(HasMessages()); PermissionMessages result; @@ -97,109 +92,4 @@ void SocketPermission::AddSpecificHostMessage(PermissionMessages& messages) } } -bool SocketPermission::Check( - const APIPermission::CheckParam* param) const { - const CheckParam* socket_param = static_cast<const CheckParam*>(param); - std::set<SocketPermissionData>::const_iterator i; - for (i = data_set_.begin(); i != data_set_.end(); ++i) { - if (i->Match(socket_param->request)) - return true; - } - return false; -} - -bool SocketPermission::Contains(const APIPermission* rhs) const { - CHECK(rhs->info() == info()); - const SocketPermission* perm = static_cast<const SocketPermission*>(rhs); - return std::includes(data_set_.begin(), data_set_.end(), - perm->data_set_.begin(), perm->data_set_.end()); -} - -bool SocketPermission::Equal(const APIPermission* rhs) const { - CHECK(rhs->info() == info()); - const SocketPermission* perm = static_cast<const SocketPermission*>(rhs); - return data_set_ == perm->data_set_; -} - -bool SocketPermission::FromValue(const base::Value* value) { - data_set_.clear(); - const base::ListValue* list = NULL; - - if (!value) - return false; - - if (!value->GetAsList(&list) || list->GetSize() == 0) - return false; - - for (size_t i = 0; i < list->GetSize(); ++i) { - std::string str; - SocketPermissionData data; - if (!list->GetString(i, &str) || !data.Parse(str)) - return false; - data_set_.insert(data); - } - return true; -} - -void SocketPermission::ToValue(base::Value** value) const { - base::ListValue* list = new ListValue(); - std::set<SocketPermissionData>::const_iterator i; - for (i = data_set_.begin(); i != data_set_.end(); ++i) { - list->Append(base::Value::CreateStringValue(i->GetAsString())); - } - *value = list; -} - -APIPermission* SocketPermission::Clone() const { - SocketPermission* result = new SocketPermission(info()); - result->data_set_ = data_set_; - return result; -} - -APIPermission* SocketPermission::Diff(const APIPermission* rhs) const { - CHECK(rhs->info() == info()); - const SocketPermission* perm = static_cast<const SocketPermission*>(rhs); - scoped_ptr<SocketPermission> result(new SocketPermission(info())); - std::set_difference(data_set_.begin(), data_set_.end(), - perm->data_set_.begin(), perm->data_set_.end(), - std::inserter<std::set<SocketPermissionData> >( - result->data_set_, result->data_set_.begin())); - return result->data_set_.empty() ? NULL : result.release(); -} - -APIPermission* SocketPermission::Union(const APIPermission* rhs) const { - CHECK(rhs->info() == info()); - const SocketPermission* perm = static_cast<const SocketPermission*>(rhs); - scoped_ptr<SocketPermission> result(new SocketPermission(info())); - std::set_union(data_set_.begin(), data_set_.end(), - perm->data_set_.begin(), perm->data_set_.end(), - std::inserter<std::set<SocketPermissionData> >( - result->data_set_, result->data_set_.begin())); - return result->data_set_.empty() ? NULL : result.release(); -} - -APIPermission* SocketPermission::Intersect(const APIPermission* rhs) const { - CHECK(rhs->info() == info()); - const SocketPermission* perm = static_cast<const SocketPermission*>(rhs); - scoped_ptr<SocketPermission> result(new SocketPermission(info())); - std::set_intersection(data_set_.begin(), data_set_.end(), - perm->data_set_.begin(), perm->data_set_.end(), - std::inserter<std::set<SocketPermissionData> >( - result->data_set_, result->data_set_.begin())); - return result->data_set_.empty() ? NULL : result.release(); -} - -void SocketPermission::Write(IPC::Message* m) const { - IPC::WriteParam(m, data_set_); -} - -bool SocketPermission::Read(const IPC::Message* m, PickleIterator* iter) { - return IPC::ReadParam(m, iter, &data_set_); -} - -void SocketPermission::Log(std::string* log) const { - IPC::LogParam(data_set_, log); -} - } // namespace extensions - |