OLD | NEW |
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 3536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3547 | 3547 |
3548 ASSERT_EQ(1u, registry->blacklisted_extensions().size()); | 3548 ASSERT_EQ(1u, registry->blacklisted_extensions().size()); |
3549 ASSERT_EQ(2u, registry->enabled_extensions().size()); | 3549 ASSERT_EQ(2u, registry->enabled_extensions().size()); |
3550 | 3550 |
3551 ASSERT_TRUE(registry->enabled_extensions().Contains(good0)); | 3551 ASSERT_TRUE(registry->enabled_extensions().Contains(good0)); |
3552 ASSERT_TRUE(registry->blacklisted_extensions().Contains(good1)); | 3552 ASSERT_TRUE(registry->blacklisted_extensions().Contains(good1)); |
3553 ASSERT_TRUE(registry->enabled_extensions().Contains(good2)); | 3553 ASSERT_TRUE(registry->enabled_extensions().Contains(good2)); |
3554 } | 3554 } |
3555 #endif // defined(ENABLE_BLACKLIST_TESTS) | 3555 #endif // defined(ENABLE_BLACKLIST_TESTS) |
3556 | 3556 |
| 3557 #if defined(ENABLE_BLACKLIST_TESTS) |
| 3558 // Extension is added to blacklist with BLACKLISTED_POTENTIALLY_UNWANTED state |
| 3559 // after it is installed. It is then successfully re-enabled by the user. |
| 3560 TEST_F(ExtensionServiceTest, GreylistedExtensionDisabled) { |
| 3561 extensions::TestBlacklist test_blacklist; |
| 3562 // A profile with 3 extensions installed: good0, good1, and good2. |
| 3563 InitializeGoodInstalledExtensionService(); |
| 3564 test_blacklist.Attach(service_->blacklist_); |
| 3565 service_->Init(); |
| 3566 |
| 3567 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get()); |
| 3568 const extensions::ExtensionSet& enabled_extensions = |
| 3569 registry->enabled_extensions(); |
| 3570 const extensions::ExtensionSet& disabled_extensions = |
| 3571 registry->disabled_extensions(); |
| 3572 |
| 3573 EXPECT_TRUE(enabled_extensions.Contains(good0)); |
| 3574 EXPECT_TRUE(enabled_extensions.Contains(good1)); |
| 3575 EXPECT_TRUE(enabled_extensions.Contains(good2)); |
| 3576 |
| 3577 // Blacklist good0 and good1 (and an invalid extension ID). |
| 3578 test_blacklist.SetBlacklistState( |
| 3579 good0, extensions::BLACKLISTED_CWS_POLICY_VIOLATION, true); |
| 3580 test_blacklist.SetBlacklistState( |
| 3581 good1, extensions::BLACKLISTED_POTENTIALLY_UNWANTED, true); |
| 3582 test_blacklist.SetBlacklistState( |
| 3583 "invalid_id", extensions::BLACKLISTED_MALWARE, true); |
| 3584 base::RunLoop().RunUntilIdle(); |
| 3585 |
| 3586 EXPECT_FALSE(enabled_extensions.Contains(good0)); |
| 3587 EXPECT_TRUE(disabled_extensions.Contains(good0)); |
| 3588 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3589 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3590 EXPECT_TRUE(enabled_extensions.Contains(good2)); |
| 3591 EXPECT_FALSE(disabled_extensions.Contains(good2)); |
| 3592 |
| 3593 ValidateIntegerPref( |
| 3594 good0, "blacklist_state", extensions::BLACKLISTED_CWS_POLICY_VIOLATION); |
| 3595 ValidateIntegerPref( |
| 3596 good1, "blacklist_state", extensions::BLACKLISTED_POTENTIALLY_UNWANTED); |
| 3597 |
| 3598 // Now user enables good0. |
| 3599 service_->EnableExtension(good0); |
| 3600 |
| 3601 EXPECT_TRUE(enabled_extensions.Contains(good0)); |
| 3602 EXPECT_FALSE(disabled_extensions.Contains(good0)); |
| 3603 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3604 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3605 |
| 3606 // Remove extensions from blacklist. |
| 3607 test_blacklist.SetBlacklistState( |
| 3608 good0, extensions::NOT_BLACKLISTED, true); |
| 3609 test_blacklist.SetBlacklistState( |
| 3610 good1, extensions::NOT_BLACKLISTED, true); |
| 3611 base::RunLoop().RunUntilIdle(); |
| 3612 |
| 3613 // All extensions are enabled. |
| 3614 EXPECT_TRUE(enabled_extensions.Contains(good0)); |
| 3615 EXPECT_FALSE(disabled_extensions.Contains(good0)); |
| 3616 EXPECT_TRUE(enabled_extensions.Contains(good1)); |
| 3617 EXPECT_FALSE(disabled_extensions.Contains(good1)); |
| 3618 EXPECT_TRUE(enabled_extensions.Contains(good2)); |
| 3619 EXPECT_FALSE(disabled_extensions.Contains(good2)); |
| 3620 } |
| 3621 #endif // defined(ENABLE_BLACKLIST_TESTS) |
| 3622 |
| 3623 #if defined(ENABLE_BLACKLIST_TESTS) |
| 3624 // When extension is removed from greylist, do not re-enable it if it is |
| 3625 // disabled by user. |
| 3626 TEST_F(ExtensionServiceTest, GreylistDontEnableManuallyDisabled) { |
| 3627 extensions::TestBlacklist test_blacklist; |
| 3628 // A profile with 3 extensions installed: good0, good1, and good2. |
| 3629 InitializeGoodInstalledExtensionService(); |
| 3630 test_blacklist.Attach(service_->blacklist_); |
| 3631 service_->Init(); |
| 3632 |
| 3633 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get()); |
| 3634 const extensions::ExtensionSet& enabled_extensions = |
| 3635 registry->enabled_extensions(); |
| 3636 const extensions::ExtensionSet& disabled_extensions = |
| 3637 registry->disabled_extensions(); |
| 3638 |
| 3639 // Manually disable. |
| 3640 service_->DisableExtension(good0, extensions::Extension::DISABLE_USER_ACTION); |
| 3641 |
| 3642 test_blacklist.SetBlacklistState( |
| 3643 good0, extensions::BLACKLISTED_CWS_POLICY_VIOLATION, true); |
| 3644 test_blacklist.SetBlacklistState( |
| 3645 good1, extensions::BLACKLISTED_POTENTIALLY_UNWANTED, true); |
| 3646 test_blacklist.SetBlacklistState( |
| 3647 good2, extensions::BLACKLISTED_SECURITY_VULNERABILITY, true); |
| 3648 base::RunLoop().RunUntilIdle(); |
| 3649 |
| 3650 // All extensions disabled. |
| 3651 EXPECT_FALSE(enabled_extensions.Contains(good0)); |
| 3652 EXPECT_TRUE(disabled_extensions.Contains(good0)); |
| 3653 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3654 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3655 EXPECT_FALSE(enabled_extensions.Contains(good2)); |
| 3656 EXPECT_TRUE(disabled_extensions.Contains(good2)); |
| 3657 |
| 3658 // Greylisted extension can be enabled. |
| 3659 service_->EnableExtension(good1); |
| 3660 EXPECT_TRUE(enabled_extensions.Contains(good1)); |
| 3661 EXPECT_FALSE(disabled_extensions.Contains(good1)); |
| 3662 |
| 3663 // good1 is now manually disabled. |
| 3664 service_->DisableExtension(good1, extensions::Extension::DISABLE_USER_ACTION); |
| 3665 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3666 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3667 |
| 3668 // Remove extensions from blacklist. |
| 3669 test_blacklist.SetBlacklistState( |
| 3670 good0, extensions::NOT_BLACKLISTED, true); |
| 3671 test_blacklist.SetBlacklistState( |
| 3672 good1, extensions::NOT_BLACKLISTED, true); |
| 3673 test_blacklist.SetBlacklistState( |
| 3674 good2, extensions::NOT_BLACKLISTED, true); |
| 3675 base::RunLoop().RunUntilIdle(); |
| 3676 |
| 3677 // good0 and good1 remain disabled. |
| 3678 EXPECT_FALSE(enabled_extensions.Contains(good0)); |
| 3679 EXPECT_TRUE(disabled_extensions.Contains(good0)); |
| 3680 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3681 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3682 EXPECT_TRUE(enabled_extensions.Contains(good2)); |
| 3683 EXPECT_FALSE(disabled_extensions.Contains(good2)); |
| 3684 } |
| 3685 #endif // defined(ENABLE_BLACKLIST_TESTS) |
| 3686 |
| 3687 #if defined(ENABLE_BLACKLIST_TESTS) |
| 3688 // Blacklisted extension with unknown state are not enabled/disabled. |
| 3689 TEST_F(ExtensionServiceTest, GreylistUnknownDontChange) { |
| 3690 extensions::TestBlacklist test_blacklist; |
| 3691 // A profile with 3 extensions installed: good0, good1, and good2. |
| 3692 InitializeGoodInstalledExtensionService(); |
| 3693 test_blacklist.Attach(service_->blacklist_); |
| 3694 service_->Init(); |
| 3695 |
| 3696 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get()); |
| 3697 const extensions::ExtensionSet& enabled_extensions = |
| 3698 registry->enabled_extensions(); |
| 3699 const extensions::ExtensionSet& disabled_extensions = |
| 3700 registry->disabled_extensions(); |
| 3701 |
| 3702 test_blacklist.SetBlacklistState( |
| 3703 good0, extensions::BLACKLISTED_CWS_POLICY_VIOLATION, true); |
| 3704 test_blacklist.SetBlacklistState( |
| 3705 good1, extensions::BLACKLISTED_POTENTIALLY_UNWANTED, true); |
| 3706 base::RunLoop().RunUntilIdle(); |
| 3707 |
| 3708 EXPECT_FALSE(enabled_extensions.Contains(good0)); |
| 3709 EXPECT_TRUE(disabled_extensions.Contains(good0)); |
| 3710 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3711 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3712 EXPECT_TRUE(enabled_extensions.Contains(good2)); |
| 3713 EXPECT_FALSE(disabled_extensions.Contains(good2)); |
| 3714 |
| 3715 test_blacklist.SetBlacklistState( |
| 3716 good0, extensions::NOT_BLACKLISTED, true); |
| 3717 test_blacklist.SetBlacklistState( |
| 3718 good1, extensions::BLACKLISTED_UNKNOWN, true); |
| 3719 test_blacklist.SetBlacklistState( |
| 3720 good2, extensions::BLACKLISTED_UNKNOWN, true); |
| 3721 base::RunLoop().RunUntilIdle(); |
| 3722 |
| 3723 // good0 re-enabled, other remain as they were. |
| 3724 EXPECT_TRUE(enabled_extensions.Contains(good0)); |
| 3725 EXPECT_FALSE(disabled_extensions.Contains(good0)); |
| 3726 EXPECT_FALSE(enabled_extensions.Contains(good1)); |
| 3727 EXPECT_TRUE(disabled_extensions.Contains(good1)); |
| 3728 EXPECT_TRUE(enabled_extensions.Contains(good2)); |
| 3729 EXPECT_FALSE(disabled_extensions.Contains(good2)); |
| 3730 } |
| 3731 #endif // defined(ENABLE_BLACKLIST_TESTS) |
| 3732 |
3557 // Will not install extension blacklisted by policy. | 3733 // Will not install extension blacklisted by policy. |
3558 TEST_F(ExtensionServiceTest, BlacklistedByPolicyWillNotInstall) { | 3734 TEST_F(ExtensionServiceTest, BlacklistedByPolicyWillNotInstall) { |
3559 InitializeEmptyExtensionService(); | 3735 InitializeEmptyExtensionService(); |
3560 | 3736 |
3561 // Blacklist everything. | 3737 // Blacklist everything. |
3562 { | 3738 { |
3563 ListPrefUpdate update(profile_->GetPrefs(), | 3739 ListPrefUpdate update(profile_->GetPrefs(), |
3564 extensions::pref_names::kInstallDenyList); | 3740 extensions::pref_names::kInstallDenyList); |
3565 base::ListValue* blacklist = update.Get(); | 3741 base::ListValue* blacklist = update.Get(); |
3566 blacklist->Append(new base::StringValue("*")); | 3742 blacklist->Append(new base::StringValue("*")); |
(...skipping 3226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6793 // ReconcileKnownDisabled(). | 6969 // ReconcileKnownDisabled(). |
6794 service_->EnableExtension(good2); | 6970 service_->EnableExtension(good2); |
6795 service_->ReconcileKnownDisabled(); | 6971 service_->ReconcileKnownDisabled(); |
6796 expected_extensions.insert(good2); | 6972 expected_extensions.insert(good2); |
6797 expected_disabled_extensions.erase(good2); | 6973 expected_disabled_extensions.erase(good2); |
6798 | 6974 |
6799 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs()); | 6975 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs()); |
6800 EXPECT_EQ(expected_disabled_extensions, | 6976 EXPECT_EQ(expected_disabled_extensions, |
6801 service_->disabled_extensions()->GetIDs()); | 6977 service_->disabled_extensions()->GetIDs()); |
6802 } | 6978 } |
OLD | NEW |