Supervised Users should always need custodian approval for permission increase.
Remove the field trial SupervisedUserExtensionPermissionIncrease
BUG=652235
Review-Url: https://codereview.chromium.org/2396903002
Cr-Commit-Position: refs/heads/master@{#423497}
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
index 36188eb..e037c2e 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
@@ -619,8 +619,7 @@
ExtensionPrefs* extensions_prefs = ExtensionPrefs::Get(browser_context());
- if (extensions::util::NeedCustodianApprovalForPermissionIncrease(profile) &&
- extensions_prefs->HasDisableReason(
+ if (extensions_prefs->HasDisableReason(
params->id, Extension::DISABLE_PERMISSIONS_INCREASE)) {
return RespondNow(BuildResponse(true));
}
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index 885fc5d..f23350b 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -319,9 +319,7 @@
base::string16 ExtensionDisabledGlobalError::GetBubbleViewAcceptButtonLabel() {
if (extensions::util::IsExtensionSupervised(extension_,
- service_->profile()) &&
- extensions::util::NeedCustodianApprovalForPermissionIncrease(
- service_->profile())) {
+ service_->profile())) {
// TODO(treib): Probably use a new string here once we get UX design.
// For now, just use "OK". crbug.com/461261
return l10n_util::GetStringUTF16(IDS_OK);
@@ -338,16 +336,10 @@
base::string16 ExtensionDisabledGlobalError::GetBubbleViewCancelButtonLabel() {
if (extensions::util::IsExtensionSupervised(extension_,
service_->profile())) {
- if (extensions::util::NeedCustodianApprovalForPermissionIncrease(
- service_->profile())) {
- // If the supervised user can't approve the update, then there is no
- // "cancel" button.
- return base::string16();
- } else {
- // Supervised users can not remove extensions, so use "cancel" here
- // instead of "uninstall".
- return l10n_util::GetStringUTF16(IDS_CANCEL);
- }
+ // The supervised user can't approve the update, and hence there is no
+ // "cancel" button. Return an empty string such that the "cancel" button
+ // is not shown in the dialog.
+ return base::string16();
}
return l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNINSTALL);
}
@@ -358,9 +350,7 @@
void ExtensionDisabledGlobalError::BubbleViewAcceptButtonPressed(
Browser* browser) {
if (extensions::util::IsExtensionSupervised(extension_,
- service_->profile()) &&
- extensions::util::NeedCustodianApprovalForPermissionIncrease(
- service_->profile())) {
+ service_->profile())) {
return;
}
// Delay extension reenabling so this bubble closes properly.
@@ -372,16 +362,11 @@
void ExtensionDisabledGlobalError::BubbleViewCancelButtonPressed(
Browser* browser) {
- if (extensions::util::IsExtensionSupervised(extension_,
- service_->profile())) {
- // For custodian-installed extensions, this button should only exist if the
- // supervised user can approve the update. Otherwise there is only an "OK"
- // button.
- DCHECK(!extensions::util::NeedCustodianApprovalForPermissionIncrease(
- service_->profile()));
- // Supervised users may never remove custodian-installed extensions.
- return;
- }
+ // For custodian-installed extensions, this button should not exist because
+ // there is only an "OK" button.
+ // Supervised users may never remove custodian-installed extensions.
+ DCHECK(!extensions::util::IsExtensionSupervised(extension_,
+ service_->profile()));
uninstall_dialog_.reset(extensions::ExtensionUninstallDialog::Create(
service_->profile(), browser->window()->GetNativeWindow(), this));
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index a0a25a2..72b61fc 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -1686,11 +1686,8 @@
#if defined(ENABLE_SUPERVISED_USERS)
// If a custodian-installed extension is disabled for a supervised user due
- // to a permissions increase, send a request to the custodian if the
- // supervised user themselves can't re-enable the extension.
+ // to a permissions increase, send a request to the custodian.
if (extensions::util::IsExtensionSupervised(extension, profile_) &&
- extensions::util::NeedCustodianApprovalForPermissionIncrease(
- profile_) &&
!ExtensionSyncService::Get(profile_)->HasPendingReenable(
extension->id(), *extension->version())) {
SupervisedUserService* supervised_user_service =
diff --git a/chrome/browser/extensions/extension_service_sync_unittest.cc b/chrome/browser/extensions/extension_service_sync_unittest.cc
index c22300b..1f4874c 100644
--- a/chrome/browser/extensions/extension_service_sync_unittest.cc
+++ b/chrome/browser/extensions/extension_service_sync_unittest.cc
@@ -1581,17 +1581,6 @@
}
protected:
- void InitNeedCustodianApprovalFieldTrial(bool enabled) {
- // Group name doesn't matter.
- base::FieldTrialList::CreateFieldTrial(
- "SupervisedUserExtensionPermissionIncrease", "group");
- std::map<std::string, std::string> params;
- params["legacy_supervised_user"] = enabled ? "true" : "false";
- params["child_account"] = enabled ? "true" : "false";
- variations::AssociateVariationParams(
- "SupervisedUserExtensionPermissionIncrease", "group", params);
- }
-
void InitSupervisedUserInitiatedExtensionInstallFeature(bool enabled) {
base::FeatureList::ClearInstanceForTesting();
std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
@@ -2000,32 +1989,8 @@
EXPECT_FALSE(IsPendingCustodianApproval(id));
}
-TEST_F(ExtensionServiceTestSupervised, UpdateWithPermissionIncreaseNoApproval) {
- InitNeedCustodianApprovalFieldTrial(false);
-
- InitServices(true /* profile_is_supervised */);
-
- MockPermissionRequestCreator* creator = new MockPermissionRequestCreator;
- supervised_user_service()->AddPermissionRequestCreator(
- base::WrapUnique(creator));
-
- std::string id = InstallPermissionsTestExtension(true /* by_custodian */);
-
- // Update to a new version with increased permissions.
- // Since we don't require the custodian's approval, no permission request
- // should be created.
- const std::string version2("2");
- EXPECT_CALL(*creator, CreateExtensionUpdateRequest(
- RequestId(id, version2), testing::_))
- .Times(0);
- UpdatePermissionsTestExtension(id, version2, DISABLED);
- EXPECT_FALSE(IsPendingCustodianApproval(id));
-}
-
TEST_F(ExtensionServiceTestSupervised,
UpdateWithPermissionIncreaseApprovalOldVersion) {
- InitNeedCustodianApprovalFieldTrial(true);
-
InitServices(true /* profile_is_supervised */);
MockPermissionRequestCreator* creator = new MockPermissionRequestCreator;
@@ -2076,8 +2041,6 @@
TEST_F(ExtensionServiceTestSupervised,
UpdateWithPermissionIncreaseApprovalMatchingVersion) {
- InitNeedCustodianApprovalFieldTrial(true);
-
InitServices(true /* profile_is_supervised */);
MockPermissionRequestCreator* creator = new MockPermissionRequestCreator;
@@ -2115,8 +2078,6 @@
TEST_F(ExtensionServiceTestSupervised,
UpdateWithPermissionIncreaseApprovalNewVersion) {
- InitNeedCustodianApprovalFieldTrial(true);
-
InitServices(true /* profile_is_supervised */);
MockPermissionRequestCreator* creator = new MockPermissionRequestCreator;
@@ -2163,7 +2124,6 @@
}
TEST_F(ExtensionServiceTestSupervised, SupervisedUserInitiatedInstalls) {
- InitNeedCustodianApprovalFieldTrial(true);
InitSupervisedUserInitiatedExtensionInstallFeature(true);
InitServices(true /* profile_is_supervised */);
@@ -2204,7 +2164,6 @@
TEST_F(ExtensionServiceTestSupervised,
UpdateSUInitiatedInstallWithoutPermissionIncrease) {
- InitNeedCustodianApprovalFieldTrial(true);
InitSupervisedUserInitiatedExtensionInstallFeature(true);
InitServices(true /* profile_is_supervised */);
@@ -2243,7 +2202,6 @@
TEST_F(ExtensionServiceTestSupervised,
UpdateSUInitiatedInstallWithPermissionIncrease) {
- InitNeedCustodianApprovalFieldTrial(true);
InitSupervisedUserInitiatedExtensionInstallFeature(true);
InitServices(true /* profile_is_supervised */);
@@ -2289,7 +2247,6 @@
TEST_F(ExtensionServiceTestSupervised,
UpdateSUInitiatedInstallWithPermissionIncreaseApprovalArrivesFirst) {
- InitNeedCustodianApprovalFieldTrial(true);
InitSupervisedUserInitiatedExtensionInstallFeature(true);
InitServices(true /* profile_is_supervised */);
diff --git a/chrome/browser/extensions/extension_util.cc b/chrome/browser/extensions/extension_util.cc
index 3260651a..df5aeb7 100644
--- a/chrome/browser/extensions/extension_util.cc
+++ b/chrome/browser/extensions/extension_util.cc
@@ -44,10 +44,6 @@
namespace util {
namespace {
-
-const char kSupervisedUserExtensionPermissionIncreaseFieldTrialName[] =
- "SupervisedUserExtensionPermissionIncrease";
-
// The entry into the prefs used to flag an extension as installed by custodian.
// It is relevant only for supervised users.
const char kWasInstalledByCustodianPrefName[] = "was_installed_by_custodian";
@@ -356,17 +352,5 @@
profile->IsSupervised();
}
-bool NeedCustodianApprovalForPermissionIncrease(const Profile* profile) {
- if (!profile->IsSupervised())
- return false;
- // Query the trial group name first, to make sure it's properly initialized.
- base::FieldTrialList::FindFullName(
- kSupervisedUserExtensionPermissionIncreaseFieldTrialName);
- std::string value = variations::GetVariationParamValue(
- kSupervisedUserExtensionPermissionIncreaseFieldTrialName,
- profile->IsChild() ? "child_account" : "legacy_supervised_user");
- return value == "true";
-}
-
} // namespace util
} // namespace extensions
diff --git a/chrome/browser/extensions/extension_util.h b/chrome/browser/extensions/extension_util.h
index 0790df2..9d99cb27 100644
--- a/chrome/browser/extensions/extension_util.h
+++ b/chrome/browser/extensions/extension_util.h
@@ -122,10 +122,6 @@
// Returns true for custodian-installed extensions in a supervised profile.
bool IsExtensionSupervised(const Extension* extension, Profile* profile);
-// Returns true if supervised users need approval from their custodian for
-// approving escalated permissions on updated extensions.
-bool NeedCustodianApprovalForPermissionIncrease(const Profile* profile);
-
} // namespace util
} // namespace extensions