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

Side by Side Diff: chrome/browser/extensions/extension_prefs_unittest.cc

Issue 10049006: Add OAuth2 scopes to the ExtensionPermissionSet and granted permissions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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
« no previous file with comments | « chrome/browser/extensions/extension_prefs.cc ('k') | chrome/common/extensions/extension.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "extension_prefs_unittest.h" 5 #include "extension_prefs_unittest.h"
6 6
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/scoped_temp_dir.h" 8 #include "base/scoped_temp_dir.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { 164 class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest {
165 public: 165 public:
166 virtual void Initialize() { 166 virtual void Initialize() {
167 extension_id_ = prefs_.AddExtensionAndReturnId("test"); 167 extension_id_ = prefs_.AddExtensionAndReturnId("test");
168 168
169 api_perm_set1_.insert(ExtensionAPIPermission::kTab); 169 api_perm_set1_.insert(ExtensionAPIPermission::kTab);
170 api_perm_set1_.insert(ExtensionAPIPermission::kBookmark); 170 api_perm_set1_.insert(ExtensionAPIPermission::kBookmark);
171 171
172 api_perm_set2_.insert(ExtensionAPIPermission::kHistory); 172 api_perm_set2_.insert(ExtensionAPIPermission::kHistory);
173 173
174 scopes_set1_.insert("scope1");
175
176 scopes_set2_.insert("scope1");
177 scopes_set2_.insert("scope2");
178 scopes_set2_.insert("scope3");
179
174 AddPattern(&ehost_perm_set1_, "http://*.google.com/*"); 180 AddPattern(&ehost_perm_set1_, "http://*.google.com/*");
175 AddPattern(&ehost_perm_set1_, "http://example.com/*"); 181 AddPattern(&ehost_perm_set1_, "http://example.com/*");
176 AddPattern(&ehost_perm_set1_, "chrome://favicon/*"); 182 AddPattern(&ehost_perm_set1_, "chrome://favicon/*");
177 183
178 AddPattern(&ehost_perm_set2_, "https://*.google.com/*"); 184 AddPattern(&ehost_perm_set2_, "https://*.google.com/*");
179 // with duplicate: 185 // with duplicate:
180 AddPattern(&ehost_perm_set2_, "http://*.google.com/*"); 186 AddPattern(&ehost_perm_set2_, "http://*.google.com/*");
181 187
182 AddPattern(&shost_perm_set1_, "http://reddit.com/r/test/*"); 188 AddPattern(&shost_perm_set1_, "http://reddit.com/r/test/*");
183 AddPattern(&shost_perm_set2_, "http://reddit.com/r/test/*"); 189 AddPattern(&shost_perm_set2_, "http://reddit.com/r/test/*");
184 AddPattern(&shost_perm_set2_, "http://somesite.com/*"); 190 AddPattern(&shost_perm_set2_, "http://somesite.com/*");
185 AddPattern(&shost_perm_set2_, "http://example.com/*"); 191 AddPattern(&shost_perm_set2_, "http://example.com/*");
186 192
187 ExtensionAPIPermissionSet expected_apis = api_perm_set1_; 193 ExtensionAPIPermissionSet expected_apis = api_perm_set1_;
188 194
189 AddPattern(&ehost_permissions_, "http://*.google.com/*"); 195 AddPattern(&ehost_permissions_, "http://*.google.com/*");
190 AddPattern(&ehost_permissions_, "http://example.com/*"); 196 AddPattern(&ehost_permissions_, "http://example.com/*");
191 AddPattern(&ehost_permissions_, "chrome://favicon/*"); 197 AddPattern(&ehost_permissions_, "chrome://favicon/*");
192 AddPattern(&ehost_permissions_, "https://*.google.com/*"); 198 AddPattern(&ehost_permissions_, "https://*.google.com/*");
193 199
194 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*"); 200 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*");
195 AddPattern(&shost_permissions_, "http://somesite.com/*"); 201 AddPattern(&shost_permissions_, "http://somesite.com/*");
196 AddPattern(&shost_permissions_, "http://example.com/*"); 202 AddPattern(&shost_permissions_, "http://example.com/*");
197 203
204 scope_permissions_.insert("scope1");
205 scope_permissions_.insert("scope2");
206 scope_permissions_.insert("scope3");
207
198 ExtensionAPIPermissionSet empty_set; 208 ExtensionAPIPermissionSet empty_set;
199 URLPatternSet empty_extent; 209 URLPatternSet empty_extent;
210 ExtensionOAuth2Scopes empty_scopes;
200 scoped_refptr<ExtensionPermissionSet> permissions; 211 scoped_refptr<ExtensionPermissionSet> permissions;
201 scoped_refptr<ExtensionPermissionSet> granted_permissions; 212 scoped_refptr<ExtensionPermissionSet> granted_permissions;
202 213
203 // Make sure both granted api and host permissions start empty. 214 // Make sure both granted api and host permissions start empty.
204 granted_permissions = 215 granted_permissions =
205 prefs()->GetGrantedPermissions(extension_id_); 216 prefs()->GetGrantedPermissions(extension_id_);
206 EXPECT_TRUE(granted_permissions->IsEmpty()); 217 EXPECT_TRUE(granted_permissions->IsEmpty());
207 218
208 permissions = new ExtensionPermissionSet( 219 permissions = new ExtensionPermissionSet(
209 api_perm_set1_, empty_extent, empty_extent); 220 api_perm_set1_, empty_extent, empty_extent);
210 221
211 // Add part of the api permissions. 222 // Add part of the api permissions.
212 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 223 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
213 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); 224 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
214 EXPECT_TRUE(granted_permissions.get()); 225 EXPECT_TRUE(granted_permissions.get());
215 EXPECT_FALSE(granted_permissions->IsEmpty()); 226 EXPECT_FALSE(granted_permissions->IsEmpty());
216 EXPECT_EQ(expected_apis, granted_permissions->apis()); 227 EXPECT_EQ(expected_apis, granted_permissions->apis());
217 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty()); 228 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty());
218 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); 229 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
230 EXPECT_EQ(empty_scopes, granted_permissions->scopes());
219 granted_permissions = NULL; 231 granted_permissions = NULL;
220 232
221 // Add part of the explicit host permissions. 233 // Add part of the explicit host permissions.
222 permissions = new ExtensionPermissionSet( 234 permissions = new ExtensionPermissionSet(
223 empty_set, ehost_perm_set1_, empty_extent); 235 empty_set, ehost_perm_set1_, empty_extent);
224 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 236 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
225 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); 237 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
226 EXPECT_FALSE(granted_permissions->IsEmpty()); 238 EXPECT_FALSE(granted_permissions->IsEmpty());
227 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); 239 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
228 EXPECT_EQ(expected_apis, granted_permissions->apis()); 240 EXPECT_EQ(expected_apis, granted_permissions->apis());
229 EXPECT_EQ(ehost_perm_set1_, 241 EXPECT_EQ(ehost_perm_set1_,
230 granted_permissions->explicit_hosts()); 242 granted_permissions->explicit_hosts());
231 EXPECT_EQ(ehost_perm_set1_, 243 EXPECT_EQ(ehost_perm_set1_,
232 granted_permissions->effective_hosts()); 244 granted_permissions->effective_hosts());
245 EXPECT_EQ(empty_scopes, granted_permissions->scopes());
233 246
234 // Add part of the scriptable host permissions. 247 // Add part of the scriptable host permissions.
235 permissions = new ExtensionPermissionSet( 248 permissions = new ExtensionPermissionSet(
236 empty_set, empty_extent, shost_perm_set1_); 249 empty_set, empty_extent, shost_perm_set1_);
237 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 250 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
238 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); 251 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
239 EXPECT_FALSE(granted_permissions->IsEmpty()); 252 EXPECT_FALSE(granted_permissions->IsEmpty());
240 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); 253 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
241 EXPECT_EQ(expected_apis, granted_permissions->apis()); 254 EXPECT_EQ(expected_apis, granted_permissions->apis());
242 EXPECT_EQ(ehost_perm_set1_, 255 EXPECT_EQ(ehost_perm_set1_,
243 granted_permissions->explicit_hosts()); 256 granted_permissions->explicit_hosts());
244 EXPECT_EQ(shost_perm_set1_, 257 EXPECT_EQ(shost_perm_set1_,
245 granted_permissions->scriptable_hosts()); 258 granted_permissions->scriptable_hosts());
259 EXPECT_EQ(empty_scopes, granted_permissions->scopes());
246 260
247 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_, 261 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_,
248 &effective_permissions_); 262 &effective_permissions_);
249 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); 263 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts());
250 264
251 // Add the rest of both the permissions. 265 // Add part of the oauth2 scopes.
252 permissions = new ExtensionPermissionSet( 266 permissions = new ExtensionPermissionSet(
253 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_); 267 empty_set, empty_extent, empty_extent, scopes_set1_);
268 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
269 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
270 EXPECT_FALSE(granted_permissions->IsEmpty());
271 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
272 EXPECT_EQ(expected_apis, granted_permissions->apis());
273 EXPECT_EQ(ehost_perm_set1_,
274 granted_permissions->explicit_hosts());
275 EXPECT_EQ(shost_perm_set1_,
276 granted_permissions->scriptable_hosts());
277 EXPECT_EQ(scopes_set1_, granted_permissions->scopes());
278
279 // Add the rest of the permissions.
280 permissions = new ExtensionPermissionSet(
281 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_, scopes_set2_);
254 282
255 std::set_union(expected_apis.begin(), expected_apis.end(), 283 std::set_union(expected_apis.begin(), expected_apis.end(),
256 api_perm_set2_.begin(), api_perm_set2_.end(), 284 api_perm_set2_.begin(), api_perm_set2_.end(),
257 std::inserter(api_permissions_, api_permissions_.begin())); 285 std::inserter(api_permissions_, api_permissions_.begin()));
258 286
259 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 287 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
260 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); 288 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
261 EXPECT_TRUE(granted_permissions.get()); 289 EXPECT_TRUE(granted_permissions.get());
262 EXPECT_FALSE(granted_permissions->IsEmpty()); 290 EXPECT_FALSE(granted_permissions->IsEmpty());
263 EXPECT_EQ(api_permissions_, granted_permissions->apis()); 291 EXPECT_EQ(api_permissions_, granted_permissions->apis());
264 EXPECT_EQ(ehost_permissions_, 292 EXPECT_EQ(ehost_permissions_,
265 granted_permissions->explicit_hosts()); 293 granted_permissions->explicit_hosts());
266 EXPECT_EQ(shost_permissions_, 294 EXPECT_EQ(shost_permissions_,
267 granted_permissions->scriptable_hosts()); 295 granted_permissions->scriptable_hosts());
296 EXPECT_EQ(scope_permissions_, granted_permissions->scopes());
268 effective_permissions_.ClearPatterns(); 297 effective_permissions_.ClearPatterns();
269 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_, 298 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_,
270 &effective_permissions_); 299 &effective_permissions_);
271 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); 300 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts());
272 } 301 }
273 302
274 virtual void Verify() { 303 virtual void Verify() {
275 scoped_refptr<ExtensionPermissionSet> permissions( 304 scoped_refptr<ExtensionPermissionSet> permissions(
276 prefs()->GetGrantedPermissions(extension_id_)); 305 prefs()->GetGrantedPermissions(extension_id_));
277 EXPECT_TRUE(permissions.get()); 306 EXPECT_TRUE(permissions.get());
278 EXPECT_FALSE(permissions->HasEffectiveFullAccess()); 307 EXPECT_FALSE(permissions->HasEffectiveFullAccess());
279 EXPECT_EQ(api_permissions_, permissions->apis()); 308 EXPECT_EQ(api_permissions_, permissions->apis());
280 EXPECT_EQ(ehost_permissions_, 309 EXPECT_EQ(ehost_permissions_,
281 permissions->explicit_hosts()); 310 permissions->explicit_hosts());
282 EXPECT_EQ(shost_permissions_, 311 EXPECT_EQ(shost_permissions_,
283 permissions->scriptable_hosts()); 312 permissions->scriptable_hosts());
313 EXPECT_EQ(scope_permissions_,
314 permissions->scopes());
284 } 315 }
285 316
286 private: 317 private:
287 std::string extension_id_; 318 std::string extension_id_;
288 ExtensionAPIPermissionSet api_perm_set1_; 319 ExtensionAPIPermissionSet api_perm_set1_;
289 ExtensionAPIPermissionSet api_perm_set2_; 320 ExtensionAPIPermissionSet api_perm_set2_;
290 URLPatternSet ehost_perm_set1_; 321 URLPatternSet ehost_perm_set1_;
291 URLPatternSet ehost_perm_set2_; 322 URLPatternSet ehost_perm_set2_;
292 URLPatternSet shost_perm_set1_; 323 URLPatternSet shost_perm_set1_;
293 URLPatternSet shost_perm_set2_; 324 URLPatternSet shost_perm_set2_;
325 ExtensionOAuth2Scopes scopes_set1_;
326 ExtensionOAuth2Scopes scopes_set2_;
294 327
295 ExtensionAPIPermissionSet api_permissions_; 328 ExtensionAPIPermissionSet api_permissions_;
296 URLPatternSet ehost_permissions_; 329 URLPatternSet ehost_permissions_;
297 URLPatternSet shost_permissions_; 330 URLPatternSet shost_permissions_;
331 ExtensionOAuth2Scopes scope_permissions_;
298 URLPatternSet effective_permissions_; 332 URLPatternSet effective_permissions_;
299 }; 333 };
300 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} 334 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {}
301 335
302 // Tests the SetActivePermissions / GetActivePermissions functions. 336 // Tests the SetActivePermissions / GetActivePermissions functions.
303 class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { 337 class ExtensionPrefsActivePermissions : public ExtensionPrefsTest {
304 public: 338 public:
305 virtual void Initialize() { 339 virtual void Initialize() {
306 extension_id_ = prefs_.AddExtensionAndReturnId("test"); 340 extension_id_ = prefs_.AddExtensionAndReturnId("test");
307 341
308 ExtensionAPIPermissionSet api_perms; 342 ExtensionAPIPermissionSet api_perms;
309 api_perms.insert(ExtensionAPIPermission::kTab); 343 api_perms.insert(ExtensionAPIPermission::kTab);
310 api_perms.insert(ExtensionAPIPermission::kBookmark); 344 api_perms.insert(ExtensionAPIPermission::kBookmark);
311 api_perms.insert(ExtensionAPIPermission::kHistory); 345 api_perms.insert(ExtensionAPIPermission::kHistory);
312 346
313 URLPatternSet ehosts; 347 URLPatternSet ehosts;
314 AddPattern(&ehosts, "http://*.google.com/*"); 348 AddPattern(&ehosts, "http://*.google.com/*");
315 AddPattern(&ehosts, "http://example.com/*"); 349 AddPattern(&ehosts, "http://example.com/*");
316 AddPattern(&ehosts, "chrome://favicon/*"); 350 AddPattern(&ehosts, "chrome://favicon/*");
317 351
318 URLPatternSet shosts; 352 URLPatternSet shosts;
319 AddPattern(&shosts, "https://*.google.com/*"); 353 AddPattern(&shosts, "https://*.google.com/*");
320 AddPattern(&shosts, "http://reddit.com/r/test/*"); 354 AddPattern(&shosts, "http://reddit.com/r/test/*");
321 355
322 active_perms_ = new ExtensionPermissionSet(api_perms, ehosts, shosts); 356 ExtensionOAuth2Scopes scopes;
357 scopes.insert("my-new-scope");
358
359 active_perms_ = new ExtensionPermissionSet(
360 api_perms, ehosts, shosts, scopes);
323 361
324 // Make sure the active permissions start empty. 362 // Make sure the active permissions start empty.
325 scoped_refptr<ExtensionPermissionSet> active( 363 scoped_refptr<ExtensionPermissionSet> active(
326 prefs()->GetActivePermissions(extension_id_)); 364 prefs()->GetActivePermissions(extension_id_));
327 EXPECT_TRUE(active->IsEmpty()); 365 EXPECT_TRUE(active->IsEmpty());
328 366
329 // Set the active permissions. 367 // Set the active permissions.
330 prefs()->SetActivePermissions(extension_id_, active_perms_.get()); 368 prefs()->SetActivePermissions(extension_id_, active_perms_.get());
331 active = prefs()->GetActivePermissions(extension_id_); 369 active = prefs()->GetActivePermissions(extension_id_);
332 EXPECT_EQ(active_perms_->apis(), active->apis()); 370 EXPECT_EQ(active_perms_->apis(), active->apis());
333 EXPECT_EQ(active_perms_->explicit_hosts(), active->explicit_hosts()); 371 EXPECT_EQ(active_perms_->explicit_hosts(), active->explicit_hosts());
334 EXPECT_EQ(active_perms_->scriptable_hosts(), active->scriptable_hosts()); 372 EXPECT_EQ(active_perms_->scriptable_hosts(), active->scriptable_hosts());
373 EXPECT_EQ(active_perms_->scopes(), active->scopes());
335 EXPECT_EQ(*active_perms_, *active); 374 EXPECT_EQ(*active_perms_, *active);
336 } 375 }
337 376
338 virtual void Verify() { 377 virtual void Verify() {
339 scoped_refptr<ExtensionPermissionSet> permissions( 378 scoped_refptr<ExtensionPermissionSet> permissions(
340 prefs()->GetActivePermissions(extension_id_)); 379 prefs()->GetActivePermissions(extension_id_));
341 EXPECT_EQ(*active_perms_, *permissions); 380 EXPECT_EQ(*active_perms_, *permissions);
342 } 381 }
343 382
344 private: 383 private:
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 ++iteration_; 1131 ++iteration_;
1093 } else { 1132 } else {
1094 EXPECT_EQ(kDefaultPref1, actual); 1133 EXPECT_EQ(kDefaultPref1, actual);
1095 } 1134 }
1096 } 1135 }
1097 1136
1098 private: 1137 private:
1099 int iteration_; 1138 int iteration_;
1100 }; 1139 };
1101 TEST_F(ExtensionPrefsDisableExtensions, ExtensionPrefsDisableExtensions) {} 1140 TEST_F(ExtensionPrefsDisableExtensions, ExtensionPrefsDisableExtensions) {}
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_prefs.cc ('k') | chrome/common/extensions/extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698