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

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: Created 6 years, 10 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 3536 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/resources/extensions/extension_list.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698