Chromium Code Reviews| Index: chrome/browser/first_run/first_run_win.cc |
| diff --git a/chrome/browser/first_run/first_run_win.cc b/chrome/browser/first_run/first_run_win.cc |
| index 0afde7242ecba8686469fae4cb5b6a4a8d04952e..4632564ed346d695777eefa1ef998418abb95bea 100644 |
| --- a/chrome/browser/first_run/first_run_win.cc |
| +++ b/chrome/browser/first_run/first_run_win.cc |
| @@ -22,6 +22,7 @@ |
| #include "base/utf_string_conversions.h" |
| #include "base/win/metro.h" |
| #include "base/win/object_watcher.h" |
| +#include "base/win/registry.h" |
|
grt (UTC plus 2)
2013/01/23 19:02:29
remove this
huangs
2013/01/24 00:08:08
Moot; all Browser-specific changes are now gone.
|
| #include "base/win/windows_version.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/first_run/first_run_import_observer.h" |
| @@ -61,6 +62,10 @@ |
| namespace { |
| +// Taken from google_update_constants.cc. |
|
grt (UTC plus 2)
2013/01/23 19:02:29
remove these
huangs
2013/01/24 00:08:08
Done.
|
| +const wchar_t kRegPathGoogleUpdate[] = L"Software\\Google\\Update"; |
| +const wchar_t kRegEULAAceptedField[] = L"eulaaccepted"; |
| + |
| // Launches the setup exe with the given parameter/value on the command-line. |
| // For non-metro Windows, it waits for its termination, returns its exit code |
| // in |*ret_code|, and returns true if the exit code is valid. |
| @@ -130,22 +135,29 @@ bool GetEULASentinelFilePath(FilePath* path) { |
| return GetSentinelFilePath(installer::kEULASentinelFile, path); |
| } |
| -// Returns true if the EULA is required but has not been accepted by this user. |
| +// Reads HKLM/.../Google/Update/eulaaccepted into |value|. |
| +// Returns true and updates |value| if successful; else |value| is unchanged. |
| +bool GetGoogleUpdateEULAAccepted(DWORD* value) { |
|
grt (UTC plus 2)
2013/01/23 19:02:29
remove this
huangs
2013/01/24 00:08:08
Done.
|
| + base::win::RegKey key(HKEY_LOCAL_MACHINE, kRegPathGoogleUpdate, |
| + KEY_QUERY_VALUE); |
| + return key.ReadValueDW(kRegEULAAceptedField, value) == ERROR_SUCCESS; |
| +} |
| + |
| +// Returns true if the EULA is not required, or has been accepted by this user. |
| // The EULA is considered having been accepted if the user has gotten past |
| // first run in the "other" environment (desktop or metro). |
| -bool IsEULANotAccepted(installer::MasterPreferences* install_prefs) { |
| - bool value = false; |
| - if (install_prefs->GetBool(installer::master_preferences::kRequireEula, |
| - &value) && value) { |
| - FilePath eula_sentinel; |
| - // Be conservative and show the EULA if the path to the sentinel can't be |
| - // determined. |
| - if (!GetEULASentinelFilePath(&eula_sentinel) || |
| - !file_util::PathExists(eula_sentinel)) { |
| - return true; |
| - } |
| +bool IsEULAUnrequiredOrAccepted(installer::MasterPreferences* install_prefs) { |
|
grt (UTC plus 2)
2013/01/23 19:02:29
please either justify this change or revert it and
huangs
2013/01/24 00:08:08
Reverted in this file. In eula_util.cc, decided t
|
| + bool val = false; |
| + // EULA not required if kRequireEula value is absent or false. |
| + if (!install_prefs->GetBool(installer::master_preferences::kRequireEula, &val) |
| + || !val) { |
| + return true; |
| } |
| - return false; |
| + |
| + // Be conservative: problem getting sentinel path means EULA is not accepted. |
| + FilePath eula_sentinel; |
| + return GetEULASentinelFilePath(&eula_sentinel) |
| + && file_util::PathExists(eula_sentinel); |
| } |
| // Writes the EULA to a temporary file, returned in |*eula_path|, and returns |
| @@ -455,7 +467,7 @@ void SetImportPreferencesAndLaunchImport( |
| } |
| bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs) { |
| - if (IsEULANotAccepted(install_prefs)) { |
| + if (!IsEULAUnrequiredOrAccepted(install_prefs)) { |
| // Show the post-installation EULA. This is done by setup.exe and the |
| // result determines if we continue or not. We wait here until the user |
| // dismisses the dialog. |
| @@ -508,4 +520,23 @@ FilePath MasterPrefsPath() { |
| return master_prefs.AppendASCII(installer::kDefaultMasterPrefs); |
| } |
| +bool IsEULAAccepted() { |
| + DWORD google_udpate_eula_accepted = 0; |
| + if (GetGoogleUpdateEULAAccepted(&google_udpate_eula_accepted) |
|
grt (UTC plus 2)
2013/01/23 19:02:29
why are you checking if google update's EULA has b
huangs
2013/01/24 00:08:08
Made the change. Also:
- Return value is HRESULT,
|
| + && !google_udpate_eula_accepted) { |
| + return false; |
| + } |
| + |
| + if (!IsChromeFirstRun()) |
| + return true; |
| + |
| + FilePath master_prefs_path; |
| + scoped_ptr<installer::MasterPreferences> |
| + install_prefs(internal::LoadMasterPrefs(&master_prefs_path)); |
| + if (!install_prefs.get()) |
| + return false; |
| + |
| + return IsEULAUnrequiredOrAccepted(install_prefs.get()); |
| +} |
| + |
| } // namespace first_run |