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 <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/at_exit.h" | 9 #include "base/at_exit.h" |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 #include "sync/protocol/app_specifics.pb.h" | 128 #include "sync/protocol/app_specifics.pb.h" |
129 #include "sync/protocol/extension_specifics.pb.h" | 129 #include "sync/protocol/extension_specifics.pb.h" |
130 #include "sync/protocol/sync.pb.h" | 130 #include "sync/protocol/sync.pb.h" |
131 #include "testing/gtest/include/gtest/gtest.h" | 131 #include "testing/gtest/include/gtest/gtest.h" |
132 #include "testing/platform_test.h" | 132 #include "testing/platform_test.h" |
133 #include "ui/base/l10n/l10n_util.h" | 133 #include "ui/base/l10n/l10n_util.h" |
134 #include "url/gurl.h" | 134 #include "url/gurl.h" |
135 | 135 |
136 #if defined(ENABLE_SUPERVISED_USERS) | 136 #if defined(ENABLE_SUPERVISED_USERS) |
137 #include "chrome/browser/supervised_user/permission_request_creator.h" | 137 #include "chrome/browser/supervised_user/permission_request_creator.h" |
| 138 #include "chrome/browser/supervised_user/supervised_user_constants.h" |
138 #include "chrome/browser/supervised_user/supervised_user_service.h" | 139 #include "chrome/browser/supervised_user/supervised_user_service.h" |
139 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 140 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
140 #endif | 141 #endif |
141 | 142 |
142 #if defined(OS_CHROMEOS) | 143 #if defined(OS_CHROMEOS) |
143 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h" | 144 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h" |
144 #include "chrome/browser/chromeos/settings/cros_settings.h" | 145 #include "chrome/browser/chromeos/settings/cros_settings.h" |
145 #include "chrome/browser/chromeos/settings/device_settings_service.h" | 146 #include "chrome/browser/chromeos/settings/device_settings_service.h" |
146 #endif | 147 #endif |
147 | 148 |
(...skipping 6474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6622 const extensions::PendingExtensionInfo* info; | 6623 const extensions::PendingExtensionInfo* info; |
6623 EXPECT_TRUE( | 6624 EXPECT_TRUE( |
6624 (info = service()->pending_extension_manager()->GetById(good_crx))); | 6625 (info = service()->pending_extension_manager()->GetById(good_crx))); |
6625 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); | 6626 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); |
6626 EXPECT_TRUE(info->is_from_sync()); | 6627 EXPECT_TRUE(info->is_from_sync()); |
6627 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); | 6628 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); |
6628 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. | 6629 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. |
6629 } | 6630 } |
6630 | 6631 |
6631 #if defined(ENABLE_SUPERVISED_USERS) | 6632 #if defined(ENABLE_SUPERVISED_USERS) |
| 6633 class ScopedSupervisedUserServiceDelegate |
| 6634 : public SupervisedUserService::Delegate { |
| 6635 public: |
| 6636 explicit ScopedSupervisedUserServiceDelegate(SupervisedUserService* service) |
| 6637 : service_(service) { |
| 6638 service_->SetDelegate(this); |
| 6639 } |
| 6640 ~ScopedSupervisedUserServiceDelegate() override { |
| 6641 service_->SetDelegate(nullptr); |
| 6642 } |
| 6643 |
| 6644 // This prevents the legacy supervised user init code from running. |
| 6645 bool SetActive(bool active) override { return true; } |
| 6646 |
| 6647 private: |
| 6648 SupervisedUserService* service_; |
| 6649 }; |
| 6650 |
6632 class MockPermissionRequestCreator : public PermissionRequestCreator { | 6651 class MockPermissionRequestCreator : public PermissionRequestCreator { |
6633 public: | 6652 public: |
6634 MockPermissionRequestCreator() {} | 6653 MockPermissionRequestCreator() {} |
6635 ~MockPermissionRequestCreator() override {} | 6654 ~MockPermissionRequestCreator() override {} |
6636 | 6655 |
6637 bool IsEnabled() const override { return true; } | 6656 bool IsEnabled() const override { return true; } |
6638 | 6657 |
6639 void CreateURLAccessRequest(const GURL& url_requested, | 6658 void CreateURLAccessRequest(const GURL& url_requested, |
6640 const SuccessCallback& callback) override { | 6659 const SuccessCallback& callback) override { |
6641 FAIL(); | 6660 FAIL(); |
6642 } | 6661 } |
6643 | 6662 |
6644 MOCK_METHOD2(CreateExtensionUpdateRequest, | 6663 MOCK_METHOD2(CreateExtensionUpdateRequest, |
6645 void(const std::string& id, | 6664 void(const std::string& id, |
6646 const SupervisedUserService::SuccessCallback& callback)); | 6665 const SupervisedUserService::SuccessCallback& callback)); |
6647 | 6666 |
6648 private: | 6667 private: |
6649 DISALLOW_COPY_AND_ASSIGN(MockPermissionRequestCreator); | 6668 DISALLOW_COPY_AND_ASSIGN(MockPermissionRequestCreator); |
6650 }; | 6669 }; |
6651 | 6670 |
6652 TEST_F(ExtensionServiceTest, SupervisedUser_InstallOnlyAllowedByCustodian) { | 6671 TEST_F(ExtensionServiceTest, SupervisedUser_InstallOnlyAllowedByCustodian) { |
6653 ExtensionServiceInitParams params = CreateDefaultInitParams(); | 6672 ExtensionServiceInitParams params = CreateDefaultInitParams(); |
6654 params.profile_is_supervised = true; | 6673 params.profile_is_supervised = true; |
6655 InitializeExtensionService(params); | 6674 InitializeExtensionService(params); |
6656 | 6675 |
6657 SupervisedUserService* supervised_user_service = | 6676 SupervisedUserService* supervised_user_service = |
6658 SupervisedUserServiceFactory::GetForProfile(profile()); | 6677 SupervisedUserServiceFactory::GetForProfile(profile()); |
6659 GetManagementPolicy()->RegisterProvider(supervised_user_service); | 6678 ScopedSupervisedUserServiceDelegate delegate(supervised_user_service); |
| 6679 supervised_user_service->Init(); |
6660 | 6680 |
6661 base::FilePath path1 = data_dir().AppendASCII("good.crx"); | 6681 base::FilePath path1 = data_dir().AppendASCII("good.crx"); |
6662 base::FilePath path2 = data_dir().AppendASCII("good2048.crx"); | 6682 base::FilePath path2 = data_dir().AppendASCII("good2048.crx"); |
6663 const Extension* extensions[] = { | 6683 const Extension* extensions[] = { |
6664 InstallCRX(path1, INSTALL_FAILED), | 6684 InstallCRX(path1, INSTALL_FAILED), |
6665 InstallCRX(path2, INSTALL_NEW, Extension::WAS_INSTALLED_BY_CUSTODIAN) | 6685 InstallCRX(path2, INSTALL_NEW, Extension::WAS_INSTALLED_BY_CUSTODIAN) |
6666 }; | 6686 }; |
6667 | 6687 |
6668 // Only the extension with the "installed by custodian" flag should have been | 6688 // Only the extension with the "installed by custodian" flag should have been |
6669 // installed and enabled. | 6689 // installed and enabled. |
6670 EXPECT_FALSE(extensions[0]); | 6690 EXPECT_FALSE(extensions[0]); |
6671 ASSERT_TRUE(extensions[1]); | 6691 ASSERT_TRUE(extensions[1]); |
6672 EXPECT_TRUE(registry()->enabled_extensions().Contains(extensions[1]->id())); | 6692 EXPECT_TRUE(registry()->enabled_extensions().Contains(extensions[1]->id())); |
6673 } | 6693 } |
6674 | 6694 |
| 6695 TEST_F(ExtensionServiceTest, SupervisedUser_PreinstalledExtension) { |
| 6696 ExtensionServiceInitParams params = CreateDefaultInitParams(); |
| 6697 // Do *not* set the profile to supervised here! |
| 6698 InitializeExtensionService(params); |
| 6699 |
| 6700 SupervisedUserService* supervised_user_service = |
| 6701 SupervisedUserServiceFactory::GetForProfile(profile()); |
| 6702 ScopedSupervisedUserServiceDelegate delegate(supervised_user_service); |
| 6703 supervised_user_service->Init(); |
| 6704 |
| 6705 // Install an extension. |
| 6706 base::FilePath path = data_dir().AppendASCII("good.crx"); |
| 6707 const Extension* extension = InstallCRX(path, INSTALL_NEW); |
| 6708 std::string id = extension->id(); |
| 6709 |
| 6710 // Now make the profile supervised. |
| 6711 profile()->AsTestingProfile()->SetSupervisedUserId( |
| 6712 supervised_users::kChildAccountSUID); |
| 6713 |
| 6714 // The extension should not be enabled anymore. |
| 6715 EXPECT_FALSE(registry()->enabled_extensions().Contains(id)); |
| 6716 } |
| 6717 |
6675 TEST_F(ExtensionServiceTest, SupervisedUser_UpdateWithoutPermissionIncrease) { | 6718 TEST_F(ExtensionServiceTest, SupervisedUser_UpdateWithoutPermissionIncrease) { |
6676 ExtensionServiceInitParams params = CreateDefaultInitParams(); | 6719 ExtensionServiceInitParams params = CreateDefaultInitParams(); |
6677 params.profile_is_supervised = true; | 6720 params.profile_is_supervised = true; |
6678 InitializeExtensionService(params); | 6721 InitializeExtensionService(params); |
6679 | 6722 |
6680 SupervisedUserService* supervised_user_service = | 6723 SupervisedUserService* supervised_user_service = |
6681 SupervisedUserServiceFactory::GetForProfile(profile()); | 6724 SupervisedUserServiceFactory::GetForProfile(profile()); |
6682 GetManagementPolicy()->RegisterProvider(supervised_user_service); | 6725 ScopedSupervisedUserServiceDelegate delegate(supervised_user_service); |
| 6726 supervised_user_service->Init(); |
6683 | 6727 |
6684 base::FilePath base_path = data_dir().AppendASCII("autoupdate"); | 6728 base::FilePath base_path = data_dir().AppendASCII("autoupdate"); |
6685 base::FilePath pem_path = base_path.AppendASCII("key.pem"); | 6729 base::FilePath pem_path = base_path.AppendASCII("key.pem"); |
6686 | 6730 |
6687 base::FilePath path = base_path.AppendASCII("v1"); | 6731 base::FilePath path = base_path.AppendASCII("v1"); |
6688 const Extension* extension = | 6732 const Extension* extension = |
6689 PackAndInstallCRX(path, pem_path, INSTALL_NEW, | 6733 PackAndInstallCRX(path, pem_path, INSTALL_NEW, |
6690 Extension::WAS_INSTALLED_BY_CUSTODIAN); | 6734 Extension::WAS_INSTALLED_BY_CUSTODIAN); |
6691 // The extension must now be installed and enabled. | 6735 // The extension must now be installed and enabled. |
6692 ASSERT_TRUE(extension); | 6736 ASSERT_TRUE(extension); |
(...skipping 15 matching lines...) Expand all Loading... |
6708 EXPECT_NE(extension->VersionString(), old_version); | 6752 EXPECT_NE(extension->VersionString(), old_version); |
6709 } | 6753 } |
6710 | 6754 |
6711 TEST_F(ExtensionServiceTest, SupervisedUser_UpdateWithPermissionIncrease) { | 6755 TEST_F(ExtensionServiceTest, SupervisedUser_UpdateWithPermissionIncrease) { |
6712 ExtensionServiceInitParams params = CreateDefaultInitParams(); | 6756 ExtensionServiceInitParams params = CreateDefaultInitParams(); |
6713 params.profile_is_supervised = true; | 6757 params.profile_is_supervised = true; |
6714 InitializeExtensionService(params); | 6758 InitializeExtensionService(params); |
6715 | 6759 |
6716 SupervisedUserService* supervised_user_service = | 6760 SupervisedUserService* supervised_user_service = |
6717 SupervisedUserServiceFactory::GetForProfile(profile()); | 6761 SupervisedUserServiceFactory::GetForProfile(profile()); |
6718 GetManagementPolicy()->RegisterProvider(supervised_user_service); | 6762 ScopedSupervisedUserServiceDelegate delegate(supervised_user_service); |
| 6763 supervised_user_service->Init(); |
6719 MockPermissionRequestCreator* creator = new MockPermissionRequestCreator; | 6764 MockPermissionRequestCreator* creator = new MockPermissionRequestCreator; |
6720 supervised_user_service->AddPermissionRequestCreator( | 6765 supervised_user_service->AddPermissionRequestCreator( |
6721 make_scoped_ptr(creator)); | 6766 make_scoped_ptr(creator)); |
6722 | 6767 |
6723 base::FilePath base_path = data_dir().AppendASCII("permissions_increase"); | 6768 base::FilePath base_path = data_dir().AppendASCII("permissions_increase"); |
6724 base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); | 6769 base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); |
6725 | 6770 |
6726 base::FilePath path = base_path.AppendASCII("v1"); | 6771 base::FilePath path = base_path.AppendASCII("v1"); |
6727 const Extension* extension = | 6772 const Extension* extension = |
6728 PackAndInstallCRX(path, pem_path, INSTALL_NEW, | 6773 PackAndInstallCRX(path, pem_path, INSTALL_NEW, |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7723 | 7768 |
7724 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, | 7769 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, |
7725 content::Source<Profile>(profile()), | 7770 content::Source<Profile>(profile()), |
7726 content::NotificationService::NoDetails()); | 7771 content::NotificationService::NoDetails()); |
7727 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); | 7772 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); |
7728 EXPECT_EQ(0u, registry()->enabled_extensions().size()); | 7773 EXPECT_EQ(0u, registry()->enabled_extensions().size()); |
7729 EXPECT_EQ(0u, registry()->disabled_extensions().size()); | 7774 EXPECT_EQ(0u, registry()->disabled_extensions().size()); |
7730 EXPECT_EQ(0u, registry()->terminated_extensions().size()); | 7775 EXPECT_EQ(0u, registry()->terminated_extensions().size()); |
7731 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); | 7776 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); |
7732 } | 7777 } |
OLD | NEW |