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

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

Issue 7432006: Add an experimental permissions API for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix clang Created 9 years, 4 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/path_service.h" 6 #include "base/path_service.h"
7 #include "base/scoped_temp_dir.h" 7 #include "base/scoped_temp_dir.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 AddPattern(&ehost_permissions_, "http://example.com/*"); 212 AddPattern(&ehost_permissions_, "http://example.com/*");
213 AddPattern(&ehost_permissions_, "chrome://favicon/*"); 213 AddPattern(&ehost_permissions_, "chrome://favicon/*");
214 AddPattern(&ehost_permissions_, "https://*.google.com/*"); 214 AddPattern(&ehost_permissions_, "https://*.google.com/*");
215 215
216 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*"); 216 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*");
217 AddPattern(&shost_permissions_, "http://somesite.com/*"); 217 AddPattern(&shost_permissions_, "http://somesite.com/*");
218 AddPattern(&shost_permissions_, "http://example.com/*"); 218 AddPattern(&shost_permissions_, "http://example.com/*");
219 219
220 ExtensionAPIPermissionSet empty_set; 220 ExtensionAPIPermissionSet empty_set;
221 URLPatternSet empty_extent; 221 URLPatternSet empty_extent;
222 scoped_ptr<ExtensionPermissionSet> permissions; 222 scoped_refptr<ExtensionPermissionSet> permissions;
223 scoped_ptr<ExtensionPermissionSet> granted_permissions; 223 scoped_refptr<ExtensionPermissionSet> granted_permissions;
224 224
225 // Make sure both granted api and host permissions start empty. 225 // Make sure both granted api and host permissions start empty.
226 granted_permissions.reset( 226 granted_permissions =
227 prefs()->GetGrantedPermissions(extension_id_)); 227 prefs()->GetGrantedPermissions(extension_id_);
228 EXPECT_TRUE(granted_permissions->IsEmpty()); 228 EXPECT_TRUE(granted_permissions->IsEmpty());
229 229
230 permissions.reset(new ExtensionPermissionSet( 230 permissions = new ExtensionPermissionSet(
231 api_perm_set1_, empty_extent, empty_extent)); 231 api_perm_set1_, empty_extent, empty_extent);
232 232
233 // Add part of the api permissions. 233 // Add part of the api permissions.
234 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 234 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
235 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); 235 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
236 EXPECT_TRUE(granted_permissions.get()); 236 EXPECT_TRUE(granted_permissions.get());
237 EXPECT_FALSE(granted_permissions->IsEmpty()); 237 EXPECT_FALSE(granted_permissions->IsEmpty());
238 EXPECT_EQ(expected_apis, granted_permissions->apis()); 238 EXPECT_EQ(expected_apis, granted_permissions->apis());
239 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty()); 239 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty());
240 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); 240 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
241 granted_permissions.reset(); 241 granted_permissions = NULL;
242 242
243 // Add part of the explicit host permissions. 243 // Add part of the explicit host permissions.
244 permissions.reset(new ExtensionPermissionSet( 244 permissions = new ExtensionPermissionSet(
245 empty_set, ehost_perm_set1_, empty_extent)); 245 empty_set, ehost_perm_set1_, empty_extent);
246 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 246 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
247 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); 247 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
248 EXPECT_FALSE(granted_permissions->IsEmpty()); 248 EXPECT_FALSE(granted_permissions->IsEmpty());
249 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); 249 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
250 EXPECT_EQ(expected_apis, granted_permissions->apis()); 250 EXPECT_EQ(expected_apis, granted_permissions->apis());
251 EXPECT_EQ(ehost_perm_set1_, 251 EXPECT_EQ(ehost_perm_set1_,
252 granted_permissions->explicit_hosts()); 252 granted_permissions->explicit_hosts());
253 EXPECT_EQ(ehost_perm_set1_, 253 EXPECT_EQ(ehost_perm_set1_,
254 granted_permissions->effective_hosts()); 254 granted_permissions->effective_hosts());
255 255
256 // Add part of the scriptable host permissions. 256 // Add part of the scriptable host permissions.
257 permissions.reset(new ExtensionPermissionSet( 257 permissions = new ExtensionPermissionSet(
258 empty_set, empty_extent, shost_perm_set1_)); 258 empty_set, empty_extent, shost_perm_set1_);
259 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 259 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
260 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); 260 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
261 EXPECT_FALSE(granted_permissions->IsEmpty()); 261 EXPECT_FALSE(granted_permissions->IsEmpty());
262 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); 262 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess());
263 EXPECT_EQ(expected_apis, granted_permissions->apis()); 263 EXPECT_EQ(expected_apis, granted_permissions->apis());
264 EXPECT_EQ(ehost_perm_set1_, 264 EXPECT_EQ(ehost_perm_set1_,
265 granted_permissions->explicit_hosts()); 265 granted_permissions->explicit_hosts());
266 EXPECT_EQ(shost_perm_set1_, 266 EXPECT_EQ(shost_perm_set1_,
267 granted_permissions->scriptable_hosts()); 267 granted_permissions->scriptable_hosts());
268 268
269 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_, 269 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_,
270 &effective_permissions_); 270 &effective_permissions_);
271 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); 271 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts());
272 272
273 // Add the rest of both the permissions. 273 // Add the rest of both the permissions.
274 permissions.reset(new ExtensionPermissionSet( 274 permissions = new ExtensionPermissionSet(
275 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_)); 275 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_);
276 276
277 std::set_union(expected_apis.begin(), expected_apis.end(), 277 std::set_union(expected_apis.begin(), expected_apis.end(),
278 api_perm_set2_.begin(), api_perm_set2_.end(), 278 api_perm_set2_.begin(), api_perm_set2_.end(),
279 std::inserter(api_permissions_, api_permissions_.begin())); 279 std::inserter(api_permissions_, api_permissions_.begin()));
280 280
281 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); 281 prefs()->AddGrantedPermissions(extension_id_, permissions.get());
282 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); 282 granted_permissions = prefs()->GetGrantedPermissions(extension_id_);
283 EXPECT_TRUE(granted_permissions.get()); 283 EXPECT_TRUE(granted_permissions.get());
284 EXPECT_FALSE(granted_permissions->IsEmpty()); 284 EXPECT_FALSE(granted_permissions->IsEmpty());
285 EXPECT_EQ(api_permissions_, granted_permissions->apis()); 285 EXPECT_EQ(api_permissions_, granted_permissions->apis());
286 EXPECT_EQ(ehost_permissions_, 286 EXPECT_EQ(ehost_permissions_,
287 granted_permissions->explicit_hosts()); 287 granted_permissions->explicit_hosts());
288 EXPECT_EQ(shost_permissions_, 288 EXPECT_EQ(shost_permissions_,
289 granted_permissions->scriptable_hosts()); 289 granted_permissions->scriptable_hosts());
290 effective_permissions_.ClearPatterns(); 290 effective_permissions_.ClearPatterns();
291 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_, 291 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_,
292 &effective_permissions_); 292 &effective_permissions_);
293 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); 293 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts());
294 } 294 }
295 295
296 virtual void Verify() { 296 virtual void Verify() {
297 scoped_ptr<ExtensionPermissionSet> permissions( 297 scoped_refptr<ExtensionPermissionSet> permissions(
298 prefs()->GetGrantedPermissions(extension_id_)); 298 prefs()->GetGrantedPermissions(extension_id_));
299 EXPECT_TRUE(permissions.get()); 299 EXPECT_TRUE(permissions.get());
300 EXPECT_FALSE(permissions->HasEffectiveFullAccess()); 300 EXPECT_FALSE(permissions->HasEffectiveFullAccess());
301 EXPECT_EQ(api_permissions_, permissions->apis()); 301 EXPECT_EQ(api_permissions_, permissions->apis());
302 EXPECT_EQ(ehost_permissions_, 302 EXPECT_EQ(ehost_permissions_,
303 permissions->explicit_hosts()); 303 permissions->explicit_hosts());
304 EXPECT_EQ(shost_permissions_, 304 EXPECT_EQ(shost_permissions_,
305 permissions->scriptable_hosts()); 305 permissions->scriptable_hosts());
306 } 306 }
307 307
308 private: 308 private:
309 std::string extension_id_; 309 std::string extension_id_;
310 ExtensionAPIPermissionSet api_perm_set1_; 310 ExtensionAPIPermissionSet api_perm_set1_;
311 ExtensionAPIPermissionSet api_perm_set2_; 311 ExtensionAPIPermissionSet api_perm_set2_;
312 URLPatternSet ehost_perm_set1_; 312 URLPatternSet ehost_perm_set1_;
313 URLPatternSet ehost_perm_set2_; 313 URLPatternSet ehost_perm_set2_;
314 URLPatternSet shost_perm_set1_; 314 URLPatternSet shost_perm_set1_;
315 URLPatternSet shost_perm_set2_; 315 URLPatternSet shost_perm_set2_;
316 316
317 ExtensionAPIPermissionSet api_permissions_; 317 ExtensionAPIPermissionSet api_permissions_;
318 URLPatternSet ehost_permissions_; 318 URLPatternSet ehost_permissions_;
319 URLPatternSet shost_permissions_; 319 URLPatternSet shost_permissions_;
320 URLPatternSet effective_permissions_; 320 URLPatternSet effective_permissions_;
321 }; 321 };
322 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} 322 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {}
323 323
324 // Tests the SetActivePermissions / GetActivePermissions functions.
325 class ExtensionPrefsActivePermissions : public ExtensionPrefsTest {
326 public:
327 virtual void Initialize() {
328 extension_id_ = prefs_.AddExtensionAndReturnId("test");
329
330 ExtensionAPIPermissionSet api_perms;
331 api_perms.insert(ExtensionAPIPermission::kTab);
332 api_perms.insert(ExtensionAPIPermission::kBookmark);
333 api_perms.insert(ExtensionAPIPermission::kHistory);
334
335 URLPatternSet ehosts;
336 AddPattern(&ehosts, "http://*.google.com/*");
337 AddPattern(&ehosts, "http://example.com/*");
338 AddPattern(&ehosts, "chrome://favicon/*");
339
340 URLPatternSet shosts;
341 AddPattern(&shosts, "https://*.google.com/*");
342 AddPattern(&shosts, "http://reddit.com/r/test/*");
343
344 active_perms_ = new ExtensionPermissionSet(api_perms, ehosts, shosts);
345
346 // Make sure the active permissions start empty.
347 scoped_refptr<ExtensionPermissionSet> active(
348 prefs()->GetActivePermissions(extension_id_));
349 EXPECT_TRUE(active->IsEmpty());
350
351 // Set the active permissions.
352 prefs()->SetActivePermissions(extension_id_, active_perms_.get());
353 active = prefs()->GetActivePermissions(extension_id_);
354 EXPECT_EQ(active_perms_->apis(), active->apis());
355 EXPECT_EQ(active_perms_->explicit_hosts(), active->explicit_hosts());
356 EXPECT_EQ(active_perms_->scriptable_hosts(), active->scriptable_hosts());
357 EXPECT_EQ(*active_perms_, *active);
358 }
359
360 virtual void Verify() {
361 scoped_refptr<ExtensionPermissionSet> permissions(
362 prefs()->GetActivePermissions(extension_id_));
363 EXPECT_EQ(*active_perms_, *permissions);
364 }
365
366 private:
367 std::string extension_id_;
368 scoped_refptr<ExtensionPermissionSet> active_perms_;
369 };
370 TEST_F(ExtensionPrefsActivePermissions, SetAndGetActivePermissions) {}
371
324 // Tests the GetVersionString function. 372 // Tests the GetVersionString function.
325 class ExtensionPrefsVersionString : public ExtensionPrefsTest { 373 class ExtensionPrefsVersionString : public ExtensionPrefsTest {
326 public: 374 public:
327 virtual void Initialize() { 375 virtual void Initialize() {
328 extension = prefs_.AddExtension("test"); 376 extension = prefs_.AddExtension("test");
329 EXPECT_EQ("0.1", prefs()->GetVersionString(extension->id())); 377 EXPECT_EQ("0.1", prefs()->GetVersionString(extension->id()));
330 prefs()->OnExtensionUninstalled(extension->id(), 378 prefs()->OnExtensionUninstalled(extension->id(),
331 Extension::INTERNAL, false); 379 Extension::INTERNAL, false);
332 } 380 }
333 381
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 testing::Mock::VerifyAndClearExpectations(v1i); 1067 testing::Mock::VerifyAndClearExpectations(v1i);
1020 testing::Mock::VerifyAndClearExpectations(v2); 1068 testing::Mock::VerifyAndClearExpectations(v2);
1021 testing::Mock::VerifyAndClearExpectations(v2i); 1069 testing::Mock::VerifyAndClearExpectations(v2i);
1022 } 1070 }
1023 1071
1024 virtual void Verify() { 1072 virtual void Verify() {
1025 } 1073 }
1026 }; 1074 };
1027 TEST_F(ExtensionPrefsSetExtensionControlledPref, 1075 TEST_F(ExtensionPrefsSetExtensionControlledPref,
1028 ExtensionPrefsSetExtensionControlledPref) {} 1076 ExtensionPrefsSetExtensionControlledPref) {}
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_prefs.cc ('k') | chrome/browser/extensions/extension_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698