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

Side by Side Diff: extensions/common/permissions/api_permission_set_unittest.cc

Issue 221353003: Make unknown extension subpermissions warnings instead of errors. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 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 "base/pickle.h" 5 #include "base/pickle.h"
6 #include "base/values.h" 6 #include "base/values.h"
7 #include "extensions/common/extension_messages.h" 7 #include "extensions/common/extension_messages.h"
8 #include "extensions/common/permissions/api_permission_set.h" 8 #include "extensions/common/permissions/api_permission_set.h"
9 #include "extensions/common/permissions/permissions_info.h" 9 #include "extensions/common/permissions/permissions_info.h"
10 #include "ipc/ipc_message.h" 10 #include "ipc/ipc_message.h"
(...skipping 30 matching lines...) Expand all
41 APIPermissionSet result; 41 APIPermissionSet result;
42 42
43 const APIPermissionInfo* permission_info = 43 const APIPermissionInfo* permission_info =
44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
45 permission = permission_info->CreateAPIPermission(); 45 permission = permission_info->CreateAPIPermission();
46 { 46 {
47 scoped_ptr<base::ListValue> value(new base::ListValue()); 47 scoped_ptr<base::ListValue> value(new base::ListValue());
48 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 48 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
49 value->Append(new base::StringValue("udp-bind::8080")); 49 value->Append(new base::StringValue("udp-bind::8080"));
50 value->Append(new base::StringValue("udp-send-to::8888")); 50 value->Append(new base::StringValue("udp-send-to::8888"));
51 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 51 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
52 } 52 }
53 53
54 // Union with an empty set. 54 // Union with an empty set.
55 apis1.insert(APIPermission::kTab); 55 apis1.insert(APIPermission::kTab);
56 apis1.insert(APIPermission::kBackground); 56 apis1.insert(APIPermission::kBackground);
57 apis1.insert(permission->Clone()); 57 apis1.insert(permission->Clone());
58 expected_apis.insert(APIPermission::kTab); 58 expected_apis.insert(APIPermission::kTab);
59 expected_apis.insert(APIPermission::kBackground); 59 expected_apis.insert(APIPermission::kBackground);
60 expected_apis.insert(permission); 60 expected_apis.insert(permission);
61 61
(...skipping 12 matching lines...) Expand all
74 apis2.insert(APIPermission::kTab); 74 apis2.insert(APIPermission::kTab);
75 apis2.insert(APIPermission::kProxy); 75 apis2.insert(APIPermission::kProxy);
76 apis2.insert(APIPermission::kClipboardWrite); 76 apis2.insert(APIPermission::kClipboardWrite);
77 apis2.insert(APIPermission::kPlugin); 77 apis2.insert(APIPermission::kPlugin);
78 78
79 permission = permission_info->CreateAPIPermission(); 79 permission = permission_info->CreateAPIPermission();
80 { 80 {
81 scoped_ptr<base::ListValue> value(new base::ListValue()); 81 scoped_ptr<base::ListValue> value(new base::ListValue());
82 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 82 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
83 value->Append(new base::StringValue("udp-send-to::8899")); 83 value->Append(new base::StringValue("udp-send-to::8899"));
84 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 84 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
85 } 85 }
86 apis2.insert(permission); 86 apis2.insert(permission);
87 87
88 expected_apis.insert(APIPermission::kTab); 88 expected_apis.insert(APIPermission::kTab);
89 expected_apis.insert(APIPermission::kProxy); 89 expected_apis.insert(APIPermission::kProxy);
90 expected_apis.insert(APIPermission::kClipboardWrite); 90 expected_apis.insert(APIPermission::kClipboardWrite);
91 expected_apis.insert(APIPermission::kPlugin); 91 expected_apis.insert(APIPermission::kPlugin);
92 92
93 permission = permission_info->CreateAPIPermission(); 93 permission = permission_info->CreateAPIPermission();
94 { 94 {
95 scoped_ptr<base::ListValue> value(new base::ListValue()); 95 scoped_ptr<base::ListValue> value(new base::ListValue());
96 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 96 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
97 value->Append(new base::StringValue("udp-bind::8080")); 97 value->Append(new base::StringValue("udp-bind::8080"));
98 value->Append(new base::StringValue("udp-send-to::8888")); 98 value->Append(new base::StringValue("udp-send-to::8888"));
99 value->Append(new base::StringValue("udp-send-to::8899")); 99 value->Append(new base::StringValue("udp-send-to::8899"));
100 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 100 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
101 } 101 }
102 // Insert a new socket permission which will replace the old one. 102 // Insert a new socket permission which will replace the old one.
103 expected_apis.insert(permission); 103 expected_apis.insert(permission);
104 104
105 APIPermissionSet::Union(apis1, apis2, &result); 105 APIPermissionSet::Union(apis1, apis2, &result);
106 106
107 EXPECT_FALSE(apis1.Contains(apis2)); 107 EXPECT_FALSE(apis1.Contains(apis2));
108 EXPECT_FALSE(apis1.Contains(result)); 108 EXPECT_FALSE(apis1.Contains(result));
109 EXPECT_FALSE(apis2.Contains(apis1)); 109 EXPECT_FALSE(apis2.Contains(apis1));
110 EXPECT_FALSE(apis2.Contains(result)); 110 EXPECT_FALSE(apis2.Contains(result));
(...skipping 16 matching lines...) Expand all
127 127
128 // Intersection with an empty set. 128 // Intersection with an empty set.
129 apis1.insert(APIPermission::kTab); 129 apis1.insert(APIPermission::kTab);
130 apis1.insert(APIPermission::kBackground); 130 apis1.insert(APIPermission::kBackground);
131 permission = permission_info->CreateAPIPermission(); 131 permission = permission_info->CreateAPIPermission();
132 { 132 {
133 scoped_ptr<base::ListValue> value(new base::ListValue()); 133 scoped_ptr<base::ListValue> value(new base::ListValue());
134 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 134 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
135 value->Append(new base::StringValue("udp-bind::8080")); 135 value->Append(new base::StringValue("udp-bind::8080"));
136 value->Append(new base::StringValue("udp-send-to::8888")); 136 value->Append(new base::StringValue("udp-send-to::8888"));
137 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 137 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
138 } 138 }
139 apis1.insert(permission); 139 apis1.insert(permission);
140 140
141 APIPermissionSet::Intersection(apis1, apis2, &result); 141 APIPermissionSet::Intersection(apis1, apis2, &result);
142 EXPECT_TRUE(apis1.Contains(result)); 142 EXPECT_TRUE(apis1.Contains(result));
143 EXPECT_TRUE(apis2.Contains(result)); 143 EXPECT_TRUE(apis2.Contains(result));
144 EXPECT_TRUE(apis1.Contains(apis2)); 144 EXPECT_TRUE(apis1.Contains(apis2));
145 EXPECT_FALSE(apis2.Contains(apis1)); 145 EXPECT_FALSE(apis2.Contains(apis1));
146 EXPECT_FALSE(result.Contains(apis1)); 146 EXPECT_FALSE(result.Contains(apis1));
147 EXPECT_TRUE(result.Contains(apis2)); 147 EXPECT_TRUE(result.Contains(apis2));
148 148
149 EXPECT_TRUE(result.empty()); 149 EXPECT_TRUE(result.empty());
150 EXPECT_EQ(expected_apis, result); 150 EXPECT_EQ(expected_apis, result);
151 151
152 // Now use a real second set. 152 // Now use a real second set.
153 apis2.insert(APIPermission::kTab); 153 apis2.insert(APIPermission::kTab);
154 apis2.insert(APIPermission::kProxy); 154 apis2.insert(APIPermission::kProxy);
155 apis2.insert(APIPermission::kClipboardWrite); 155 apis2.insert(APIPermission::kClipboardWrite);
156 apis2.insert(APIPermission::kPlugin); 156 apis2.insert(APIPermission::kPlugin);
157 permission = permission_info->CreateAPIPermission(); 157 permission = permission_info->CreateAPIPermission();
158 { 158 {
159 scoped_ptr<base::ListValue> value(new base::ListValue()); 159 scoped_ptr<base::ListValue> value(new base::ListValue());
160 value->Append(new base::StringValue("udp-bind::8080")); 160 value->Append(new base::StringValue("udp-bind::8080"));
161 value->Append(new base::StringValue("udp-send-to::8888")); 161 value->Append(new base::StringValue("udp-send-to::8888"));
162 value->Append(new base::StringValue("udp-send-to::8899")); 162 value->Append(new base::StringValue("udp-send-to::8899"));
163 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 163 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
164 } 164 }
165 apis2.insert(permission); 165 apis2.insert(permission);
166 166
167 expected_apis.insert(APIPermission::kTab); 167 expected_apis.insert(APIPermission::kTab);
168 permission = permission_info->CreateAPIPermission(); 168 permission = permission_info->CreateAPIPermission();
169 { 169 {
170 scoped_ptr<base::ListValue> value(new base::ListValue()); 170 scoped_ptr<base::ListValue> value(new base::ListValue());
171 value->Append(new base::StringValue("udp-bind::8080")); 171 value->Append(new base::StringValue("udp-bind::8080"));
172 value->Append(new base::StringValue("udp-send-to::8888")); 172 value->Append(new base::StringValue("udp-send-to::8888"));
173 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 173 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
174 } 174 }
175 expected_apis.insert(permission); 175 expected_apis.insert(permission);
176 176
177 APIPermissionSet::Intersection(apis1, apis2, &result); 177 APIPermissionSet::Intersection(apis1, apis2, &result);
178 178
179 EXPECT_TRUE(apis1.Contains(result)); 179 EXPECT_TRUE(apis1.Contains(result));
180 EXPECT_TRUE(apis2.Contains(result)); 180 EXPECT_TRUE(apis2.Contains(result));
181 EXPECT_FALSE(apis1.Contains(apis2)); 181 EXPECT_FALSE(apis1.Contains(apis2));
182 EXPECT_FALSE(apis2.Contains(apis1)); 182 EXPECT_FALSE(apis2.Contains(apis1));
183 EXPECT_FALSE(result.Contains(apis1)); 183 EXPECT_FALSE(result.Contains(apis1));
(...skipping 15 matching lines...) Expand all
199 199
200 // Difference with an empty set. 200 // Difference with an empty set.
201 apis1.insert(APIPermission::kTab); 201 apis1.insert(APIPermission::kTab);
202 apis1.insert(APIPermission::kBackground); 202 apis1.insert(APIPermission::kBackground);
203 permission = permission_info->CreateAPIPermission(); 203 permission = permission_info->CreateAPIPermission();
204 { 204 {
205 scoped_ptr<base::ListValue> value(new base::ListValue()); 205 scoped_ptr<base::ListValue> value(new base::ListValue());
206 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 206 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
207 value->Append(new base::StringValue("udp-bind::8080")); 207 value->Append(new base::StringValue("udp-bind::8080"));
208 value->Append(new base::StringValue("udp-send-to::8888")); 208 value->Append(new base::StringValue("udp-send-to::8888"));
209 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 209 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
210 } 210 }
211 apis1.insert(permission); 211 apis1.insert(permission);
212 212
213 APIPermissionSet::Difference(apis1, apis2, &result); 213 APIPermissionSet::Difference(apis1, apis2, &result);
214 214
215 EXPECT_EQ(apis1, result); 215 EXPECT_EQ(apis1, result);
216 216
217 // Now use a real second set. 217 // Now use a real second set.
218 apis2.insert(APIPermission::kTab); 218 apis2.insert(APIPermission::kTab);
219 apis2.insert(APIPermission::kProxy); 219 apis2.insert(APIPermission::kProxy);
220 apis2.insert(APIPermission::kClipboardWrite); 220 apis2.insert(APIPermission::kClipboardWrite);
221 apis2.insert(APIPermission::kPlugin); 221 apis2.insert(APIPermission::kPlugin);
222 permission = permission_info->CreateAPIPermission(); 222 permission = permission_info->CreateAPIPermission();
223 { 223 {
224 scoped_ptr<base::ListValue> value(new base::ListValue()); 224 scoped_ptr<base::ListValue> value(new base::ListValue());
225 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 225 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
226 value->Append(new base::StringValue("udp-send-to::8899")); 226 value->Append(new base::StringValue("udp-send-to::8899"));
227 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 227 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
228 } 228 }
229 apis2.insert(permission); 229 apis2.insert(permission);
230 230
231 expected_apis.insert(APIPermission::kBackground); 231 expected_apis.insert(APIPermission::kBackground);
232 permission = permission_info->CreateAPIPermission(); 232 permission = permission_info->CreateAPIPermission();
233 { 233 {
234 scoped_ptr<base::ListValue> value(new base::ListValue()); 234 scoped_ptr<base::ListValue> value(new base::ListValue());
235 value->Append(new base::StringValue("udp-bind::8080")); 235 value->Append(new base::StringValue("udp-bind::8080"));
236 value->Append(new base::StringValue("udp-send-to::8888")); 236 value->Append(new base::StringValue("udp-send-to::8888"));
237 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 237 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
238 } 238 }
239 expected_apis.insert(permission); 239 expected_apis.insert(permission);
240 240
241 APIPermissionSet::Difference(apis1, apis2, &result); 241 APIPermissionSet::Difference(apis1, apis2, &result);
242 242
243 EXPECT_TRUE(apis1.Contains(result)); 243 EXPECT_TRUE(apis1.Contains(result));
244 EXPECT_FALSE(apis2.Contains(result)); 244 EXPECT_FALSE(apis2.Contains(result));
245 245
246 EXPECT_EQ(expected_apis, result); 246 EXPECT_EQ(expected_apis, result);
247 247
(...skipping 13 matching lines...) Expand all
261 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 261 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
262 262
263 apis.insert(APIPermission::kTab); 263 apis.insert(APIPermission::kTab);
264 apis.insert(APIPermission::kBackground); 264 apis.insert(APIPermission::kBackground);
265 permission = permission_info->CreateAPIPermission(); 265 permission = permission_info->CreateAPIPermission();
266 { 266 {
267 scoped_ptr<base::ListValue> value(new base::ListValue()); 267 scoped_ptr<base::ListValue> value(new base::ListValue());
268 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 268 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
269 value->Append(new base::StringValue("udp-bind::8080")); 269 value->Append(new base::StringValue("udp-bind::8080"));
270 value->Append(new base::StringValue("udp-send-to::8888")); 270 value->Append(new base::StringValue("udp-send-to::8888"));
271 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); 271 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
272 } 272 }
273 apis.insert(permission); 273 apis.insert(permission);
274 274
275 EXPECT_NE(apis, expected_apis); 275 EXPECT_NE(apis, expected_apis);
276 276
277 IPC::Message m; 277 IPC::Message m;
278 WriteParam(&m, apis); 278 WriteParam(&m, apis);
279 PickleIterator iter(m); 279 PickleIterator iter(m);
280 CHECK(ReadParam(&m, &iter, &expected_apis)); 280 CHECK(ReadParam(&m, &iter, &expected_apis));
281 EXPECT_EQ(apis, expected_apis); 281 EXPECT_EQ(apis, expected_apis);
(...skipping 22 matching lines...) Expand all
304 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(), 304 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(),
305 APIPermission::kFileSystemWrite); 305 APIPermission::kFileSystemWrite);
306 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(), 306 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(),
307 APIPermission::kFileSystemDirectory); 307 APIPermission::kFileSystemDirectory);
308 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(), 308 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(),
309 APIPermission::kFileSystemWriteDirectory); 309 APIPermission::kFileSystemWriteDirectory);
310 EXPECT_EQ(apis.size(), 3u); 310 EXPECT_EQ(apis.size(), 3u);
311 } 311 }
312 312
313 } // namespace extensions 313 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/permissions/api_permission_set.cc ('k') | extensions/common/permissions/media_galleries_permission.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698