Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h"
6
5 #include <stddef.h> 7 #include <stddef.h>
6 8
9 #include <memory>
10
7 #include "base/macros.h" 11 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h" 12 #include "base/values.h"
10 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h"
11 #include "chrome/common/extensions/api/permissions.h" 13 #include "chrome/common/extensions/api/permissions.h"
12 #include "extensions/common/permissions/permission_set.h" 14 #include "extensions/common/permissions/permission_set.h"
13 #include "extensions/common/url_pattern_set.h" 15 #include "extensions/common/url_pattern_set.h"
14 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
15 #include "url/gurl.h" 17 #include "url/gurl.h"
16 18
17 using extensions::api::permissions::Permissions; 19 using extensions::api::permissions::Permissions;
18 using extensions::permissions_api_helpers::PackPermissionSet; 20 using extensions::permissions_api_helpers::PackPermissionSet;
19 using extensions::permissions_api_helpers::UnpackPermissionSet; 21 using extensions::permissions_api_helpers::UnpackPermissionSet;
20 22
(...skipping 15 matching lines...) Expand all
36 apis.insert(APIPermission::kFileBrowserHandler); 38 apis.insert(APIPermission::kFileBrowserHandler);
37 // Note: kFileBrowserHandler implies kFileBrowserHandlerInternal. 39 // Note: kFileBrowserHandler implies kFileBrowserHandlerInternal.
38 URLPatternSet hosts; 40 URLPatternSet hosts;
39 AddPattern(&hosts, "http://a.com/*"); 41 AddPattern(&hosts, "http://a.com/*");
40 AddPattern(&hosts, "http://b.com/*"); 42 AddPattern(&hosts, "http://b.com/*");
41 43
42 PermissionSet permission_set(apis, ManifestPermissionSet(), hosts, 44 PermissionSet permission_set(apis, ManifestPermissionSet(), hosts,
43 URLPatternSet()); 45 URLPatternSet());
44 46
45 // Pack the permission set to value and verify its contents. 47 // Pack the permission set to value and verify its contents.
46 scoped_ptr<Permissions> permissions(PackPermissionSet(permission_set)); 48 std::unique_ptr<Permissions> permissions(PackPermissionSet(permission_set));
47 scoped_ptr<base::DictionaryValue> value(permissions->ToValue()); 49 std::unique_ptr<base::DictionaryValue> value(permissions->ToValue());
48 base::ListValue* api_list = NULL; 50 base::ListValue* api_list = NULL;
49 base::ListValue* origin_list = NULL; 51 base::ListValue* origin_list = NULL;
50 EXPECT_TRUE(value->GetList("permissions", &api_list)); 52 EXPECT_TRUE(value->GetList("permissions", &api_list));
51 EXPECT_TRUE(value->GetList("origins", &origin_list)); 53 EXPECT_TRUE(value->GetList("origins", &origin_list));
52 54
53 EXPECT_EQ(3u, api_list->GetSize()); 55 EXPECT_EQ(3u, api_list->GetSize());
54 EXPECT_EQ(2u, origin_list->GetSize()); 56 EXPECT_EQ(2u, origin_list->GetSize());
55 57
56 std::string expected_apis[] = {"tabs", "fileBrowserHandler", 58 std::string expected_apis[] = {"tabs", "fileBrowserHandler",
57 "fileBrowserHandlerInternal"}; 59 "fileBrowserHandlerInternal"};
58 for (size_t i = 0; i < arraysize(expected_apis); ++i) { 60 for (size_t i = 0; i < arraysize(expected_apis); ++i) {
59 scoped_ptr<base::Value> value(new base::StringValue(expected_apis[i])); 61 std::unique_ptr<base::Value> value(new base::StringValue(expected_apis[i]));
60 EXPECT_NE(api_list->end(), api_list->Find(*value)); 62 EXPECT_NE(api_list->end(), api_list->Find(*value));
61 } 63 }
62 64
63 std::string expected_origins[] = { "http://a.com/*", "http://b.com/*" }; 65 std::string expected_origins[] = { "http://a.com/*", "http://b.com/*" };
64 for (size_t i = 0; i < arraysize(expected_origins); ++i) { 66 for (size_t i = 0; i < arraysize(expected_origins); ++i) {
65 scoped_ptr<base::Value> value(new base::StringValue(expected_origins[i])); 67 std::unique_ptr<base::Value> value(
68 new base::StringValue(expected_origins[i]));
66 EXPECT_NE(origin_list->end(), origin_list->Find(*value)); 69 EXPECT_NE(origin_list->end(), origin_list->Find(*value));
67 } 70 }
68 71
69 // Unpack the value back to a permission set and make sure its equal to the 72 // Unpack the value back to a permission set and make sure its equal to the
70 // original one. 73 // original one.
71 std::string error; 74 std::string error;
72 Permissions permissions_object; 75 Permissions permissions_object;
73 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 76 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
74 scoped_ptr<const PermissionSet> from_value = 77 std::unique_ptr<const PermissionSet> from_value =
75 UnpackPermissionSet(permissions_object, true, &error); 78 UnpackPermissionSet(permissions_object, true, &error);
76 EXPECT_TRUE(error.empty()); 79 EXPECT_TRUE(error.empty());
77 80
78 EXPECT_EQ(permission_set, *from_value); 81 EXPECT_EQ(permission_set, *from_value);
79 } 82 }
80 83
81 // Tests various error conditions and edge cases when unpacking values 84 // Tests various error conditions and edge cases when unpacking values
82 // into PermissionSets. 85 // into PermissionSets.
83 TEST(ExtensionPermissionsAPIHelpers, Unpack) { 86 TEST(ExtensionPermissionsAPIHelpers, Unpack) {
84 scoped_ptr<base::ListValue> apis(new base::ListValue()); 87 std::unique_ptr<base::ListValue> apis(new base::ListValue());
85 apis->Append(new base::StringValue("tabs")); 88 apis->Append(new base::StringValue("tabs"));
86 scoped_ptr<base::ListValue> origins(new base::ListValue()); 89 std::unique_ptr<base::ListValue> origins(new base::ListValue());
87 origins->Append(new base::StringValue("http://a.com/*")); 90 origins->Append(new base::StringValue("http://a.com/*"));
88 91
89 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 92 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
90 scoped_ptr<const PermissionSet> permissions; 93 std::unique_ptr<const PermissionSet> permissions;
91 std::string error; 94 std::string error;
92 95
93 // Origins shouldn't have to be present. 96 // Origins shouldn't have to be present.
94 { 97 {
95 Permissions permissions_object; 98 Permissions permissions_object;
96 value->Set("permissions", apis->DeepCopy()); 99 value->Set("permissions", apis->DeepCopy());
97 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 100 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
98 permissions = UnpackPermissionSet(permissions_object, true, &error); 101 permissions = UnpackPermissionSet(permissions_object, true, &error);
99 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab)); 102 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab));
100 EXPECT_TRUE(permissions.get()); 103 EXPECT_TRUE(permissions.get());
101 EXPECT_TRUE(error.empty()); 104 EXPECT_TRUE(error.empty());
102 } 105 }
103 106
104 // The api permissions don't need to be present either. 107 // The api permissions don't need to be present either.
105 { 108 {
106 Permissions permissions_object; 109 Permissions permissions_object;
107 value->Clear(); 110 value->Clear();
108 value->Set("origins", origins->DeepCopy()); 111 value->Set("origins", origins->DeepCopy());
109 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 112 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
110 permissions = UnpackPermissionSet(permissions_object, true, &error); 113 permissions = UnpackPermissionSet(permissions_object, true, &error);
111 EXPECT_TRUE(permissions.get()); 114 EXPECT_TRUE(permissions.get());
112 EXPECT_TRUE(error.empty()); 115 EXPECT_TRUE(error.empty());
113 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); 116 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/")));
114 } 117 }
115 118
116 // Throw errors for non-string API permissions. 119 // Throw errors for non-string API permissions.
117 { 120 {
118 Permissions permissions_object; 121 Permissions permissions_object;
119 value->Clear(); 122 value->Clear();
120 scoped_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); 123 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy());
121 invalid_apis->Append(new base::FundamentalValue(3)); 124 invalid_apis->Append(new base::FundamentalValue(3));
122 value->Set("permissions", invalid_apis->DeepCopy()); 125 value->Set("permissions", invalid_apis->DeepCopy());
123 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 126 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
124 } 127 }
125 128
126 // Throw errors for non-string origins. 129 // Throw errors for non-string origins.
127 { 130 {
128 Permissions permissions_object; 131 Permissions permissions_object;
129 value->Clear(); 132 value->Clear();
130 scoped_ptr<base::ListValue> invalid_origins(origins->DeepCopy()); 133 std::unique_ptr<base::ListValue> invalid_origins(origins->DeepCopy());
131 invalid_origins->Append(new base::FundamentalValue(3)); 134 invalid_origins->Append(new base::FundamentalValue(3));
132 value->Set("origins", invalid_origins->DeepCopy()); 135 value->Set("origins", invalid_origins->DeepCopy());
133 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 136 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
134 } 137 }
135 138
136 // Throw errors when "origins" or "permissions" are not list values. 139 // Throw errors when "origins" or "permissions" are not list values.
137 { 140 {
138 Permissions permissions_object; 141 Permissions permissions_object;
139 value->Clear(); 142 value->Clear();
140 value->Set("origins", new base::FundamentalValue(2)); 143 value->Set("origins", new base::FundamentalValue(2));
(...skipping 17 matching lines...) Expand all
158 permissions = UnpackPermissionSet(permissions_object, true, &error); 161 permissions = UnpackPermissionSet(permissions_object, true, &error);
159 EXPECT_TRUE(permissions.get()); 162 EXPECT_TRUE(permissions.get());
160 EXPECT_TRUE(error.empty()); 163 EXPECT_TRUE(error.empty());
161 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); 164 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/")));
162 } 165 }
163 166
164 // Unknown permissions should throw an error. 167 // Unknown permissions should throw an error.
165 { 168 {
166 Permissions permissions_object; 169 Permissions permissions_object;
167 value->Clear(); 170 value->Clear();
168 scoped_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); 171 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy());
169 invalid_apis->Append(new base::StringValue("unknown_permission")); 172 invalid_apis->Append(new base::StringValue("unknown_permission"));
170 value->Set("permissions", invalid_apis->DeepCopy()); 173 value->Set("permissions", invalid_apis->DeepCopy());
171 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 174 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
172 permissions = UnpackPermissionSet(permissions_object, true, &error); 175 permissions = UnpackPermissionSet(permissions_object, true, &error);
173 EXPECT_FALSE(permissions.get()); 176 EXPECT_FALSE(permissions.get());
174 EXPECT_FALSE(error.empty()); 177 EXPECT_FALSE(error.empty());
175 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission."); 178 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission.");
176 } 179 }
177 } 180 }
178 181
179 } // namespace extensions 182 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698