Commit 033021e6 authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions Cleanup] Make BaseSetOperators::insert() take a unique_ptr

Update BaseSetOperators::insert() (and the related method
APIpermissionSet::insert()) accept a unique_ptr as a parameter rather
than a raw pointer. This makes it significantly more clear that
ownership is taken as a result of the method call.

Update all call sites appropriately.

Bug: 907661
Change-Id: I08568711a01d7a371343dc9137aefedf86d43c7a
Reviewed-on: https://chromium-review.googlesource.com/c/1347621
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarIstiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611201}
parent fa8e4627
...@@ -45,8 +45,8 @@ std::unique_ptr<const PermissionSet> CreatePermissions( ...@@ -45,8 +45,8 @@ std::unique_ptr<const PermissionSet> CreatePermissions(
if (include_clipboard) if (include_clipboard)
apis.insert(APIPermission::kClipboardRead); apis.insert(APIPermission::kClipboardRead);
ManifestPermissionSet manifest; ManifestPermissionSet manifest;
manifest.insert(new MockManifestPermission("author")); manifest.insert(std::make_unique<MockManifestPermission>("author"));
manifest.insert(new MockManifestPermission("background")); manifest.insert(std::make_unique<MockManifestPermission>("background"));
URLPatternSet explicit_hosts({ URLPatternSet explicit_hosts({
URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/*"), URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/*"),
URLPattern(URLPattern::SCHEME_ALL, "<all_urls>")}); URLPattern(URLPattern::SCHEME_ALL, "<all_urls>")});
......
...@@ -90,14 +90,15 @@ std::unique_ptr<const PermissionSet> UnpackPermissionSet( ...@@ -90,14 +90,15 @@ std::unique_ptr<const PermissionSet> UnpackPermissionSet(
return NULL; return NULL;
} }
APIPermission* permission = NULL; std::unique_ptr<APIPermission> permission;
// Explicitly check the permissions that accept arguments until the bug // Explicitly check the permissions that accept arguments until the bug
// referenced above is fixed. // referenced above is fixed.
const APIPermissionInfo* usb_device_permission_info = const APIPermissionInfo* usb_device_permission_info =
info->GetByID(APIPermission::kUsbDevice); info->GetByID(APIPermission::kUsbDevice);
if (permission_name == usb_device_permission_info->name()) { if (permission_name == usb_device_permission_info->name()) {
permission = new UsbDevicePermission(usb_device_permission_info); permission =
std::make_unique<UsbDevicePermission>(usb_device_permission_info);
} else { } else {
*error = kUnsupportedPermissionId; *error = kUnsupportedPermissionId;
return NULL; return NULL;
...@@ -108,7 +109,7 @@ std::unique_ptr<const PermissionSet> UnpackPermissionSet( ...@@ -108,7 +109,7 @@ std::unique_ptr<const PermissionSet> UnpackPermissionSet(
*error = ErrorUtils::FormatErrorMessage(kInvalidParameter, *it); *error = ErrorUtils::FormatErrorMessage(kInvalidParameter, *it);
return NULL; return NULL;
} }
apis.insert(permission); apis.insert(std::move(permission));
} else { } else {
const APIPermissionInfo* permission_info = info->GetByName(*it); const APIPermissionInfo* permission_info = info->GetByName(*it);
if (!permission_info) { if (!permission_info) {
......
...@@ -176,7 +176,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { ...@@ -176,7 +176,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest {
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
api_perm_set1_.insert(permission.release()); api_perm_set1_.insert(std::move(permission));
api_perm_set2_.insert(APIPermission::kHistory); api_perm_set2_.insert(APIPermission::kHistory);
......
...@@ -125,7 +125,7 @@ TEST_F(ChromePermissionMessageProviderUnittest, ...@@ -125,7 +125,7 @@ TEST_F(ChromePermissionMessageProviderUnittest,
devices_list->Append( devices_list->Append(
UsbDevicePermissionData(0x02ad, 0x138d, -1, -1).ToValue()); UsbDevicePermissionData(0x02ad, 0x138d, -1, -1).ToValue());
ASSERT_TRUE(usb->FromValue(devices_list.get(), nullptr, nullptr)); ASSERT_TRUE(usb->FromValue(devices_list.get(), nullptr, nullptr));
permissions.insert(usb.release()); permissions.insert(std::move(usb));
PermissionMessages messages = PermissionMessages messages =
GetMessages(permissions, Manifest::TYPE_EXTENSION); GetMessages(permissions, Manifest::TYPE_EXTENSION);
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/json/json_file_value_serializer.h" #include "base/json/json_file_value_serializer.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
...@@ -323,8 +324,6 @@ TEST(PermissionsTest, ExplicitAccessToOrigin) { ...@@ -323,8 +324,6 @@ TEST(PermissionsTest, ExplicitAccessToOrigin) {
} }
TEST(PermissionsTest, CreateUnion) { TEST(PermissionsTest, CreateUnion) {
APIPermission* permission = nullptr;
ManifestPermissionSet manifest_permissions; ManifestPermissionSet manifest_permissions;
APIPermissionSet apis1; APIPermissionSet apis1;
APIPermissionSet apis2; APIPermissionSet apis2;
...@@ -346,7 +345,8 @@ TEST(PermissionsTest, CreateUnion) { ...@@ -346,7 +345,8 @@ TEST(PermissionsTest, CreateUnion) {
const APIPermissionInfo* permission_info = const APIPermissionInfo* permission_info =
PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -358,10 +358,10 @@ TEST(PermissionsTest, CreateUnion) { ...@@ -358,10 +358,10 @@ TEST(PermissionsTest, CreateUnion) {
// Union with an empty set. // Union with an empty set.
apis1.insert(APIPermission::kTab); apis1.insert(APIPermission::kTab);
apis1.insert(APIPermission::kBackground); apis1.insert(APIPermission::kBackground);
apis1.insert(permission->Clone()); apis1.insert(base::WrapUnique(permission->Clone()));
expected_apis.insert(APIPermission::kTab); expected_apis.insert(APIPermission::kTab);
expected_apis.insert(APIPermission::kBackground); expected_apis.insert(APIPermission::kBackground);
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
AddPattern(&explicit_hosts1, "http://*.google.com/*"); AddPattern(&explicit_hosts1, "http://*.google.com/*");
AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); AddPattern(&expected_explicit_hosts, "http://*.google.com/*");
...@@ -389,20 +389,20 @@ TEST(PermissionsTest, CreateUnion) { ...@@ -389,20 +389,20 @@ TEST(PermissionsTest, CreateUnion) {
apis2.insert(APIPermission::kProxy); apis2.insert(APIPermission::kProxy);
apis2.insert(APIPermission::kClipboardWrite); apis2.insert(APIPermission::kClipboardWrite);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
value->AppendString("udp-send-to::8899"); value->AppendString("udp-send-to::8899");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
apis2.insert(permission); apis2.insert(std::move(permission));
expected_apis.insert(APIPermission::kTab); expected_apis.insert(APIPermission::kTab);
expected_apis.insert(APIPermission::kProxy); expected_apis.insert(APIPermission::kProxy);
expected_apis.insert(APIPermission::kClipboardWrite); expected_apis.insert(APIPermission::kClipboardWrite);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -412,7 +412,7 @@ TEST(PermissionsTest, CreateUnion) { ...@@ -412,7 +412,7 @@ TEST(PermissionsTest, CreateUnion) {
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
// Insert a new permission socket permisssion which will replace the old one. // Insert a new permission socket permisssion which will replace the old one.
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
AddPattern(&explicit_hosts2, "http://*.example.com/*"); AddPattern(&explicit_hosts2, "http://*.example.com/*");
AddPattern(&scriptable_hosts2, "http://*.google.com/*"); AddPattern(&scriptable_hosts2, "http://*.google.com/*");
...@@ -441,8 +441,6 @@ TEST(PermissionsTest, CreateUnion) { ...@@ -441,8 +441,6 @@ TEST(PermissionsTest, CreateUnion) {
} }
TEST(PermissionsTest, CreateIntersection) { TEST(PermissionsTest, CreateIntersection) {
APIPermission* permission = nullptr;
ManifestPermissionSet manifest_permissions; ManifestPermissionSet manifest_permissions;
APIPermissionSet apis1; APIPermissionSet apis1;
APIPermissionSet apis2; APIPermissionSet apis2;
...@@ -468,7 +466,8 @@ TEST(PermissionsTest, CreateIntersection) { ...@@ -468,7 +466,8 @@ TEST(PermissionsTest, CreateIntersection) {
// Intersection with an empty set. // Intersection with an empty set.
apis1.insert(APIPermission::kTab); apis1.insert(APIPermission::kTab);
apis1.insert(APIPermission::kBackground); apis1.insert(APIPermission::kBackground);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -476,7 +475,7 @@ TEST(PermissionsTest, CreateIntersection) { ...@@ -476,7 +475,7 @@ TEST(PermissionsTest, CreateIntersection) {
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
apis1.insert(permission); apis1.insert(std::move(permission));
AddPattern(&explicit_hosts1, "http://*.google.com/*"); AddPattern(&explicit_hosts1, "http://*.google.com/*");
AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); AddPattern(&scriptable_hosts1, "http://www.reddit.com/*");
...@@ -503,7 +502,7 @@ TEST(PermissionsTest, CreateIntersection) { ...@@ -503,7 +502,7 @@ TEST(PermissionsTest, CreateIntersection) {
apis2.insert(APIPermission::kTab); apis2.insert(APIPermission::kTab);
apis2.insert(APIPermission::kProxy); apis2.insert(APIPermission::kProxy);
apis2.insert(APIPermission::kClipboardWrite); apis2.insert(APIPermission::kClipboardWrite);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("udp-bind::8080"); value->AppendString("udp-bind::8080");
...@@ -511,17 +510,17 @@ TEST(PermissionsTest, CreateIntersection) { ...@@ -511,17 +510,17 @@ TEST(PermissionsTest, CreateIntersection) {
value->AppendString("udp-send-to::8899"); value->AppendString("udp-send-to::8899");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
apis2.insert(permission); apis2.insert(std::move(permission));
expected_apis.insert(APIPermission::kTab); expected_apis.insert(APIPermission::kTab);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("udp-bind::8080"); value->AppendString("udp-bind::8080");
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
AddPattern(&explicit_hosts2, "http://*.example.com/*"); AddPattern(&explicit_hosts2, "http://*.example.com/*");
AddPattern(&explicit_hosts2, "http://*.google.com/*"); AddPattern(&explicit_hosts2, "http://*.google.com/*");
...@@ -550,8 +549,6 @@ TEST(PermissionsTest, CreateIntersection) { ...@@ -550,8 +549,6 @@ TEST(PermissionsTest, CreateIntersection) {
} }
TEST(PermissionsTest, CreateDifference) { TEST(PermissionsTest, CreateDifference) {
APIPermission* permission = nullptr;
ManifestPermissionSet manifest_permissions; ManifestPermissionSet manifest_permissions;
APIPermissionSet apis1; APIPermissionSet apis1;
APIPermissionSet apis2; APIPermissionSet apis2;
...@@ -577,7 +574,8 @@ TEST(PermissionsTest, CreateDifference) { ...@@ -577,7 +574,8 @@ TEST(PermissionsTest, CreateDifference) {
// Difference with an empty set. // Difference with an empty set.
apis1.insert(APIPermission::kTab); apis1.insert(APIPermission::kTab);
apis1.insert(APIPermission::kBackground); apis1.insert(APIPermission::kBackground);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -585,7 +583,7 @@ TEST(PermissionsTest, CreateDifference) { ...@@ -585,7 +583,7 @@ TEST(PermissionsTest, CreateDifference) {
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
apis1.insert(permission); apis1.insert(std::move(permission));
AddPattern(&explicit_hosts1, "http://*.google.com/*"); AddPattern(&explicit_hosts1, "http://*.google.com/*");
AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); AddPattern(&scriptable_hosts1, "http://www.reddit.com/*");
...@@ -601,24 +599,24 @@ TEST(PermissionsTest, CreateDifference) { ...@@ -601,24 +599,24 @@ TEST(PermissionsTest, CreateDifference) {
apis2.insert(APIPermission::kTab); apis2.insert(APIPermission::kTab);
apis2.insert(APIPermission::kProxy); apis2.insert(APIPermission::kProxy);
apis2.insert(APIPermission::kClipboardWrite); apis2.insert(APIPermission::kClipboardWrite);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
value->AppendString("udp-send-to::8899"); value->AppendString("udp-send-to::8899");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
apis2.insert(permission); apis2.insert(std::move(permission));
expected_apis.insert(APIPermission::kBackground); expected_apis.insert(APIPermission::kBackground);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("udp-bind::8080"); value->AppendString("udp-bind::8080");
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr)); ASSERT_TRUE(permission->FromValue(value.get(), nullptr, nullptr));
} }
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
AddPattern(&explicit_hosts2, "http://*.example.com/*"); AddPattern(&explicit_hosts2, "http://*.example.com/*");
AddPattern(&explicit_hosts2, "http://*.google.com/*"); AddPattern(&explicit_hosts2, "http://*.google.com/*");
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <stddef.h> #include <stddef.h>
#include <memory> #include <memory>
#include <utility>
#include "content/public/common/common_param_traits.h" #include "content/public/common/common_param_traits.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
...@@ -216,7 +217,7 @@ bool ParamTraits<APIPermissionSet>::Read(const base::Pickle* m, ...@@ -216,7 +217,7 @@ bool ParamTraits<APIPermissionSet>::Read(const base::Pickle* m,
std::unique_ptr<APIPermission> p(permission_info->CreateAPIPermission()); std::unique_ptr<APIPermission> p(permission_info->CreateAPIPermission());
if (!p->Read(m, iter)) if (!p->Read(m, iter))
return false; return false;
r->insert(p.release()); r->insert(std::move(p));
} }
return true; return true;
} }
...@@ -253,7 +254,7 @@ bool ParamTraits<ManifestPermissionSet>::Read(const base::Pickle* m, ...@@ -253,7 +254,7 @@ bool ParamTraits<ManifestPermissionSet>::Read(const base::Pickle* m,
return false; return false;
if (!p->Read(m, iter)) if (!p->Read(m, iter))
return false; return false;
r->insert(p.release()); r->insert(std::move(p));
} }
return true; return true;
} }
......
...@@ -182,10 +182,10 @@ void ManifestHandlerRegistry::AddExtensionInitialRequiredPermissions( ...@@ -182,10 +182,10 @@ void ManifestHandlerRegistry::AddExtensionInitialRequiredPermissions(
const Extension* extension, ManifestPermissionSet* permission_set) { const Extension* extension, ManifestPermissionSet* permission_set) {
for (ManifestHandlerMap::const_iterator it = handlers_.begin(); for (ManifestHandlerMap::const_iterator it = handlers_.begin();
it != handlers_.end(); ++it) { it != handlers_.end(); ++it) {
ManifestPermission* permission = std::unique_ptr<ManifestPermission> permission(
it->second->CreateInitialRequiredPermission(extension); it->second->CreateInitialRequiredPermission(extension));
if (permission) { if (permission) {
permission_set->insert(permission); permission_set->insert(std::move(permission));
} }
} }
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/values.h" #include "base/values.h"
...@@ -110,7 +111,8 @@ bool ContentCapabilitiesHandler::Parse(Extension* extension, ...@@ -110,7 +111,8 @@ bool ContentCapabilitiesHandler::Parse(Extension* extension,
keys::kContentCapabilities, keys::kContentCapabilities,
permission_name)); permission_name));
} else { } else {
info->permissions.insert(permission_info->CreateAPIPermission()); info->permissions.insert(
base::WrapUnique(permission_info->CreateAPIPermission()));
} }
} }
......
...@@ -387,7 +387,8 @@ void PermissionsParser::AddAPIPermission(Extension* extension, ...@@ -387,7 +387,8 @@ void PermissionsParser::AddAPIPermission(Extension* extension,
APIPermission* permission) { APIPermission* permission) {
DCHECK(extension->permissions_parser()); DCHECK(extension->permissions_parser());
extension->permissions_parser() extension->permissions_parser()
->initial_required_permissions_->api_permissions.insert(permission); ->initial_required_permissions_->api_permissions.insert(
base::WrapUnique(permission));
} }
// static // static
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "extensions/common/permissions/api_permission_set.h" #include "extensions/common/permissions/api_permission_set.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/values.h" #include "base/values.h"
...@@ -68,7 +69,7 @@ bool CreateAPIPermission( ...@@ -68,7 +69,7 @@ bool CreateAPIPermission(
} }
LOG(WARNING) << "Parse permission failed."; LOG(WARNING) << "Parse permission failed.";
} else { } else {
api_permissions->insert(permission.release()); api_permissions->insert(std::move(permission));
} }
return true; return true;
} }
...@@ -132,11 +133,11 @@ void APIPermissionSet::insert(APIPermission::ID id) { ...@@ -132,11 +133,11 @@ void APIPermissionSet::insert(APIPermission::ID id) {
const APIPermissionInfo* permission_info = const APIPermissionInfo* permission_info =
PermissionsInfo::GetInstance()->GetByID(id); PermissionsInfo::GetInstance()->GetByID(id);
DCHECK(permission_info); DCHECK(permission_info);
insert(permission_info->CreateAPIPermission()); insert(base::WrapUnique(permission_info->CreateAPIPermission()));
} }
void APIPermissionSet::insert(APIPermission* permission) { void APIPermissionSet::insert(std::unique_ptr<APIPermission> permission) {
BaseSetOperators<APIPermissionSet>::insert(permission); BaseSetOperators<APIPermissionSet>::insert(std::move(permission));
} }
// static // static
......
...@@ -43,9 +43,8 @@ class APIPermissionSet : public BaseSetOperators<APIPermissionSet> { ...@@ -43,9 +43,8 @@ class APIPermissionSet : public BaseSetOperators<APIPermissionSet> {
void insert(APIPermission::ID id); void insert(APIPermission::ID id);
// Insert |permission| into the APIPermissionSet. The APIPermissionSet will // Inserts |permission| into the APIPermissionSet.
// take the ownership of |permission|, void insert(std::unique_ptr<APIPermission> permission);
void insert(APIPermission* permission);
// Parses permissions from |permissions| and adds the parsed permissions to // Parses permissions from |permissions| and adds the parsed permissions to
// |api_permissions|. If |source| is kDisallowInternalPermissions, treat // |api_permissions|. If |source| is kDisallowInternalPermissions, treat
......
...@@ -33,8 +33,6 @@ TEST(APIPermissionSetTest, General) { ...@@ -33,8 +33,6 @@ TEST(APIPermissionSetTest, General) {
} }
TEST(APIPermissionSetTest, CreateUnion) { TEST(APIPermissionSetTest, CreateUnion) {
APIPermission* permission = NULL;
APIPermissionSet apis1; APIPermissionSet apis1;
APIPermissionSet apis2; APIPermissionSet apis2;
APIPermissionSet expected_apis; APIPermissionSet expected_apis;
...@@ -42,7 +40,8 @@ TEST(APIPermissionSetTest, CreateUnion) { ...@@ -42,7 +40,8 @@ TEST(APIPermissionSetTest, CreateUnion) {
const APIPermissionInfo* permission_info = const APIPermissionInfo* permission_info =
PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -54,10 +53,10 @@ TEST(APIPermissionSetTest, CreateUnion) { ...@@ -54,10 +53,10 @@ TEST(APIPermissionSetTest, CreateUnion) {
// Union with an empty set. // Union with an empty set.
apis1.insert(APIPermission::kAudioCapture); apis1.insert(APIPermission::kAudioCapture);
apis1.insert(APIPermission::kDns); apis1.insert(APIPermission::kDns);
apis1.insert(permission->Clone()); apis1.insert(base::WrapUnique(permission->Clone()));
expected_apis.insert(APIPermission::kAudioCapture); expected_apis.insert(APIPermission::kAudioCapture);
expected_apis.insert(APIPermission::kDns); expected_apis.insert(APIPermission::kDns);
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
ASSERT_TRUE(apis2.empty()); ASSERT_TRUE(apis2.empty());
APIPermissionSet::Union(apis1, apis2, &result); APIPermissionSet::Union(apis1, apis2, &result);
...@@ -77,21 +76,21 @@ TEST(APIPermissionSetTest, CreateUnion) { ...@@ -77,21 +76,21 @@ TEST(APIPermissionSetTest, CreateUnion) {
apis2.insert(APIPermission::kPower); apis2.insert(APIPermission::kPower);
apis2.insert(APIPermission::kSerial); apis2.insert(APIPermission::kSerial);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
value->AppendString("udp-send-to::8899"); value->AppendString("udp-send-to::8899");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
apis2.insert(permission); apis2.insert(std::move(permission));
expected_apis.insert(APIPermission::kAudioCapture); expected_apis.insert(APIPermission::kAudioCapture);
expected_apis.insert(APIPermission::kHid); expected_apis.insert(APIPermission::kHid);
expected_apis.insert(APIPermission::kPower); expected_apis.insert(APIPermission::kPower);
expected_apis.insert(APIPermission::kSerial); expected_apis.insert(APIPermission::kSerial);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -101,7 +100,7 @@ TEST(APIPermissionSetTest, CreateUnion) { ...@@ -101,7 +100,7 @@ TEST(APIPermissionSetTest, CreateUnion) {
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
// Insert a new socket permission which will replace the old one. // Insert a new socket permission which will replace the old one.
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
APIPermissionSet::Union(apis1, apis2, &result); APIPermissionSet::Union(apis1, apis2, &result);
...@@ -116,8 +115,6 @@ TEST(APIPermissionSetTest, CreateUnion) { ...@@ -116,8 +115,6 @@ TEST(APIPermissionSetTest, CreateUnion) {
} }
TEST(APIPermissionSetTest, CreateIntersection) { TEST(APIPermissionSetTest, CreateIntersection) {
APIPermission* permission = NULL;
APIPermissionSet apis1; APIPermissionSet apis1;
APIPermissionSet apis2; APIPermissionSet apis2;
APIPermissionSet expected_apis; APIPermissionSet expected_apis;
...@@ -129,7 +126,8 @@ TEST(APIPermissionSetTest, CreateIntersection) { ...@@ -129,7 +126,8 @@ TEST(APIPermissionSetTest, CreateIntersection) {
// Intersection with an empty set. // Intersection with an empty set.
apis1.insert(APIPermission::kAudioCapture); apis1.insert(APIPermission::kAudioCapture);
apis1.insert(APIPermission::kDns); apis1.insert(APIPermission::kDns);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -137,7 +135,7 @@ TEST(APIPermissionSetTest, CreateIntersection) { ...@@ -137,7 +135,7 @@ TEST(APIPermissionSetTest, CreateIntersection) {
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
apis1.insert(permission); apis1.insert(std::move(permission));
ASSERT_TRUE(apis2.empty()); ASSERT_TRUE(apis2.empty());
APIPermissionSet::Intersection(apis1, apis2, &result); APIPermissionSet::Intersection(apis1, apis2, &result);
...@@ -157,7 +155,7 @@ TEST(APIPermissionSetTest, CreateIntersection) { ...@@ -157,7 +155,7 @@ TEST(APIPermissionSetTest, CreateIntersection) {
apis2.insert(APIPermission::kHid); apis2.insert(APIPermission::kHid);
apis2.insert(APIPermission::kPower); apis2.insert(APIPermission::kPower);
apis2.insert(APIPermission::kSerial); apis2.insert(APIPermission::kSerial);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("udp-bind::8080"); value->AppendString("udp-bind::8080");
...@@ -165,17 +163,17 @@ TEST(APIPermissionSetTest, CreateIntersection) { ...@@ -165,17 +163,17 @@ TEST(APIPermissionSetTest, CreateIntersection) {
value->AppendString("udp-send-to::8899"); value->AppendString("udp-send-to::8899");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
apis2.insert(permission); apis2.insert(std::move(permission));
expected_apis.insert(APIPermission::kAudioCapture); expected_apis.insert(APIPermission::kAudioCapture);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("udp-bind::8080"); value->AppendString("udp-bind::8080");
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
APIPermissionSet::Intersection(apis1, apis2, &result); APIPermissionSet::Intersection(apis1, apis2, &result);
...@@ -190,8 +188,6 @@ TEST(APIPermissionSetTest, CreateIntersection) { ...@@ -190,8 +188,6 @@ TEST(APIPermissionSetTest, CreateIntersection) {
} }
TEST(APIPermissionSetTest, CreateDifference) { TEST(APIPermissionSetTest, CreateDifference) {
APIPermission* permission = NULL;
APIPermissionSet apis1; APIPermissionSet apis1;
APIPermissionSet apis2; APIPermissionSet apis2;
APIPermissionSet expected_apis; APIPermissionSet expected_apis;
...@@ -203,7 +199,8 @@ TEST(APIPermissionSetTest, CreateDifference) { ...@@ -203,7 +199,8 @@ TEST(APIPermissionSetTest, CreateDifference) {
// Difference with an empty set. // Difference with an empty set.
apis1.insert(APIPermission::kAudioCapture); apis1.insert(APIPermission::kAudioCapture);
apis1.insert(APIPermission::kDns); apis1.insert(APIPermission::kDns);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -211,7 +208,7 @@ TEST(APIPermissionSetTest, CreateDifference) { ...@@ -211,7 +208,7 @@ TEST(APIPermissionSetTest, CreateDifference) {
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
apis1.insert(permission); apis1.insert(std::move(permission));
ASSERT_TRUE(apis2.empty()); ASSERT_TRUE(apis2.empty());
APIPermissionSet::Difference(apis1, apis2, &result); APIPermissionSet::Difference(apis1, apis2, &result);
...@@ -223,24 +220,24 @@ TEST(APIPermissionSetTest, CreateDifference) { ...@@ -223,24 +220,24 @@ TEST(APIPermissionSetTest, CreateDifference) {
apis2.insert(APIPermission::kHid); apis2.insert(APIPermission::kHid);
apis2.insert(APIPermission::kPower); apis2.insert(APIPermission::kPower);
apis2.insert(APIPermission::kSerial); apis2.insert(APIPermission::kSerial);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
value->AppendString("udp-send-to::8899"); value->AppendString("udp-send-to::8899");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
apis2.insert(permission); apis2.insert(std::move(permission));
expected_apis.insert(APIPermission::kDns); expected_apis.insert(APIPermission::kDns);
permission = permission_info->CreateAPIPermission(); permission.reset(permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("udp-bind::8080"); value->AppendString("udp-bind::8080");
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
expected_apis.insert(permission); expected_apis.insert(std::move(permission));
APIPermissionSet::Difference(apis1, apis2, &result); APIPermissionSet::Difference(apis1, apis2, &result);
...@@ -256,8 +253,6 @@ TEST(APIPermissionSetTest, CreateDifference) { ...@@ -256,8 +253,6 @@ TEST(APIPermissionSetTest, CreateDifference) {
} }
TEST(APIPermissionSetTest, IPC) { TEST(APIPermissionSetTest, IPC) {
APIPermission* permission = NULL;
APIPermissionSet apis; APIPermissionSet apis;
APIPermissionSet expected_apis; APIPermissionSet expected_apis;
...@@ -266,7 +261,8 @@ TEST(APIPermissionSetTest, IPC) { ...@@ -266,7 +261,8 @@ TEST(APIPermissionSetTest, IPC) {
apis.insert(APIPermission::kAudioCapture); apis.insert(APIPermission::kAudioCapture);
apis.insert(APIPermission::kDns); apis.insert(APIPermission::kDns);
permission = permission_info->CreateAPIPermission(); std::unique_ptr<APIPermission> permission(
permission_info->CreateAPIPermission());
{ {
std::unique_ptr<base::ListValue> value(new base::ListValue()); std::unique_ptr<base::ListValue> value(new base::ListValue());
value->AppendString("tcp-connect:*.example.com:80"); value->AppendString("tcp-connect:*.example.com:80");
...@@ -274,7 +270,7 @@ TEST(APIPermissionSetTest, IPC) { ...@@ -274,7 +270,7 @@ TEST(APIPermissionSetTest, IPC) {
value->AppendString("udp-send-to::8888"); value->AppendString("udp-send-to::8888");
ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
} }
apis.insert(permission); apis.insert(std::move(permission));
EXPECT_NE(apis, expected_apis); EXPECT_NE(apis, expected_apis);
......
...@@ -9,8 +9,10 @@ ...@@ -9,8 +9,10 @@
#include <iterator> #include <iterator>
#include <map> #include <map>
#include <memory>
#include "base/memory/linked_ptr.h" #include "base/memory/linked_ptr.h"
#include "base/memory/ptr_util.h"
namespace extensions { namespace extensions {
...@@ -29,7 +31,9 @@ class BaseSetOperators { ...@@ -29,7 +31,9 @@ class BaseSetOperators {
public: public:
typedef typename BaseSetOperatorsTraits<T>::ElementType ElementType; typedef typename BaseSetOperatorsTraits<T>::ElementType ElementType;
typedef typename BaseSetOperatorsTraits<T>::ElementIDType ElementIDType; typedef typename BaseSetOperatorsTraits<T>::ElementIDType ElementIDType;
typedef std::map<ElementIDType, linked_ptr<ElementType> > Map;
// TODO(devlin): Un-link-ptr-ify this.
using Map = std::map<ElementIDType, linked_ptr<ElementType>>;
class const_iterator : class const_iterator :
public std::iterator<std::input_iterator_tag, const ElementType*> { public std::iterator<std::input_iterator_tag, const ElementType*> {
...@@ -94,7 +98,7 @@ class BaseSetOperators { ...@@ -94,7 +98,7 @@ class BaseSetOperators {
const_iterator it = rhs.begin(); const_iterator it = rhs.begin();
const const_iterator end = rhs.end(); const const_iterator end = rhs.end();
while (it != end) { while (it != end) {
insert(it->Clone()); insert(base::WrapUnique(it->Clone()));
++it; ++it;
} }
return *static_cast<T*>(this); return *static_cast<T*>(this);
...@@ -152,21 +156,21 @@ class BaseSetOperators { ...@@ -152,21 +156,21 @@ class BaseSetOperators {
while (it1 != end1 && it2 != end2) { while (it1 != end1 && it2 != end2) {
if (it1->id() < it2->id()) { if (it1->id() < it2->id()) {
set3->insert(it1->Clone()); set3->insert(base::WrapUnique(it1->Clone()));
++it1; ++it1;
} else if (it1->id() > it2->id()) { } else if (it1->id() > it2->id()) {
++it2; ++it2;
} else { } else {
ElementType* p = it1->Diff(*it2); ElementType* p = it1->Diff(*it2);
if (p) if (p)
set3->insert(p); set3->insert(base::WrapUnique(p));
++it1; ++it1;
++it2; ++it2;
} }
} }
while (it1 != end1) { while (it1 != end1) {
set3->insert(it1->Clone()); set3->insert(base::WrapUnique(it1->Clone()));
++it1; ++it1;
} }
} }
...@@ -188,7 +192,7 @@ class BaseSetOperators { ...@@ -188,7 +192,7 @@ class BaseSetOperators {
} else { } else {
ElementType* p = it1->Intersect(*it2); ElementType* p = it1->Intersect(*it2);
if (p) if (p)
set3->insert(p); set3->insert(base::WrapUnique(p));
++it1; ++it1;
++it2; ++it2;
} }
...@@ -207,73 +211,55 @@ class BaseSetOperators { ...@@ -207,73 +211,55 @@ class BaseSetOperators {
while (true) { while (true) {
if (it1 == end1) { if (it1 == end1) {
while (it2 != end2) { while (it2 != end2) {
set3->insert(it2->Clone()); set3->insert(base::WrapUnique(it2->Clone()));
++it2; ++it2;
} }
break; break;
} }
if (it2 == end2) { if (it2 == end2) {
while (it1 != end1) { while (it1 != end1) {
set3->insert(it1->Clone()); set3->insert(base::WrapUnique(it1->Clone()));
++it1; ++it1;
} }
break; break;
} }
if (it1->id() < it2->id()) { if (it1->id() < it2->id()) {
set3->insert(it1->Clone()); set3->insert(base::WrapUnique(it1->Clone()));
++it1; ++it1;
} else if (it1->id() > it2->id()) { } else if (it1->id() > it2->id()) {
set3->insert(it2->Clone()); set3->insert(base::WrapUnique(it2->Clone()));
++it2; ++it2;
} else { } else {
set3->insert(it1->Union(*it2)); set3->insert(base::WrapUnique(it1->Union(*it2)));
++it1; ++it1;
++it2; ++it2;
} }
} }
} }
const_iterator begin() const { const_iterator begin() const { return const_iterator(map_.begin()); }
return const_iterator(map().begin());
}
const_iterator end() const { const_iterator end() const { return map_.end(); }
return map().end();
}
const_iterator find(ElementIDType id) const { const_iterator find(ElementIDType id) const { return map_.find(id); }
return map().find(id);
}
size_t count(ElementIDType id) const { size_t count(ElementIDType id) const { return map_.count(id); }
return map().count(id);
}
bool empty() const { bool empty() const { return map_.empty(); }
return map().empty();
}
size_t erase(ElementIDType id) { size_t erase(ElementIDType id) { return map_.erase(id); }
return map().erase(id);
}
// Take ownership and insert |item| into the set. void insert(std::unique_ptr<ElementType> item) {
void insert(ElementType* item) { ElementIDType id = item->id();
map_[item->id()].reset(item); map_[id].reset(item.release());
} }
size_t size() const { size_t size() const { return map_.size(); }
return map().size();
}
const Map& map() const { const Map& map() const {
return map_; return map_;
} }
Map& map() {
return map_;
}
void clear() { void clear() {
map_.clear(); map_.clear();
} }
......
...@@ -48,7 +48,7 @@ bool CreateManifestPermission( ...@@ -48,7 +48,7 @@ bool CreateManifestPermission(
LOG(WARNING) << "Parse permission failed."; LOG(WARNING) << "Parse permission failed.";
return true; return true;
} else { } else {
manifest_permissions->insert(permission.release()); manifest_permissions->insert(std::move(permission));
return true; return true;
} }
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "extensions/common/permissions/manifest_permission_set.h" #include "extensions/common/permissions/manifest_permission_set.h"
#include "base/memory/ptr_util.h"
#include "base/pickle.h" #include "base/pickle.h"
#include "base/values.h" #include "base/values.h"
#include "extensions/common/permissions/mock_manifest_permission.h" #include "extensions/common/permissions/mock_manifest_permission.h"
...@@ -14,11 +15,11 @@ namespace extensions { ...@@ -14,11 +15,11 @@ namespace extensions {
TEST(ManifestPermissionSetTest, General) { TEST(ManifestPermissionSetTest, General) {
ManifestPermissionSet set; ManifestPermissionSet set;
set.insert(new MockManifestPermission("p1")); set.insert(std::make_unique<MockManifestPermission>("p1"));
set.insert(new MockManifestPermission("p2")); set.insert(std::make_unique<MockManifestPermission>("p2"));
set.insert(new MockManifestPermission("p3")); set.insert(std::make_unique<MockManifestPermission>("p3"));
set.insert(new MockManifestPermission("p4")); set.insert(std::make_unique<MockManifestPermission>("p4"));
set.insert(new MockManifestPermission("p5")); set.insert(std::make_unique<MockManifestPermission>("p5"));
EXPECT_EQ(set.find("p1")->id(), "p1"); EXPECT_EQ(set.find("p1")->id(), "p1");
EXPECT_TRUE(set.find("p10") == set.end()); EXPECT_TRUE(set.find("p10") == set.end());
...@@ -38,15 +39,15 @@ TEST(ManifestPermissionSetTest, CreateUnion) { ...@@ -38,15 +39,15 @@ TEST(ManifestPermissionSetTest, CreateUnion) {
ManifestPermissionSet expected_permissions; ManifestPermissionSet expected_permissions;
ManifestPermissionSet result; ManifestPermissionSet result;
ManifestPermission* permission = new MockManifestPermission("p3"); auto permission = std::make_unique<MockManifestPermission>("p3");
// Union with an empty set. // Union with an empty set.
permissions1.insert(new MockManifestPermission("p1")); permissions1.insert(std::make_unique<MockManifestPermission>("p1"));
permissions1.insert(new MockManifestPermission("p2")); permissions1.insert(std::make_unique<MockManifestPermission>("p2"));
permissions1.insert(permission->Clone()); permissions1.insert(base::WrapUnique(permission->Clone()));
expected_permissions.insert(new MockManifestPermission("p1")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p1"));
expected_permissions.insert(new MockManifestPermission("p2")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p2"));
expected_permissions.insert(permission); expected_permissions.insert(std::move(permission));
ManifestPermissionSet::Union(permissions1, permissions2, &result); ManifestPermissionSet::Union(permissions1, permissions2, &result);
...@@ -60,27 +61,27 @@ TEST(ManifestPermissionSetTest, CreateUnion) { ...@@ -60,27 +61,27 @@ TEST(ManifestPermissionSetTest, CreateUnion) {
EXPECT_EQ(expected_permissions, result); EXPECT_EQ(expected_permissions, result);
// Now use a real second set. // Now use a real second set.
permissions2.insert(new MockManifestPermission("p1")); permissions2.insert(std::make_unique<MockManifestPermission>("p1"));
permissions2.insert(new MockManifestPermission("p2")); permissions2.insert(std::make_unique<MockManifestPermission>("p2"));
permissions2.insert(new MockManifestPermission("p33")); permissions2.insert(std::make_unique<MockManifestPermission>("p33"));
permissions2.insert(new MockManifestPermission("p4")); permissions2.insert(std::make_unique<MockManifestPermission>("p4"));
permissions2.insert(new MockManifestPermission("p5")); permissions2.insert(std::make_unique<MockManifestPermission>("p5"));
expected_permissions.insert(new MockManifestPermission("p1")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p1"));
expected_permissions.insert(new MockManifestPermission("p2")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p2"));
expected_permissions.insert(new MockManifestPermission("p3")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p3"));
expected_permissions.insert(new MockManifestPermission("p4")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p4"));
expected_permissions.insert(new MockManifestPermission("p5")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p5"));
expected_permissions.insert(new MockManifestPermission("p33")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p33"));
ManifestPermissionSet::Union(permissions1, permissions2, &result); ManifestPermissionSet::Union(permissions1, permissions2, &result);
{ {
ManifestPermissionSet set1; ManifestPermissionSet set1;
set1.insert(new MockManifestPermission("p1")); set1.insert(std::make_unique<MockManifestPermission>("p1"));
set1.insert(new MockManifestPermission("p2")); set1.insert(std::make_unique<MockManifestPermission>("p2"));
ManifestPermissionSet set2; ManifestPermissionSet set2;
set2.insert(new MockManifestPermission("p3")); set2.insert(std::make_unique<MockManifestPermission>("p3"));
EXPECT_FALSE(set1.Contains(set2)); EXPECT_FALSE(set1.Contains(set2));
EXPECT_FALSE(set2.Contains(set1)); EXPECT_FALSE(set2.Contains(set1));
...@@ -103,9 +104,9 @@ TEST(ManifestPermissionSetTest, CreateIntersection) { ...@@ -103,9 +104,9 @@ TEST(ManifestPermissionSetTest, CreateIntersection) {
ManifestPermissionSet result; ManifestPermissionSet result;
// Intersection with an empty set. // Intersection with an empty set.
permissions1.insert(new MockManifestPermission("p1")); permissions1.insert(std::make_unique<MockManifestPermission>("p1"));
permissions1.insert(new MockManifestPermission("p2")); permissions1.insert(std::make_unique<MockManifestPermission>("p2"));
permissions1.insert(new MockManifestPermission("p3")); permissions1.insert(std::make_unique<MockManifestPermission>("p3"));
ManifestPermissionSet::Intersection(permissions1, permissions2, &result); ManifestPermissionSet::Intersection(permissions1, permissions2, &result);
EXPECT_TRUE(permissions1.Contains(result)); EXPECT_TRUE(permissions1.Contains(result));
...@@ -119,13 +120,13 @@ TEST(ManifestPermissionSetTest, CreateIntersection) { ...@@ -119,13 +120,13 @@ TEST(ManifestPermissionSetTest, CreateIntersection) {
EXPECT_EQ(expected_permissions, result); EXPECT_EQ(expected_permissions, result);
// Now use a real second set. // Now use a real second set.
permissions2.insert(new MockManifestPermission("p1")); permissions2.insert(std::make_unique<MockManifestPermission>("p1"));
permissions2.insert(new MockManifestPermission("p3")); permissions2.insert(std::make_unique<MockManifestPermission>("p3"));
permissions2.insert(new MockManifestPermission("p4")); permissions2.insert(std::make_unique<MockManifestPermission>("p4"));
permissions2.insert(new MockManifestPermission("p5")); permissions2.insert(std::make_unique<MockManifestPermission>("p5"));
expected_permissions.insert(new MockManifestPermission("p1")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p1"));
expected_permissions.insert(new MockManifestPermission("p3")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p3"));
ManifestPermissionSet::Intersection(permissions1, permissions2, &result); ManifestPermissionSet::Intersection(permissions1, permissions2, &result);
...@@ -146,22 +147,22 @@ TEST(ManifestPermissionSetTest, CreateDifference) { ...@@ -146,22 +147,22 @@ TEST(ManifestPermissionSetTest, CreateDifference) {
ManifestPermissionSet result; ManifestPermissionSet result;
// Difference with an empty set. // Difference with an empty set.
permissions1.insert(new MockManifestPermission("p1")); permissions1.insert(std::make_unique<MockManifestPermission>("p1"));
permissions1.insert(new MockManifestPermission("p2")); permissions1.insert(std::make_unique<MockManifestPermission>("p2"));
permissions1.insert(new MockManifestPermission("p3")); permissions1.insert(std::make_unique<MockManifestPermission>("p3"));
ManifestPermissionSet::Difference(permissions1, permissions2, &result); ManifestPermissionSet::Difference(permissions1, permissions2, &result);
EXPECT_EQ(permissions1, result); EXPECT_EQ(permissions1, result);
// Now use a real second set. // Now use a real second set.
permissions2.insert(new MockManifestPermission("p1")); permissions2.insert(std::make_unique<MockManifestPermission>("p1"));
permissions2.insert(new MockManifestPermission("p2")); permissions2.insert(std::make_unique<MockManifestPermission>("p2"));
permissions2.insert(new MockManifestPermission("p4")); permissions2.insert(std::make_unique<MockManifestPermission>("p4"));
permissions2.insert(new MockManifestPermission("p5")); permissions2.insert(std::make_unique<MockManifestPermission>("p5"));
permissions2.insert(new MockManifestPermission("p6")); permissions2.insert(std::make_unique<MockManifestPermission>("p6"));
expected_permissions.insert(new MockManifestPermission("p3")); expected_permissions.insert(std::make_unique<MockManifestPermission>("p3"));
ManifestPermissionSet::Difference(permissions1, permissions2, &result); ManifestPermissionSet::Difference(permissions1, permissions2, &result);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment