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

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

Issue 119963004: Manage all the testing classes for Blacklist in TestBlacklist. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "chrome/browser/extensions/extension_service_unittest.h" 5 #include "chrome/browser/extensions/extension_service_unittest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "chrome/browser/extensions/external_install_ui.h" 49 #include "chrome/browser/extensions/external_install_ui.h"
50 #include "chrome/browser/extensions/external_policy_loader.h" 50 #include "chrome/browser/extensions/external_policy_loader.h"
51 #include "chrome/browser/extensions/external_pref_loader.h" 51 #include "chrome/browser/extensions/external_pref_loader.h"
52 #include "chrome/browser/extensions/external_provider_impl.h" 52 #include "chrome/browser/extensions/external_provider_impl.h"
53 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" 53 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h"
54 #include "chrome/browser/extensions/install_observer.h" 54 #include "chrome/browser/extensions/install_observer.h"
55 #include "chrome/browser/extensions/install_tracker.h" 55 #include "chrome/browser/extensions/install_tracker.h"
56 #include "chrome/browser/extensions/install_tracker_factory.h" 56 #include "chrome/browser/extensions/install_tracker_factory.h"
57 #include "chrome/browser/extensions/installed_loader.h" 57 #include "chrome/browser/extensions/installed_loader.h"
58 #include "chrome/browser/extensions/pack_extension_job.h" 58 #include "chrome/browser/extensions/pack_extension_job.h"
59 #include "chrome/browser/extensions/test_blacklist.h"
59 #include "chrome/browser/extensions/test_extension_system.h" 60 #include "chrome/browser/extensions/test_extension_system.h"
60 #include "chrome/browser/extensions/unpacked_installer.h" 61 #include "chrome/browser/extensions/unpacked_installer.h"
61 #include "chrome/browser/extensions/updater/extension_updater.h" 62 #include "chrome/browser/extensions/updater/extension_updater.h"
62 #include "chrome/browser/prefs/browser_prefs.h" 63 #include "chrome/browser/prefs/browser_prefs.h"
63 #include "chrome/browser/prefs/pref_service_mock_factory.h" 64 #include "chrome/browser/prefs/pref_service_mock_factory.h"
64 #include "chrome/browser/prefs/pref_service_syncable.h" 65 #include "chrome/browser/prefs/pref_service_syncable.h"
65 #include "chrome/browser/sync/profile_sync_service.h" 66 #include "chrome/browser/sync/profile_sync_service.h"
66 #include "chrome/browser/sync/profile_sync_service_factory.h" 67 #include "chrome/browser/sync/profile_sync_service_factory.h"
67 #include "chrome/common/chrome_constants.h" 68 #include "chrome/common/chrome_constants.h"
68 #include "chrome/common/chrome_paths.h" 69 #include "chrome/common/chrome_paths.h"
(...skipping 3285 matching lines...) Expand 10 before | Expand all | Expand 10 after
3354 Extension::NO_FLAGS, false); 3355 Extension::NO_FLAGS, false);
3355 UpdateExtension(good->id(), path, ENABLED); 3356 UpdateExtension(good->id(), path, ENABLED);
3356 3357
3357 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(kGoodId)); 3358 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(kGoodId));
3358 } 3359 }
3359 3360
3360 #if defined(ENABLE_BLACKLIST_TESTS) 3361 #if defined(ENABLE_BLACKLIST_TESTS)
3361 // Tests blacklisting then unblacklisting extensions after the service has been 3362 // Tests blacklisting then unblacklisting extensions after the service has been
3362 // initialized. 3363 // initialized.
3363 TEST_F(ExtensionServiceTest, SetUnsetBlacklistInPrefs) { 3364 TEST_F(ExtensionServiceTest, SetUnsetBlacklistInPrefs) {
3364 scoped_refptr<FakeSafeBrowsingDatabaseManager> blacklist_db( 3365 extensions::TestBlacklist test_blacklist;
3365 new FakeSafeBrowsingDatabaseManager(true));
3366 Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db(blacklist_db);
3367
3368 // A profile with 3 extensions installed: good0, good1, and good2. 3366 // A profile with 3 extensions installed: good0, good1, and good2.
3369 InitializeGoodInstalledExtensionService(); 3367 InitializeGoodInstalledExtensionService();
3368 test_blacklist.Attach(service_->blacklist_);
3370 service_->Init(); 3369 service_->Init();
3371 3370
3372 const extensions::ExtensionSet* extensions = service_->extensions(); 3371 const extensions::ExtensionSet* extensions = service_->extensions();
3373 const extensions::ExtensionSet* blacklisted_extensions = 3372 const extensions::ExtensionSet* blacklisted_extensions =
3374 service_->blacklisted_extensions(); 3373 service_->blacklisted_extensions();
3375 3374
3376 EXPECT_TRUE( extensions->Contains(good0) && 3375 EXPECT_TRUE( extensions->Contains(good0) &&
3377 !blacklisted_extensions->Contains(good0)); 3376 !blacklisted_extensions->Contains(good0));
3378 EXPECT_TRUE( extensions->Contains(good1) && 3377 EXPECT_TRUE( extensions->Contains(good1) &&
3379 !blacklisted_extensions->Contains(good1)); 3378 !blacklisted_extensions->Contains(good1));
3380 EXPECT_TRUE( extensions->Contains(good2) && 3379 EXPECT_TRUE( extensions->Contains(good2) &&
3381 !blacklisted_extensions->Contains(good2)); 3380 !blacklisted_extensions->Contains(good2));
3382 3381
3383 EXPECT_FALSE(IsPrefExist(good0, "blacklist")); 3382 EXPECT_FALSE(IsPrefExist(good0, "blacklist"));
3384 EXPECT_FALSE(IsPrefExist(good1, "blacklist")); 3383 EXPECT_FALSE(IsPrefExist(good1, "blacklist"));
3385 EXPECT_FALSE(IsPrefExist(good2, "blacklist")); 3384 EXPECT_FALSE(IsPrefExist(good2, "blacklist"));
3386 EXPECT_FALSE(IsPrefExist("invalid_id", "blacklist")); 3385 EXPECT_FALSE(IsPrefExist("invalid_id", "blacklist"));
3387 3386
3388 // Blacklist good0 and good1 (and an invalid extension ID). 3387 // Blacklist good0 and good1 (and an invalid extension ID).
3389 blacklist_db->SetUnsafe(good0, good1, "invalid_id").NotifyUpdate(); 3388 test_blacklist.SetBlacklistState(
3389 good0, extensions::BLACKLISTED_MALWARE, true);
3390 test_blacklist.SetBlacklistState(
3391 good1, extensions::BLACKLISTED_MALWARE, true);
3392 test_blacklist.SetBlacklistState(
3393 "invalid_id", extensions::BLACKLISTED_MALWARE, true);
3390 base::RunLoop().RunUntilIdle(); 3394 base::RunLoop().RunUntilIdle();
3391 3395
3392 EXPECT_TRUE(!extensions->Contains(good0) && 3396 EXPECT_TRUE(!extensions->Contains(good0) &&
3393 blacklisted_extensions->Contains(good0)); 3397 blacklisted_extensions->Contains(good0));
3394 EXPECT_TRUE(!extensions->Contains(good1) && 3398 EXPECT_TRUE(!extensions->Contains(good1) &&
3395 blacklisted_extensions->Contains(good1)); 3399 blacklisted_extensions->Contains(good1));
3396 EXPECT_TRUE( extensions->Contains(good2) && 3400 EXPECT_TRUE( extensions->Contains(good2) &&
3397 !blacklisted_extensions->Contains(good2)); 3401 !blacklisted_extensions->Contains(good2));
3398 3402
3399 EXPECT_TRUE(ValidateBooleanPref(good0, "blacklist", true)); 3403 EXPECT_TRUE(ValidateBooleanPref(good0, "blacklist", true));
3400 EXPECT_TRUE(ValidateBooleanPref(good1, "blacklist", true)); 3404 EXPECT_TRUE(ValidateBooleanPref(good1, "blacklist", true));
3401 EXPECT_FALSE(IsPrefExist(good2, "blacklist")); 3405 EXPECT_FALSE(IsPrefExist(good2, "blacklist"));
3402 EXPECT_FALSE(IsPrefExist("invalid_id", "blacklist")); 3406 EXPECT_FALSE(IsPrefExist("invalid_id", "blacklist"));
3403 3407
3404 // Un-blacklist good1 and blacklist good2. 3408 // Un-blacklist good1 and blacklist good2.
3405 blacklist_db->SetUnsafe(good0, good2, "invalid_id").NotifyUpdate(); 3409 test_blacklist.Clear(false);
3410 test_blacklist.SetBlacklistState(
3411 good0, extensions::BLACKLISTED_MALWARE, true);
3412 test_blacklist.SetBlacklistState(
3413 good2, extensions::BLACKLISTED_MALWARE, true);
3414 test_blacklist.SetBlacklistState(
3415 "invalid_id", extensions::BLACKLISTED_MALWARE, true);
3406 base::RunLoop().RunUntilIdle(); 3416 base::RunLoop().RunUntilIdle();
3407 3417
3408 EXPECT_TRUE(!extensions->Contains(good0) && 3418 EXPECT_TRUE(!extensions->Contains(good0) &&
3409 blacklisted_extensions->Contains(good0)); 3419 blacklisted_extensions->Contains(good0));
3410 EXPECT_TRUE( extensions->Contains(good1) && 3420 EXPECT_TRUE( extensions->Contains(good1) &&
3411 !blacklisted_extensions->Contains(good1)); 3421 !blacklisted_extensions->Contains(good1));
3412 EXPECT_TRUE(!extensions->Contains(good2) && 3422 EXPECT_TRUE(!extensions->Contains(good2) &&
3413 blacklisted_extensions->Contains(good2)); 3423 blacklisted_extensions->Contains(good2));
3414 3424
3415 EXPECT_TRUE(ValidateBooleanPref(good0, "blacklist", true)); 3425 EXPECT_TRUE(ValidateBooleanPref(good0, "blacklist", true));
(...skipping 22 matching lines...) Expand all
3438 // decide to install this silently. Somebody should fix these tests, all 3448 // decide to install this silently. Somebody should fix these tests, all
3439 // 6,000 lines of them. Hah! 3449 // 6,000 lines of them. Hah!
3440 InstallCRX(path, INSTALL_FAILED, Extension::WAS_INSTALLED_BY_DEFAULT); 3450 InstallCRX(path, INSTALL_FAILED, Extension::WAS_INSTALLED_BY_DEFAULT);
3441 EXPECT_EQ(0u, service_->extensions()->size()); 3451 EXPECT_EQ(0u, service_->extensions()->size());
3442 } 3452 }
3443 #endif // defined(ENABLE_BLACKLIST_TESTS) 3453 #endif // defined(ENABLE_BLACKLIST_TESTS)
3444 3454
3445 #if defined(ENABLE_BLACKLIST_TESTS) 3455 #if defined(ENABLE_BLACKLIST_TESTS)
3446 // Unload blacklisted extension on policy change. 3456 // Unload blacklisted extension on policy change.
3447 TEST_F(ExtensionServiceTest, UnloadBlacklistedExtensionPolicy) { 3457 TEST_F(ExtensionServiceTest, UnloadBlacklistedExtensionPolicy) {
3448 scoped_refptr<FakeSafeBrowsingDatabaseManager> blacklist_db( 3458 extensions::TestBlacklist test_blacklist;
3449 new FakeSafeBrowsingDatabaseManager(true));
3450 Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db(blacklist_db);
3451 3459
3452 // A profile with no extensions installed. 3460 // A profile with no extensions installed.
3453 InitializeEmptyExtensionService(); 3461 InitializeEmptyExtensionService();
3462 test_blacklist.Attach(service_->blacklist_);
3454 3463
3455 base::FilePath path = data_dir_.AppendASCII("good.crx"); 3464 base::FilePath path = data_dir_.AppendASCII("good.crx");
3456 3465
3457 const Extension* good = InstallCRX(path, INSTALL_NEW); 3466 const Extension* good = InstallCRX(path, INSTALL_NEW);
3458 EXPECT_EQ(good_crx, good->id()); 3467 EXPECT_EQ(good_crx, good->id());
3459 UpdateExtension(good_crx, path, FAILED_SILENTLY); 3468 UpdateExtension(good_crx, path, FAILED_SILENTLY);
3460 EXPECT_EQ(1u, service_->extensions()->size()); 3469 EXPECT_EQ(1u, service_->extensions()->size());
3461 3470
3462 base::ListValue whitelist; 3471 base::ListValue whitelist;
3463 PrefService* prefs = service_->extension_prefs()->pref_service(); 3472 PrefService* prefs = service_->extension_prefs()->pref_service();
3464 whitelist.Append(new base::StringValue(good_crx)); 3473 whitelist.Append(new base::StringValue(good_crx));
3465 prefs->Set(prefs::kExtensionInstallAllowList, whitelist); 3474 prefs->Set(prefs::kExtensionInstallAllowList, whitelist);
3466 3475
3467 blacklist_db->SetUnsafe(good_crx).NotifyUpdate(); 3476 test_blacklist.SetBlacklistState(
3477 good_crx, extensions::BLACKLISTED_MALWARE, true);
3468 base::RunLoop().RunUntilIdle(); 3478 base::RunLoop().RunUntilIdle();
3469 3479
3470 // The good_crx is blacklisted and the whitelist doesn't negate it. 3480 // The good_crx is blacklisted and the whitelist doesn't negate it.
3471 ASSERT_TRUE(ValidateBooleanPref(good_crx, "blacklist", true)); 3481 ASSERT_TRUE(ValidateBooleanPref(good_crx, "blacklist", true));
3472 EXPECT_EQ(0u, service_->extensions()->size()); 3482 EXPECT_EQ(0u, service_->extensions()->size());
3473 } 3483 }
3474 #endif // defined(ENABLE_BLACKLIST_TESTS) 3484 #endif // defined(ENABLE_BLACKLIST_TESTS)
3475 3485
3476 #if defined(ENABLE_BLACKLIST_TESTS) 3486 #if defined(ENABLE_BLACKLIST_TESTS)
3477 // Tests that a blacklisted extension is eventually unloaded on startup, if it 3487 // Tests that a blacklisted extension is eventually unloaded on startup, if it
3478 // wasn't already. 3488 // wasn't already.
3479 TEST_F(ExtensionServiceTest, WillNotLoadBlacklistedExtensionsFromDirectory) { 3489 TEST_F(ExtensionServiceTest, WillNotLoadBlacklistedExtensionsFromDirectory) {
3480 scoped_refptr<FakeSafeBrowsingDatabaseManager> blacklist_db( 3490 extensions::TestBlacklist test_blacklist;
3481 new FakeSafeBrowsingDatabaseManager(true));
3482 Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db(blacklist_db);
3483 3491
3484 // A profile with 3 extensions installed: good0, good1, and good2. 3492 // A profile with 3 extensions installed: good0, good1, and good2.
3485 InitializeGoodInstalledExtensionService(); 3493 InitializeGoodInstalledExtensionService();
3494 test_blacklist.Attach(service_->blacklist_);
3486 3495
3487 // Blacklist good1 before the service initializes. 3496 // Blacklist good1 before the service initializes.
3488 blacklist_db->SetUnsafe(good1); 3497 test_blacklist.SetBlacklistState(
3498 good1, extensions::BLACKLISTED_MALWARE, false);
3489 3499
3490 // Load extensions. 3500 // Load extensions.
3491 service_->Init(); 3501 service_->Init();
3492 ASSERT_EQ(3u, loaded_.size()); // hasn't had time to blacklist yet 3502 ASSERT_EQ(3u, loaded_.size()); // hasn't had time to blacklist yet
3493 3503
3494 base::RunLoop().RunUntilIdle(); 3504 base::RunLoop().RunUntilIdle();
3495 ASSERT_EQ(1u, service_->blacklisted_extensions()->size()); 3505 ASSERT_EQ(1u, service_->blacklisted_extensions()->size());
3496 ASSERT_EQ(2u, service_->extensions()->size()); 3506 ASSERT_EQ(2u, service_->extensions()->size());
3497 3507
3498 ASSERT_TRUE(service_->extensions()->Contains(good0)); 3508 ASSERT_TRUE(service_->extensions()->Contains(good0));
3499 ASSERT_TRUE(service_->blacklisted_extensions()->Contains(good1)); 3509 ASSERT_TRUE(service_->blacklisted_extensions()->Contains(good1));
3500 ASSERT_TRUE(service_->extensions()->Contains(good2)); 3510 ASSERT_TRUE(service_->extensions()->Contains(good2));
3501 } 3511 }
3502 #endif // defined(ENABLE_BLACKLIST_TESTS) 3512 #endif // defined(ENABLE_BLACKLIST_TESTS)
3503 3513
3504 #if defined(ENABLE_BLACKLIST_TESTS) 3514 #if defined(ENABLE_BLACKLIST_TESTS)
3505 // Tests extensions blacklisted in prefs on startup; one still blacklisted by 3515 // Tests extensions blacklisted in prefs on startup; one still blacklisted by
3506 // safe browsing, the other not. The not-blacklisted one should recover. 3516 // safe browsing, the other not. The not-blacklisted one should recover.
3507 TEST_F(ExtensionServiceTest, BlacklistedInPrefsFromStartup) { 3517 TEST_F(ExtensionServiceTest, BlacklistedInPrefsFromStartup) {
3508 scoped_refptr<FakeSafeBrowsingDatabaseManager> blacklist_db( 3518 extensions::TestBlacklist test_blacklist;
3509 new FakeSafeBrowsingDatabaseManager(true));
3510 Blacklist::ScopedDatabaseManagerForTest scoped_blacklist_db(blacklist_db);
3511 3519
3512 InitializeGoodInstalledExtensionService(); 3520 InitializeGoodInstalledExtensionService();
3521 test_blacklist.Attach(service_->blacklist_);
3513 service_->extension_prefs()->SetExtensionBlacklisted(good0, true); 3522 service_->extension_prefs()->SetExtensionBlacklisted(good0, true);
3514 service_->extension_prefs()->SetExtensionBlacklisted(good1, true); 3523 service_->extension_prefs()->SetExtensionBlacklisted(good1, true);
3515 3524
3516 blacklist_db->SetUnsafe(good1); 3525 test_blacklist.SetBlacklistState(
3526 good1, extensions::BLACKLISTED_MALWARE, false);
3517 3527
3518 service_->Init(); 3528 service_->Init();
3519 3529
3520 ASSERT_EQ(2u, service_->blacklisted_extensions()->size()); 3530 ASSERT_EQ(2u, service_->blacklisted_extensions()->size());
3521 ASSERT_EQ(1u, service_->extensions()->size()); 3531 ASSERT_EQ(1u, service_->extensions()->size());
3522 3532
3523 ASSERT_TRUE(service_->blacklisted_extensions()->Contains(good0)); 3533 ASSERT_TRUE(service_->blacklisted_extensions()->Contains(good0));
3524 ASSERT_TRUE(service_->blacklisted_extensions()->Contains(good1)); 3534 ASSERT_TRUE(service_->blacklisted_extensions()->Contains(good1));
3525 ASSERT_TRUE(service_->extensions()->Contains(good2)); 3535 ASSERT_TRUE(service_->extensions()->Contains(good2));
3526 3536
(...skipping 3214 matching lines...) Expand 10 before | Expand all | Expand 10 after
6741 // ReconcileKnownDisabled(). 6751 // ReconcileKnownDisabled().
6742 service_->EnableExtension(good2); 6752 service_->EnableExtension(good2);
6743 service_->ReconcileKnownDisabled(); 6753 service_->ReconcileKnownDisabled();
6744 expected_extensions.insert(good2); 6754 expected_extensions.insert(good2);
6745 expected_disabled_extensions.erase(good2); 6755 expected_disabled_extensions.erase(good2);
6746 6756
6747 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs()); 6757 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs());
6748 EXPECT_EQ(expected_disabled_extensions, 6758 EXPECT_EQ(expected_disabled_extensions,
6749 service_->disabled_extensions()->GetIDs()); 6759 service_->disabled_extensions()->GetIDs());
6750 } 6760 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698