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

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

Issue 98463005: Enable/disable extensions upon changes in blacklist. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added UI, store blacklist state in prefs, +2 unittests. Created 6 years, 11 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) 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
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 successfuly re-enabled by the user.
not at google - send to devlin 2014/01/22 22:24:39 successfully
Oleg Eterevsky 2014/01/23 14:48:54 Done.
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_TRUE(!enabled_extensions.Contains(good0) &&
3585 disabled_extensions.Contains(good0));
not at google - send to devlin 2014/01/22 22:24:39 Just put all of these as single assertions, i.e. r
Oleg Eterevsky 2014/01/23 14:48:54 Done.
3586 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3587 disabled_extensions.Contains(good1));
3588 EXPECT_TRUE(enabled_extensions.Contains(good2) &&
3589 !disabled_extensions.Contains(good2));
3590
3591 ValidateIntegerPref(
3592 good0, "greylist", extensions::BLACKLISTED_CWS_POLICY_VIOLATION);
3593 ValidateIntegerPref(
3594 good1, "greylist", extensions::BLACKLISTED_POTENTIALLY_UNWANTED);
3595
3596 // Now user enables good0.
3597 service_->EnableExtension(good0);
3598
3599 EXPECT_TRUE(enabled_extensions.Contains(good0) &&
3600 !disabled_extensions.Contains(good0));
3601 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3602 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 !disabled_extensions.Contains(good0));
3614 EXPECT_TRUE(enabled_extensions.Contains(good1) &&
3615 !disabled_extensions.Contains(good1));
3616 EXPECT_TRUE(enabled_extensions.Contains(good2) &&
3617 !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_TRUE(!enabled_extensions.Contains(good0) &&
3650 disabled_extensions.Contains(good0));
3651 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3652 disabled_extensions.Contains(good1));
3653 EXPECT_TRUE(!enabled_extensions.Contains(good2) &&
3654 disabled_extensions.Contains(good2));
3655
3656 // Greylisted extension can be enabled.
3657 service_->EnableExtension(good1);
3658 EXPECT_TRUE(enabled_extensions.Contains(good1) &&
3659 !disabled_extensions.Contains(good1));
3660
3661 // good1 is now manually disabled.
3662 service_->DisableExtension(good1, extensions::Extension::DISABLE_USER_ACTION);
3663 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3664 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_TRUE(!enabled_extensions.Contains(good0) &&
3677 disabled_extensions.Contains(good0));
3678 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3679 disabled_extensions.Contains(good1));
3680 EXPECT_TRUE(enabled_extensions.Contains(good2) &&
3681 !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_TRUE(!enabled_extensions.Contains(good0) &&
3707 disabled_extensions.Contains(good0));
3708 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3709 disabled_extensions.Contains(good1));
3710 EXPECT_TRUE(enabled_extensions.Contains(good2) &&
3711 !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 !disabled_extensions.Contains(good0));
3724 EXPECT_TRUE(!enabled_extensions.Contains(good1) &&
3725 disabled_extensions.Contains(good1));
3726 EXPECT_TRUE(enabled_extensions.Contains(good2) &&
3727 !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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698