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