diff options
-rw-r--r-- | chrome/app/generated_resources.grd | 3 | ||||
-rw-r--r-- | chrome/browser/google/google_update_win.cc | 9 | ||||
-rw-r--r-- | chrome/browser/google/google_update_win.h | 6 | ||||
-rw-r--r-- | chrome/browser/ui/webui/help/version_updater_win.cc | 10 | ||||
-rw-r--r-- | chrome/installer/util/google_update_settings.cc | 1 | ||||
-rw-r--r-- | chrome/installer/util/google_update_settings.h | 1 | ||||
-rw-r--r-- | chrome/installer/util/google_update_settings_unittest.cc | 24 |
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, |