Add support to Google Update wrappers for the "automatic updates only" group policy setting.

BUG=251972

Review URL: https://chromiumcodereview.appspot.com/17261014

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207766 0039d316-1c4b-4281-b951-d872f2087c98
parent 09c6050a
......@@ -8739,6 +8739,9 @@ The following plug-in is unresponsive: <ph name="PLUGIN_NAME">$1
<message name="IDS_UPGRADE_DISABLED_BY_POLICY" desc="Status label: Upgrades disabled by policy">
Updates are disabled by the administrator
</message>
<message name="IDS_UPGRADE_DISABLED_BY_POLICY_MANUAL" desc="Status label: Manual upgrades disabled by policy, automatic upgrades ok">
Manual updates are disabled by the administrator. Automatic updates are enabled.
</message>
<message name="IDS_REPORT_AN_ISSUE" desc="Text of the button which allows the user to report an issue with Chrome.">
Report an issue
</message>
......
......@@ -60,10 +60,15 @@ GoogleUpdateErrorCode CanUpdateCurrentChrome(
!InstallUtil::IsPerUserInstall(chrome_exe_path.value().c_str()));
DCHECK(!app_guid.empty());
if (GoogleUpdateSettings::GetAppUpdatePolicy(app_guid, NULL) ==
GoogleUpdateSettings::UPDATES_DISABLED)
GoogleUpdateSettings::UpdatePolicy update_policy =
GoogleUpdateSettings::GetAppUpdatePolicy(app_guid, NULL);
if (update_policy == GoogleUpdateSettings::UPDATES_DISABLED)
return GOOGLE_UPDATE_DISABLED_BY_POLICY;
if (update_policy == GoogleUpdateSettings::AUTO_UPDATES_ONLY)
return GOOGLE_UPDATE_DISABLED_BY_POLICY_AUTO_ONLY;
return GOOGLE_UPDATE_NO_ERROR;
#endif
}
......
......@@ -56,8 +56,12 @@ enum GoogleUpdateErrorCode {
// An error occurred while upgrading (or while checking for update).
// Check the Google Update log in %TEMP% for more details.
GOOGLE_UPDATE_ERROR_UPDATING,
// Updates can not be downloaded because the administrator has disabled them.
// Updates can not be downloaded because the administrator has disabled all
// types of updating.
GOOGLE_UPDATE_DISABLED_BY_POLICY,
// Updates can not be downloaded because the administrator has disabled
// manual (on-demand) updates. Automatic background updates are allowed.
GOOGLE_UPDATE_DISABLED_BY_POLICY_AUTO_ONLY,
};
// The GoogleUpdateStatusListener interface is used by components to receive
......
......@@ -214,13 +214,17 @@ void VersionUpdaterWin::UpdateStatus(GoogleUpdateUpgradeResult result,
case UPGRADE_ERROR: {
content::RecordAction(UserMetricsAction("UpgradeCheck_Error"));
status = FAILED;
if (error_code != GOOGLE_UPDATE_DISABLED_BY_POLICY) {
if (error_code == GOOGLE_UPDATE_DISABLED_BY_POLICY) {
message =
l10n_util::GetStringFUTF16Int(IDS_UPGRADE_ERROR, error_code);
l10n_util::GetStringUTF16(IDS_UPGRADE_DISABLED_BY_POLICY);
} else if (error_code == GOOGLE_UPDATE_DISABLED_BY_POLICY_AUTO_ONLY) {
message =
l10n_util::GetStringUTF16(IDS_UPGRADE_DISABLED_BY_POLICY_MANUAL);
} else {
message =
l10n_util::GetStringUTF16(IDS_UPGRADE_DISABLED_BY_POLICY);
l10n_util::GetStringFUTF16Int(IDS_UPGRADE_ERROR, error_code);
}
if (!error_message.empty()) {
message +=
l10n_util::GetStringFUTF16(IDS_ABOUT_BOX_ERROR_DURING_UPDATE_CHECK,
......
......@@ -147,6 +147,7 @@ bool GetUpdatePolicyFromDword(
case GoogleUpdateSettings::UPDATES_DISABLED:
case GoogleUpdateSettings::AUTOMATIC_UPDATES:
case GoogleUpdateSettings::MANUAL_UPDATES_ONLY:
case GoogleUpdateSettings::AUTO_UPDATES_ONLY:
*update_policy = static_cast<GoogleUpdateSettings::UpdatePolicy>(value);
return true;
default:
......
......@@ -30,6 +30,7 @@ class GoogleUpdateSettings {
UPDATES_DISABLED = 0,
AUTOMATIC_UPDATES = 1,
MANUAL_UPDATES_ONLY = 2,
AUTO_UPDATES_ONLY = 3,
};
// Defines product data that is tracked/used by Google Update.
......
......@@ -544,12 +544,22 @@ TEST_F(GoogleUpdateSettingsTest, GetAppUpdatePolicyDefaultOverride) {
&is_overridden));
EXPECT_FALSE(is_overridden);
// The default policy should be in force for bogus values.
EXPECT_EQ(ERROR_SUCCESS,
RegKey(HKEY_LOCAL_MACHINE, kGoogleUpdatePoliciesKey,
KEY_SET_VALUE).WriteValue(kGoogleUpdateUpdateDefault,
static_cast<DWORD>(3)));
is_overridden = true;
EXPECT_EQ(GoogleUpdateSettings::AUTO_UPDATES_ONLY,
GoogleUpdateSettings::GetAppUpdatePolicy(kTestProductGuid,
&is_overridden));
EXPECT_FALSE(is_overridden);
// The default policy should be in force for bogus values.
EXPECT_EQ(ERROR_SUCCESS,
RegKey(HKEY_LOCAL_MACHINE, kGoogleUpdatePoliciesKey,
KEY_SET_VALUE).WriteValue(kGoogleUpdateUpdateDefault,
static_cast<DWORD>(4)));
is_overridden = true;
EXPECT_EQ(kDefaultUpdatePolicy,
GoogleUpdateSettings::GetAppUpdatePolicy(kTestProductGuid,
&is_overridden));
......@@ -599,11 +609,21 @@ TEST_F(GoogleUpdateSettingsTest, GetAppUpdatePolicyAppOverride) {
&is_overridden));
EXPECT_TRUE(is_overridden);
// The default policy should be in force for bogus values.
EXPECT_EQ(ERROR_SUCCESS,
RegKey(HKEY_LOCAL_MACHINE, kGoogleUpdatePoliciesKey,
KEY_SET_VALUE).WriteValue(app_policy_value.c_str(),
static_cast<DWORD>(3)));
is_overridden = false;
EXPECT_EQ(GoogleUpdateSettings::AUTO_UPDATES_ONLY,
GoogleUpdateSettings::GetAppUpdatePolicy(kTestProductGuid,
&is_overridden));
EXPECT_TRUE(is_overridden);
// The default policy should be in force for bogus values.
EXPECT_EQ(ERROR_SUCCESS,
RegKey(HKEY_LOCAL_MACHINE, kGoogleUpdatePoliciesKey,
KEY_SET_VALUE).WriteValue(app_policy_value.c_str(),
static_cast<DWORD>(4)));
is_overridden = true;
EXPECT_EQ(GoogleUpdateSettings::UPDATES_DISABLED,
GoogleUpdateSettings::GetAppUpdatePolicy(kTestProductGuid,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment