summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/app/generated_resources.grd3
-rw-r--r--chrome/browser/google/google_update_win.cc9
-rw-r--r--chrome/browser/google/google_update_win.h6
-rw-r--r--chrome/browser/ui/webui/help/version_updater_win.cc10
-rw-r--r--chrome/installer/util/google_update_settings.cc1
-rw-r--r--chrome/installer/util/google_update_settings.h1
-rw-r--r--chrome/installer/util/google_update_settings_unittest.cc24
7 files changed, 46 insertions, 8 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index a314905..12079f1 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -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>
diff --git a/chrome/browser/google/google_update_win.cc b/chrome/browser/google/google_update_win.cc
index 8192412..5b9dd1b 100644
--- a/chrome/browser/google/google_update_win.cc
+++ b/chrome/browser/google/google_update_win.cc
@@ -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
}
diff --git a/chrome/browser/google/google_update_win.h b/chrome/browser/google/google_update_win.h
index d9b8951..06e5fe2 100644
--- a/chrome/browser/google/google_update_win.h
+++ b/chrome/browser/google/google_update_win.h
@@ -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
diff --git a/chrome/browser/ui/webui/help/version_updater_win.cc b/chrome/browser/ui/webui/help/version_updater_win.cc
index 59482d2..3d1a7ad 100644
--- a/chrome/browser/ui/webui/help/version_updater_win.cc
+++ b/chrome/browser/ui/webui/help/version_updater_win.cc
@@ -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,
diff --git a/chrome/installer/util/google_update_settings.cc b/chrome/installer/util/google_update_settings.cc
index 3b985b2..338d499 100644
--- a/chrome/installer/util/google_update_settings.cc
+++ b/chrome/installer/util/google_update_settings.cc
@@ -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:
diff --git a/chrome/installer/util/google_update_settings.h b/chrome/installer/util/google_update_settings.h
index 7ca9f7c..47b6f36 100644
--- a/chrome/installer/util/google_update_settings.h
+++ b/chrome/installer/util/google_update_settings.h
@@ -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.
diff --git a/chrome/installer/util/google_update_settings_unittest.cc b/chrome/installer/util/google_update_settings_unittest.cc
index 4b665b4..17d64a6 100644
--- a/chrome/installer/util/google_update_settings_unittest.cc
+++ b/chrome/installer/util/google_update_settings_unittest.cc
@@ -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,