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

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

Issue 1078713002: Supervised users: Re-check ManagementPolicy when ProfileIsSupervised changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 5 years, 8 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
« no previous file with comments | « no previous file | chrome/browser/supervised_user/supervised_user_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <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
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
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 StubSupervisedUserServiceDelegate
not at google - send to devlin 2015/04/09 14:58:52 Perhaps ScopedSupervisedUserServiceDelegate would
Marc Treib 2015/04/09 15:07:49 Yup, good idea! Done.
6634 : public SupervisedUserService::Delegate {
6635 public:
6636 explicit StubSupervisedUserServiceDelegate(SupervisedUserService* service)
6637 : service_(service) {
6638 service_->SetDelegate(this);
6639 }
6640 ~StubSupervisedUserServiceDelegate() 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 StubSupervisedUserServiceDelegate 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 StubSupervisedUserServiceDelegate 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 StubSupervisedUserServiceDelegate 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
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 StubSupervisedUserServiceDelegate 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
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 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/supervised_user/supervised_user_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698