Index: chrome/browser/supervised_user/supervised_user_service_unittest.cc |
diff --git a/chrome/browser/supervised_user/supervised_user_service_unittest.cc b/chrome/browser/supervised_user/supervised_user_service_unittest.cc |
index b48647a583960ac88bbf5f319acb29ba744c357a..ae7f433a9c89f69c17d12f8efa076ad9b91a549a 100644 |
--- a/chrome/browser/supervised_user/supervised_user_service_unittest.cc |
+++ b/chrome/browser/supervised_user/supervised_user_service_unittest.cc |
@@ -201,14 +201,17 @@ class SupervisedUserServiceExtensionTestBase |
return extension; |
} |
- scoped_refptr<extensions::Extension> MakeExtension() { |
+ scoped_refptr<extensions::Extension> MakeExtension(bool by_custodian) { |
scoped_ptr<base::DictionaryValue> manifest = extensions::DictionaryBuilder() |
.Set(extensions::manifest_keys::kName, "Extension") |
.Set(extensions::manifest_keys::kVersion, "1.0") |
.Build(); |
+ int creation_flags = extensions::Extension::NO_FLAGS; |
+ if (by_custodian) |
+ creation_flags |= extensions::Extension::WAS_INSTALLED_BY_CUSTODIAN; |
extensions::ExtensionBuilder builder; |
scoped_refptr<extensions::Extension> extension = |
- builder.SetManifest(manifest.Pass()).Build(); |
+ builder.SetManifest(manifest.Pass()).AddFlags(creation_flags).Build(); |
return extension; |
} |
@@ -236,7 +239,7 @@ TEST_F(SupervisedUserServiceExtensionTestUnsupervised, |
SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
EXPECT_FALSE(profile_->IsSupervised()); |
- scoped_refptr<extensions::Extension> extension = MakeExtension(); |
+ scoped_refptr<extensions::Extension> extension = MakeExtension(false); |
base::string16 error_1; |
EXPECT_TRUE(supervised_user_service->UserMayLoad(extension.get(), &error_1)); |
EXPECT_EQ(base::string16(), error_1); |
@@ -267,16 +270,29 @@ TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProvider) { |
EXPECT_TRUE(error_1.empty()); |
// Now check a different kind of extension. |
- scoped_refptr<extensions::Extension> extension = MakeExtension(); |
+ scoped_refptr<extensions::Extension> extension = MakeExtension(false); |
EXPECT_FALSE(supervised_user_service->UserMayLoad(extension.get(), &error_1)); |
EXPECT_FALSE(error_1.empty()); |
base::string16 error_2; |
- EXPECT_FALSE( |
- supervised_user_service->UserMayModifySettings(extension.get(), |
- &error_2)); |
+ EXPECT_FALSE(supervised_user_service->UserMayModifySettings(extension.get(), |
+ &error_2)); |
EXPECT_FALSE(error_2.empty()); |
+ // Check that an extension that was installed by the custodian may be loaded. |
+ base::string16 error_3; |
+ scoped_refptr<extensions::Extension> extension_2 = MakeExtension(true); |
+ EXPECT_TRUE(supervised_user_service->UserMayLoad(extension_2.get(), |
+ &error_3)); |
+ EXPECT_TRUE(error_3.empty()); |
+ |
+ // The supervised user should still not be able to uninstall or disable the |
+ // extension. |
+ base::string16 error_4; |
+ EXPECT_FALSE(supervised_user_service->UserMayModifySettings(extension_2.get(), |
+ &error_4)); |
+ EXPECT_FALSE(error_4.empty()); |
+ |
#ifndef NDEBUG |
EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty()); |
#endif |