| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "extensions/common/permissions/settings_override_permission.h" |
| |
| #include <memory> |
| |
| #include "base/strings/utf_string_conversions.h" |
| #include "extensions/common/permissions/api_permission_set.h" |
| #include "extensions/strings/grit/extensions_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| namespace extensions { |
| |
| SettingsOverrideAPIPermission::SettingsOverrideAPIPermission( |
| const APIPermissionInfo* permission) |
| : APIPermission(permission) {} |
| |
| SettingsOverrideAPIPermission::SettingsOverrideAPIPermission( |
| const APIPermissionInfo* permission, |
| const std::string& setting_value) |
| : APIPermission(permission), setting_value_(setting_value) {} |
| |
| SettingsOverrideAPIPermission::~SettingsOverrideAPIPermission() = default; |
| |
| PermissionIDSet SettingsOverrideAPIPermission::GetPermissions() const { |
| PermissionIDSet permissions; |
| permissions.insert(info()->id(), base::UTF8ToUTF16(setting_value_)); |
| return permissions; |
| } |
| |
| bool SettingsOverrideAPIPermission::Check( |
| const APIPermission::CheckParam* param) const { |
| return (param == nullptr); |
| } |
| |
| bool SettingsOverrideAPIPermission::Contains(const APIPermission* rhs) const { |
| CHECK_EQ(info(), rhs->info()); |
| return true; |
| } |
| |
| bool SettingsOverrideAPIPermission::Equal(const APIPermission* rhs) const { |
| if (this != rhs) |
| CHECK_EQ(info(), rhs->info()); |
| return true; |
| } |
| |
| bool SettingsOverrideAPIPermission::FromValue( |
| const base::Value* value, |
| std::string* /*error*/, |
| std::vector<std::string>* unhandled_permissions) { |
| if (!value || !value->is_string()) |
| return false; |
| setting_value_ = value->GetString(); |
| return true; |
| } |
| |
| std::unique_ptr<base::Value> SettingsOverrideAPIPermission::ToValue() const { |
| return std::make_unique<base::Value>(setting_value_); |
| } |
| |
| std::unique_ptr<APIPermission> SettingsOverrideAPIPermission::Clone() const { |
| return std::make_unique<SettingsOverrideAPIPermission>(info(), |
| setting_value_); |
| } |
| |
| std::unique_ptr<APIPermission> SettingsOverrideAPIPermission::Diff( |
| const APIPermission* rhs) const { |
| CHECK_EQ(info(), rhs->info()); |
| return nullptr; |
| } |
| |
| std::unique_ptr<APIPermission> SettingsOverrideAPIPermission::Union( |
| const APIPermission* rhs) const { |
| CHECK_EQ(info(), rhs->info()); |
| return std::make_unique<SettingsOverrideAPIPermission>(info(), |
| setting_value_); |
| } |
| |
| std::unique_ptr<APIPermission> SettingsOverrideAPIPermission::Intersect( |
| const APIPermission* rhs) const { |
| CHECK_EQ(info(), rhs->info()); |
| return std::make_unique<SettingsOverrideAPIPermission>(info(), |
| setting_value_); |
| } |
| |
| } // namespace extensions |