Commit c7731a29 authored by Greg Thompson's avatar Greg Thompson Committed by Commit Bot

Modernize more GoogleUpdateSettings functions.

use install_static in InitChannelInfo, SetEULAConsent, and
{Get,Set}ExperimentLables.

Also:
- changed EULA -> Eula in symbol names in chrome/installer.
- added support for testing both per-user and per-machine installs in
  GCAPIOmahaExperimentTest.

BUG=879568

Change-Id: I7676c7b75a9cb4cd3a85d1ba609d66a71581f05e
Reviewed-on: https://chromium-review.googlesource.com/1215024
Commit-Queue: Greg Thompson <grt@chromium.org>
Reviewed-by: default avatarSamuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590238}
parent 1225db6d
...@@ -74,7 +74,7 @@ bool IsEULANotAccepted(installer::MasterPreferences* install_prefs) { ...@@ -74,7 +74,7 @@ bool IsEULANotAccepted(installer::MasterPreferences* install_prefs) {
base::FilePath eula_sentinel; base::FilePath eula_sentinel;
// Be conservative and show the EULA if the path to the sentinel can't be // Be conservative and show the EULA if the path to the sentinel can't be
// determined. // determined.
if (!InstallUtil::GetEULASentinelFilePath(&eula_sentinel) || if (!InstallUtil::GetEulaSentinelFilePath(&eula_sentinel) ||
!base::PathExists(eula_sentinel)) { !base::PathExists(eula_sentinel)) {
return true; return true;
} }
...@@ -95,9 +95,9 @@ bool WriteEULAtoTempFile(base::FilePath* eula_path) { ...@@ -95,9 +95,9 @@ bool WriteEULAtoTempFile(base::FilePath* eula_path) {
// accepted. // accepted.
bool CreateEULASentinel() { bool CreateEULASentinel() {
base::FilePath eula_sentinel; base::FilePath eula_sentinel;
return InstallUtil::GetEULASentinelFilePath(&eula_sentinel) && return InstallUtil::GetEulaSentinelFilePath(&eula_sentinel) &&
base::CreateDirectory(eula_sentinel.DirName()) && base::CreateDirectory(eula_sentinel.DirName()) &&
base::WriteFile(eula_sentinel, "", 0) != -1; base::WriteFile(eula_sentinel, "", 0) != -1;
} }
} // namespace } // namespace
......
...@@ -73,6 +73,7 @@ test("gcapi_test") { ...@@ -73,6 +73,7 @@ test("gcapi_test") {
":lib", ":lib",
"//base/test:test_support", "//base/test:test_support",
"//chrome/install_static:install_static_util", "//chrome/install_static:install_static_util",
"//chrome/install_static/test:test_support",
"//chrome/installer/util:with_no_strings", "//chrome/installer/util:with_no_strings",
"//components/variations", "//components/variations",
"//testing/gtest", "//testing/gtest",
......
...@@ -9,6 +9,7 @@ include_rules = [ ...@@ -9,6 +9,7 @@ include_rules = [
] ]
specific_include_rules = { specific_include_rules = {
".*_test\.cc": [ ".*_test\.cc": [
"+chrome/install_static/test",
"+chrome/installer/util", "+chrome/installer/util",
] ]
} }
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/test/test_reg_util_win.h" #include "base/test/test_reg_util_win.h"
#include "chrome/install_static/test/scoped_install_details.h"
#include "chrome/installer/gcapi/gcapi.h" #include "chrome/installer/gcapi/gcapi.h"
#include "chrome/installer/util/google_update_constants.h" #include "chrome/installer/util/google_update_constants.h"
#include "chrome/installer/util/google_update_settings.h" #include "chrome/installer/util/google_update_settings.h"
...@@ -19,21 +20,26 @@ using base::ASCIIToUTF16; ...@@ -19,21 +20,26 @@ using base::ASCIIToUTF16;
namespace { namespace {
const wchar_t kBrand[] = L"ABCD"; const wchar_t kBrand[] = L"ABCD";
const uint16_t kUserLevel = GCAPI_INVOKED_STANDARD_SHELL;
const wchar_t kSomeExperiments[] = L"myexp=1|Aug 2;yourexp=2|Sep 5"; const wchar_t kSomeExperiments[] = L"myexp=1|Aug 2;yourexp=2|Sep 5";
const wchar_t kSomeOtherExperiments[] = L"anotherexp=joe|Jun 7 2008"; const wchar_t kSomeOtherExperiments[] = L"anotherexp=joe|Jun 7 2008";
const wchar_t kSomeMoreExperiments[] = L"moreexp=foo|Jul 31 1999"; const wchar_t kSomeMoreExperiments[] = L"moreexp=foo|Jul 31 1999";
class GCAPIOmahaExperimentTest : public ::testing::Test { // The boolean parameter is true for system-level tests, or false for user-level
// tests.
class GCAPIOmahaExperimentTest : public ::testing::TestWithParam<bool> {
protected: protected:
GCAPIOmahaExperimentTest() GCAPIOmahaExperimentTest()
: brand_(kBrand), : system_level_(GetParam()),
shell_mode_(system_level_ ? GCAPI_INVOKED_UAC_ELEVATION
: GCAPI_INVOKED_STANDARD_SHELL),
scoped_install_details_(system_level_),
reactivation_label_(gcapi_internals::GetGCAPIExperimentLabel( reactivation_label_(gcapi_internals::GetGCAPIExperimentLabel(
kBrand, gcapi_internals::kReactivationLabel)), kBrand,
gcapi_internals::kReactivationLabel)),
relaunch_label_(gcapi_internals::GetGCAPIExperimentLabel( relaunch_label_(gcapi_internals::GetGCAPIExperimentLabel(
kBrand, gcapi_internals::kRelaunchLabel)) { kBrand,
} gcapi_internals::kRelaunchLabel)) {}
void SetUp() override { void SetUp() override {
ASSERT_NO_FATAL_FAILURE( ASSERT_NO_FATAL_FAILURE(
...@@ -44,34 +50,37 @@ class GCAPIOmahaExperimentTest : public ::testing::Test { ...@@ -44,34 +50,37 @@ class GCAPIOmahaExperimentTest : public ::testing::Test {
void VerifyExperimentLabels(const base::string16& expected_labels) { void VerifyExperimentLabels(const base::string16& expected_labels) {
base::string16 actual_labels; base::string16 actual_labels;
EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(false, EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(&actual_labels));
&actual_labels));
EXPECT_EQ(expected_labels, actual_labels); EXPECT_EQ(expected_labels, actual_labels);
} }
int shell_mode() const { return shell_mode_; }
const bool system_level_;
const int shell_mode_;
const install_static::ScopedInstallDetails scoped_install_details_;
registry_util::RegistryOverrideManager override_manager_; registry_util::RegistryOverrideManager override_manager_;
base::string16 brand_;
base::string16 reactivation_label_; base::string16 reactivation_label_;
base::string16 relaunch_label_; base::string16 relaunch_label_;
}; };
TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelFromEmptyExperiments) { TEST_P(GCAPIOmahaExperimentTest, SetReactivationLabelFromEmptyExperiments) {
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
VerifyExperimentLabels(reactivation_label_); VerifyExperimentLabels(reactivation_label_);
} }
// Test the relaunch label once; all other tests go more in depth, but since // Test the relaunch label once; all other tests go more in depth, but since
// both labels use the same logic underneath there is no need to test both in // both labels use the same logic underneath there is no need to test both in
// depth. // depth.
TEST_F(GCAPIOmahaExperimentTest, SetRelaunchLabelFromEmptyExperiments) { TEST_P(GCAPIOmahaExperimentTest, SetRelaunchLabelFromEmptyExperiments) {
ASSERT_TRUE(SetRelaunchExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetRelaunchExperimentLabels(kBrand, shell_mode()));
VerifyExperimentLabels(relaunch_label_); VerifyExperimentLabels(relaunch_label_);
} }
TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) { TEST_P(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) {
GoogleUpdateSettings::SetExperimentLabels(false, kSomeExperiments); GoogleUpdateSettings::SetExperimentLabels(kSomeExperiments);
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
base::string16 expected_labels(kSomeExperiments); base::string16 expected_labels(kSomeExperiments);
expected_labels += variations::kExperimentLabelSeparator; expected_labels += variations::kExperimentLabelSeparator;
...@@ -79,16 +88,16 @@ TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) { ...@@ -79,16 +88,16 @@ TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) {
VerifyExperimentLabels(expected_labels); VerifyExperimentLabels(expected_labels);
} }
TEST_F(GCAPIOmahaExperimentTest, TEST_P(GCAPIOmahaExperimentTest,
SetReactivationLabelWithExistingIdenticalExperiment) { SetReactivationLabelWithExistingIdenticalExperiment) {
base::string16 previous_labels(kSomeExperiments); base::string16 previous_labels(kSomeExperiments);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
previous_labels.append(reactivation_label_); previous_labels.append(reactivation_label_);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
previous_labels.append(kSomeOtherExperiments); previous_labels.append(kSomeOtherExperiments);
GoogleUpdateSettings::SetExperimentLabels(false, previous_labels); GoogleUpdateSettings::SetExperimentLabels(previous_labels);
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
base::string16 expected_labels(kSomeExperiments); base::string16 expected_labels(kSomeExperiments);
expected_labels += variations::kExperimentLabelSeparator; expected_labels += variations::kExperimentLabelSeparator;
...@@ -98,14 +107,14 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -98,14 +107,14 @@ TEST_F(GCAPIOmahaExperimentTest,
VerifyExperimentLabels(expected_labels); VerifyExperimentLabels(expected_labels);
} }
TEST_F(GCAPIOmahaExperimentTest, TEST_P(GCAPIOmahaExperimentTest,
SetReactivationLabelWithExistingIdenticalAtBeginning) { SetReactivationLabelWithExistingIdenticalAtBeginning) {
base::string16 previous_labels(reactivation_label_); base::string16 previous_labels(reactivation_label_);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
previous_labels.append(kSomeExperiments); previous_labels.append(kSomeExperiments);
GoogleUpdateSettings::SetExperimentLabels(false, previous_labels); GoogleUpdateSettings::SetExperimentLabels(previous_labels);
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
base::string16 expected_labels(kSomeExperiments); base::string16 expected_labels(kSomeExperiments);
expected_labels += variations::kExperimentLabelSeparator; expected_labels += variations::kExperimentLabelSeparator;
...@@ -113,7 +122,7 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -113,7 +122,7 @@ TEST_F(GCAPIOmahaExperimentTest,
VerifyExperimentLabels(expected_labels); VerifyExperimentLabels(expected_labels);
} }
TEST_F(GCAPIOmahaExperimentTest, TEST_P(GCAPIOmahaExperimentTest,
SetReactivationLabelWithFakeMatchInAnExperiment) { SetReactivationLabelWithFakeMatchInAnExperiment) {
base::string16 previous_labels(kSomeExperiments); base::string16 previous_labels(kSomeExperiments);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
...@@ -127,9 +136,9 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -127,9 +136,9 @@ TEST_F(GCAPIOmahaExperimentTest,
previous_labels.append(reactivation_label_); previous_labels.append(reactivation_label_);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
previous_labels.append(kSomeMoreExperiments); previous_labels.append(kSomeMoreExperiments);
GoogleUpdateSettings::SetExperimentLabels(false, previous_labels); GoogleUpdateSettings::SetExperimentLabels(previous_labels);
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
base::string16 expected_labels(kSomeExperiments); base::string16 expected_labels(kSomeExperiments);
expected_labels += variations::kExperimentLabelSeparator; expected_labels += variations::kExperimentLabelSeparator;
...@@ -144,7 +153,7 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -144,7 +153,7 @@ TEST_F(GCAPIOmahaExperimentTest,
VerifyExperimentLabels(expected_labels); VerifyExperimentLabels(expected_labels);
} }
TEST_F(GCAPIOmahaExperimentTest, TEST_P(GCAPIOmahaExperimentTest,
SetReactivationLabelWithFakeMatchInAnExperimentAndNoRealMatch) { SetReactivationLabelWithFakeMatchInAnExperimentAndNoRealMatch) {
base::string16 previous_labels(kSomeExperiments); base::string16 previous_labels(kSomeExperiments);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
...@@ -153,9 +162,9 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -153,9 +162,9 @@ TEST_F(GCAPIOmahaExperimentTest,
previous_labels.append(reactivation_label_); previous_labels.append(reactivation_label_);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
previous_labels.append(kSomeOtherExperiments); previous_labels.append(kSomeOtherExperiments);
GoogleUpdateSettings::SetExperimentLabels(false, previous_labels); GoogleUpdateSettings::SetExperimentLabels(previous_labels);
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
base::string16 expected_labels(kSomeExperiments); base::string16 expected_labels(kSomeExperiments);
expected_labels += variations::kExperimentLabelSeparator; expected_labels += variations::kExperimentLabelSeparator;
...@@ -168,7 +177,7 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -168,7 +177,7 @@ TEST_F(GCAPIOmahaExperimentTest,
VerifyExperimentLabels(expected_labels); VerifyExperimentLabels(expected_labels);
} }
TEST_F(GCAPIOmahaExperimentTest, TEST_P(GCAPIOmahaExperimentTest,
SetReactivationLabelWithExistingEntryWithLabelAsPrefix) { SetReactivationLabelWithExistingEntryWithLabelAsPrefix) {
base::string16 previous_labels(kSomeExperiments); base::string16 previous_labels(kSomeExperiments);
previous_labels += variations::kExperimentLabelSeparator; previous_labels += variations::kExperimentLabelSeparator;
...@@ -176,9 +185,9 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -176,9 +185,9 @@ TEST_F(GCAPIOmahaExperimentTest,
previous_labels.append(gcapi_internals::kReactivationLabel); previous_labels.append(gcapi_internals::kReactivationLabel);
// Shouldn't match deletion criteria. // Shouldn't match deletion criteria.
previous_labels.append(kSomeOtherExperiments); previous_labels.append(kSomeOtherExperiments);
GoogleUpdateSettings::SetExperimentLabels(false, previous_labels); GoogleUpdateSettings::SetExperimentLabels(previous_labels);
ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel)); ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, shell_mode()));
base::string16 expected_labels(kSomeExperiments); base::string16 expected_labels(kSomeExperiments);
expected_labels += variations::kExperimentLabelSeparator; expected_labels += variations::kExperimentLabelSeparator;
...@@ -189,4 +198,6 @@ TEST_F(GCAPIOmahaExperimentTest, ...@@ -189,4 +198,6 @@ TEST_F(GCAPIOmahaExperimentTest,
VerifyExperimentLabels(expected_labels); VerifyExperimentLabels(expected_labels);
} }
INSTANTIATE_TEST_CASE_P(, GCAPIOmahaExperimentTest, ::testing::Bool());
} // namespace } // namespace
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "base/at_exit.h" #include "base/at_exit.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "chrome/install_static/test/scoped_install_details.h"
#include "chrome/installer/gcapi/gcapi.h" #include "chrome/installer/gcapi/gcapi.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -63,6 +64,7 @@ const char kManualLaunchTests[] = "launch-chrome"; ...@@ -63,6 +64,7 @@ const char kManualLaunchTests[] = "launch-chrome";
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
base::AtExitManager exit_manager; base::AtExitManager exit_manager;
base::CommandLine::Init(argc, argv); base::CommandLine::Init(argc, argv);
install_static::ScopedInstallDetails install_details;
testing::InitGoogleTest(&argc, argv); testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS(); RUN_ALL_TESTS();
......
...@@ -691,7 +691,7 @@ installer::InstallStatus InstallProducts( ...@@ -691,7 +691,7 @@ installer::InstallStatus InstallProducts(
return install_status; return install_status;
} }
installer::InstallStatus ShowEULADialog(const base::string16& inner_frame) { installer::InstallStatus ShowEulaDialog(const base::string16& inner_frame) {
VLOG(1) << "About to show EULA"; VLOG(1) << "About to show EULA";
base::string16 eula_path = installer::GetLocalizedEulaResource(); base::string16 eula_path = installer::GetLocalizedEulaResource();
if (eula_path.empty()) { if (eula_path.empty()) {
...@@ -716,9 +716,9 @@ installer::InstallStatus ShowEULADialog(const base::string16& inner_frame) { ...@@ -716,9 +716,9 @@ installer::InstallStatus ShowEULADialog(const base::string16& inner_frame) {
// Creates the sentinel indicating that the EULA was required and has been // Creates the sentinel indicating that the EULA was required and has been
// accepted. // accepted.
bool CreateEULASentinel() { bool CreateEulaSentinel() {
base::FilePath eula_sentinel; base::FilePath eula_sentinel;
if (!InstallUtil::GetEULASentinelFilePath(&eula_sentinel)) if (!InstallUtil::GetEulaSentinelFilePath(&eula_sentinel))
return false; return false;
return (base::CreateDirectory(eula_sentinel.DirName()) && return (base::CreateDirectory(eula_sentinel.DirName()) &&
...@@ -850,13 +850,11 @@ bool HandleNonInstallCmdLineOptions(const base::FilePath& setup_exe, ...@@ -850,13 +850,11 @@ bool HandleNonInstallCmdLineOptions(const base::FilePath& setup_exe,
// then the dialog is shown and regardless of the outcome setup exits here. // then the dialog is shown and regardless of the outcome setup exits here.
base::string16 inner_frame = base::string16 inner_frame =
cmd_line.GetSwitchValueNative(installer::switches::kShowEula); cmd_line.GetSwitchValueNative(installer::switches::kShowEula);
*exit_code = ShowEULADialog(inner_frame); *exit_code = ShowEulaDialog(inner_frame);
if (installer::EULA_REJECTED != *exit_code) { if (installer::EULA_REJECTED != *exit_code) {
if (GoogleUpdateSettings::SetEULAConsent( if (GoogleUpdateSettings::SetEulaConsent(*original_state, true))
*original_state, BrowserDistribution::GetDistribution(), true)) { CreateEulaSentinel();
CreateEULASentinel();
}
} }
} else if (cmd_line.HasSwitch(installer::switches::kConfigureUserSettings)) { } else if (cmd_line.HasSwitch(installer::switches::kConfigureUserSettings)) {
// NOTE: Should the work done here, on kConfigureUserSettings, change: // NOTE: Should the work done here, on kConfigureUserSettings, change:
......
...@@ -383,10 +383,8 @@ base::string16 ExperimentStorage::EncodeMetrics( ...@@ -383,10 +383,8 @@ base::string16 ExperimentStorage::EncodeMetrics(
bool ExperimentStorage::LoadMetricsUnsafe(ExperimentMetrics* metrics) { bool ExperimentStorage::LoadMetricsUnsafe(ExperimentMetrics* metrics) {
base::string16 value; base::string16 value;
if (!GoogleUpdateSettings::ReadExperimentLabels( if (!GoogleUpdateSettings::ReadExperimentLabels(&value))
install_static::IsSystemInstall(), &value)) {
return false; return false;
}
ExperimentLabels experiment_labels(value); ExperimentLabels experiment_labels(value);
base::StringPiece16 encoded_metrics = base::StringPiece16 encoded_metrics =
...@@ -401,18 +399,15 @@ bool ExperimentStorage::LoadMetricsUnsafe(ExperimentMetrics* metrics) { ...@@ -401,18 +399,15 @@ bool ExperimentStorage::LoadMetricsUnsafe(ExperimentMetrics* metrics) {
bool ExperimentStorage::StoreMetricsUnsafe(const ExperimentMetrics& metrics) { bool ExperimentStorage::StoreMetricsUnsafe(const ExperimentMetrics& metrics) {
base::string16 value; base::string16 value;
if (!GoogleUpdateSettings::ReadExperimentLabels( if (!GoogleUpdateSettings::ReadExperimentLabels(&value))
install_static::IsSystemInstall(), &value)) {
return false; return false;
}
ExperimentLabels experiment_labels(value); ExperimentLabels experiment_labels(value);
experiment_labels.SetValueForLabel(kExperimentLabelName, experiment_labels.SetValueForLabel(kExperimentLabelName,
EncodeMetrics(metrics), EncodeMetrics(metrics),
base::TimeDelta::FromDays(182)); base::TimeDelta::FromDays(182));
return GoogleUpdateSettings::SetExperimentLabels( return GoogleUpdateSettings::SetExperimentLabels(experiment_labels.value());
install_static::IsSystemInstall(), experiment_labels.value());
} }
bool ExperimentStorage::LoadStateUnsafe(Experiment* experiment) { bool ExperimentStorage::LoadStateUnsafe(Experiment* experiment) {
......
...@@ -34,7 +34,7 @@ const wchar_t kRegClientField[] = L"client"; ...@@ -34,7 +34,7 @@ const wchar_t kRegClientField[] = L"client";
const wchar_t kRegCommandLineField[] = L"CommandLine"; const wchar_t kRegCommandLineField[] = L"CommandLine";
const wchar_t kRegCriticalVersionField[] = L"cpv"; const wchar_t kRegCriticalVersionField[] = L"cpv";
const wchar_t kRegDidRunField[] = L"dr"; const wchar_t kRegDidRunField[] = L"dr";
const wchar_t kRegEULAAceptedField[] = L"eulaaccepted"; const wchar_t kRegEulaAceptedField[] = L"eulaaccepted";
const wchar_t kRegGoogleUpdateVersion[] = L"version"; const wchar_t kRegGoogleUpdateVersion[] = L"version";
const wchar_t kRegInstallerProgress[] = L"InstallerProgress"; const wchar_t kRegInstallerProgress[] = L"InstallerProgress";
const wchar_t kRegLangField[] = L"lang"; const wchar_t kRegLangField[] = L"lang";
......
...@@ -50,7 +50,7 @@ extern const wchar_t kRegClientField[]; ...@@ -50,7 +50,7 @@ extern const wchar_t kRegClientField[];
extern const wchar_t kRegCommandLineField[]; extern const wchar_t kRegCommandLineField[];
extern const wchar_t kRegCriticalVersionField[]; extern const wchar_t kRegCriticalVersionField[];
extern const wchar_t kRegDidRunField[]; extern const wchar_t kRegDidRunField[];
extern const wchar_t kRegEULAAceptedField[]; extern const wchar_t kRegEulaAceptedField[];
extern const wchar_t kRegGoogleUpdateVersion[]; extern const wchar_t kRegGoogleUpdateVersion[];
extern const wchar_t kRegInstallerProgress[]; extern const wchar_t kRegInstallerProgress[];
extern const wchar_t kRegLangField[]; extern const wchar_t kRegLangField[];
......
...@@ -191,8 +191,7 @@ bool RemoveUserGoogleUpdateStrKey(const wchar_t* const name) { ...@@ -191,8 +191,7 @@ bool RemoveUserGoogleUpdateStrKey(const wchar_t* const name) {
bool InitChannelInfo(bool system_install, bool InitChannelInfo(bool system_install,
installer::ChannelInfo* channel_info) { installer::ChannelInfo* channel_info) {
HKEY root_key = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; HKEY root_key = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
BrowserDistribution* dist = BrowserDistribution::GetDistribution(); RegKey key(root_key, install_static::GetClientStateKeyPath().c_str(),
RegKey key(root_key, dist->GetStateKey().c_str(),
KEY_QUERY_VALUE | KEY_WOW64_32KEY); KEY_QUERY_VALUE | KEY_WOW64_32KEY);
return channel_info->Initialize(key); return channel_info->Initialize(key);
} }
...@@ -368,11 +367,9 @@ void GoogleUpdateSettings::StoreMetricsClientInfo( ...@@ -368,11 +367,9 @@ void GoogleUpdateSettings::StoreMetricsClientInfo(
} }
// EULA consent is only relevant for system-level installs. // EULA consent is only relevant for system-level installs.
bool GoogleUpdateSettings::SetEULAConsent( bool GoogleUpdateSettings::SetEulaConsent(
const InstallationState& machine_state, const InstallationState& machine_state,
BrowserDistribution* dist,
bool consented) { bool consented) {
DCHECK(dist);
const DWORD eula_accepted = consented ? 1 : 0; const DWORD eula_accepted = consented ? 1 : 0;
const REGSAM kAccess = KEY_SET_VALUE | KEY_WOW64_32KEY; const REGSAM kAccess = KEY_SET_VALUE | KEY_WOW64_32KEY;
RegKey key; RegKey key;
...@@ -381,7 +378,7 @@ bool GoogleUpdateSettings::SetEULAConsent( ...@@ -381,7 +378,7 @@ bool GoogleUpdateSettings::SetEULAConsent(
return key.Create(HKEY_LOCAL_MACHINE, return key.Create(HKEY_LOCAL_MACHINE,
install_static::GetClientStateMediumKeyPath().c_str(), install_static::GetClientStateMediumKeyPath().c_str(),
kAccess) == ERROR_SUCCESS && kAccess) == ERROR_SUCCESS &&
key.WriteValue(google_update::kRegEULAAceptedField, eula_accepted) == key.WriteValue(google_update::kRegEulaAceptedField, eula_accepted) ==
ERROR_SUCCESS; ERROR_SUCCESS;
} }
...@@ -855,16 +852,13 @@ bool GoogleUpdateSettings::GetUpdateDetail(ProductData* data) { ...@@ -855,16 +852,13 @@ bool GoogleUpdateSettings::GetUpdateDetail(ProductData* data) {
} }
bool GoogleUpdateSettings::SetExperimentLabels( bool GoogleUpdateSettings::SetExperimentLabels(
bool system_install,
const base::string16& experiment_labels) { const base::string16& experiment_labels) {
HKEY reg_root = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; const bool system_install = install_static::IsSystemInstall();
// Use the browser distribution and install level to write to the correct const HKEY reg_root = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
// client state/app guid key. // Use install level to write to the correct client state/app guid key.
bool success = false;
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
base::string16 client_state_path( base::string16 client_state_path(
system_install ? install_static::GetClientStateMediumKeyPath() system_install ? install_static::GetClientStateMediumKeyPath()
: dist->GetStateKey()); : install_static::GetClientStateKeyPath());
RegKey client_state(reg_root, client_state_path.c_str(), RegKey client_state(reg_root, client_state_path.c_str(),
KEY_SET_VALUE | KEY_WOW64_32KEY); KEY_SET_VALUE | KEY_WOW64_32KEY);
// It is possible that the registry keys do not yet exist or have not yet // It is possible that the registry keys do not yet exist or have not yet
...@@ -872,25 +866,20 @@ bool GoogleUpdateSettings::SetExperimentLabels( ...@@ -872,25 +866,20 @@ bool GoogleUpdateSettings::SetExperimentLabels(
if (!client_state.Valid()) if (!client_state.Valid())
return false; return false;
if (experiment_labels.empty()) { if (experiment_labels.empty()) {
success = client_state.DeleteValue(google_update::kExperimentLabels) == return client_state.DeleteValue(google_update::kExperimentLabels) ==
ERROR_SUCCESS; ERROR_SUCCESS;
} else {
success =
client_state.WriteValue(google_update::kExperimentLabels,
experiment_labels.c_str()) == ERROR_SUCCESS;
} }
return client_state.WriteValue(google_update::kExperimentLabels,
return success; experiment_labels.c_str()) == ERROR_SUCCESS;
} }
bool GoogleUpdateSettings::ReadExperimentLabels( bool GoogleUpdateSettings::ReadExperimentLabels(
bool system_install,
base::string16* experiment_labels) { base::string16* experiment_labels) {
HKEY reg_root = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; const bool system_install = install_static::IsSystemInstall();
BrowserDistribution* dist = BrowserDistribution::GetDistribution(); const HKEY reg_root = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
base::string16 client_state_path( base::string16 client_state_path(
system_install ? install_static::GetClientStateMediumKeyPath() system_install ? install_static::GetClientStateMediumKeyPath()
: dist->GetStateKey()); : install_static::GetClientStateKeyPath());
RegKey client_state; RegKey client_state;
LONG result = client_state.Open( LONG result = client_state.Open(
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include "components/metrics/client_info.h" #include "components/metrics/client_info.h"
class AppRegistrationData; class AppRegistrationData;
class BrowserDistribution;
namespace installer { namespace installer {
class ChannelInfo; class ChannelInfo;
...@@ -133,8 +132,7 @@ class GoogleUpdateSettings { ...@@ -133,8 +132,7 @@ class GoogleUpdateSettings {
// Sets the machine-wide EULA consented flag required on OEM installs. // Sets the machine-wide EULA consented flag required on OEM installs.
// Returns false if the setting could not be recorded. // Returns false if the setting could not be recorded.
static bool SetEULAConsent(const installer::InstallationState& machine_state, static bool SetEulaConsent(const installer::InstallationState& machine_state,
BrowserDistribution* dist,
bool consented); bool consented);
// Returns the last time chrome was run in days. It uses a recorded value // Returns the last time chrome was run in days. It uses a recorded value
...@@ -300,26 +298,23 @@ class GoogleUpdateSettings { ...@@ -300,26 +298,23 @@ class GoogleUpdateSettings {
static bool GetUpdateDetailForGoogleUpdate(ProductData* data); static bool GetUpdateDetailForGoogleUpdate(ProductData* data);
// Returns product data for the current product. (Equivalent to calling // Returns product data for the current product. (Equivalent to calling
// GetUpdateDetailForApp with the app guid stored in BrowserDistribution.) // GetUpdateDetailForApp with the current install mode's app guid.)
static bool GetUpdateDetail(ProductData* data); static bool GetUpdateDetail(ProductData* data);
// Sets |experiment_labels| as the Google Update experiment_labels value in // Sets |experiment_labels| as the Google Update experiment_labels value in
// the ClientState key for this Chrome product, if appropriate. If // the ClientState key for this Chrome product, if appropriate. If
// |experiment_labels| is empty, this will delete the value instead. This will // |experiment_labels| is empty, this will delete the value instead. This will
// return true if the label was successfully set (or deleted), false otherwise // return true if the label was successfully set (or deleted), false otherwise
// (even if the label does not need to be set for this particular distribution // (even if the label does not need to be set for this particular brand).
// type). static bool SetExperimentLabels(const base::string16& experiment_labels);
static bool SetExperimentLabels(bool system_install,
const base::string16& experiment_labels);
// Reads the Google Update experiment_labels value in the ClientState key for // Reads the Google Update experiment_labels value in the ClientState key for
// this Chrome product and writes it into |experiment_labels|. If the key or // this Chrome product and writes it into |experiment_labels|. If the key or
// value does not exist, |experiment_labels| will be set to the empty string. // value does not exist, |experiment_labels| will be set to the empty string.
// If this distribution of Chrome does not set the experiment_labels value, // If this brand does not set the experiment_labels value, this will do
// this will do nothing to |experiment_labels|. This will return true if the // nothing to |experiment_labels|. This will return true if the label did not
// label did not exist, or was successfully read. // exist, or was successfully read.
static bool ReadExperimentLabels(bool system_install, static bool ReadExperimentLabels(base::string16* experiment_labels);
base::string16* experiment_labels);
private: private:
DISALLOW_IMPLICIT_CONSTRUCTORS(GoogleUpdateSettings); DISALLOW_IMPLICIT_CONSTRUCTORS(GoogleUpdateSettings);
......
...@@ -70,12 +70,11 @@ class GoogleUpdateSettingsTest : public testing::Test { ...@@ -70,12 +70,11 @@ class GoogleUpdateSettingsTest : public testing::Test {
base::string16 value; base::string16 value;
// Before anything is set, ReadExperimentLabels should succeed but return // Before anything is set, ReadExperimentLabels should succeed but return
// an empty string. // an empty string.
EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels( EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(&value));
install == SYSTEM_INSTALL, &value));
EXPECT_EQ(base::string16(), value); EXPECT_EQ(base::string16(), value);
EXPECT_TRUE(GoogleUpdateSettings::SetExperimentLabels( EXPECT_TRUE(
install == SYSTEM_INSTALL, kTestExperimentLabel)); GoogleUpdateSettings::SetExperimentLabels(kTestExperimentLabel));
// Validate that something is written. Only worry about the label itself. // Validate that something is written. Only worry about the label itself.
RegKey key; RegKey key;
...@@ -92,21 +91,18 @@ class GoogleUpdateSettingsTest : public testing::Test { ...@@ -92,21 +91,18 @@ class GoogleUpdateSettingsTest : public testing::Test {
EXPECT_EQ(ERROR_SUCCESS, EXPECT_EQ(ERROR_SUCCESS,
key.ReadValue(google_update::kExperimentLabels, &value)); key.ReadValue(google_update::kExperimentLabels, &value));
EXPECT_EQ(kTestExperimentLabel, value); EXPECT_EQ(kTestExperimentLabel, value);
EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels( EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(&value));
install == SYSTEM_INSTALL, &value));
EXPECT_EQ(kTestExperimentLabel, value); EXPECT_EQ(kTestExperimentLabel, value);
key.Close(); key.Close();
// Now that the label is set, test the delete functionality. An empty label // Now that the label is set, test the delete functionality. An empty label
// should result in deleting the value. // should result in deleting the value.
EXPECT_TRUE(GoogleUpdateSettings::SetExperimentLabels( EXPECT_TRUE(GoogleUpdateSettings::SetExperimentLabels(base::string16()));
install == SYSTEM_INSTALL, base::string16()));
EXPECT_EQ(ERROR_SUCCESS, EXPECT_EQ(ERROR_SUCCESS,
key.Open(root, state_key.c_str(), KEY_QUERY_VALUE)); key.Open(root, state_key.c_str(), KEY_QUERY_VALUE));
EXPECT_EQ(ERROR_FILE_NOT_FOUND, EXPECT_EQ(ERROR_FILE_NOT_FOUND,
key.ReadValue(google_update::kExperimentLabels, &value)); key.ReadValue(google_update::kExperimentLabels, &value));
EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels( EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(&value));
install == SYSTEM_INSTALL, &value));
EXPECT_EQ(base::string16(), value); EXPECT_EQ(base::string16(), value);
key.Close(); key.Close();
} }
...@@ -408,7 +404,7 @@ TEST_F(GoogleUpdateSettingsTest, UpdateInstallStatusTest) { ...@@ -408,7 +404,7 @@ TEST_F(GoogleUpdateSettingsTest, UpdateInstallStatusTest) {
} }
} }
TEST_F(GoogleUpdateSettingsTest, SetEULAConsent) { TEST_F(GoogleUpdateSettingsTest, SetEulaConsent) {
using installer::FakeInstallationState; using installer::FakeInstallationState;
const bool system_level = true; const bool system_level = true;
...@@ -420,17 +416,15 @@ TEST_F(GoogleUpdateSettingsTest, SetEULAConsent) { ...@@ -420,17 +416,15 @@ TEST_F(GoogleUpdateSettingsTest, SetEULAConsent) {
RegKey key; RegKey key;
DWORD value; DWORD value;
BrowserDistribution* chrome = BrowserDistribution::GetDistribution();
// eulaconsent is set on the product. // eulaconsent is set on the product.
EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(machine_state, chrome, EXPECT_TRUE(GoogleUpdateSettings::SetEulaConsent(machine_state, true));
true));
EXPECT_EQ(ERROR_SUCCESS, EXPECT_EQ(ERROR_SUCCESS,
key.Open(HKEY_LOCAL_MACHINE, key.Open(HKEY_LOCAL_MACHINE,
install_static::GetClientStateMediumKeyPath().c_str(), install_static::GetClientStateMediumKeyPath().c_str(),
KEY_QUERY_VALUE)); KEY_QUERY_VALUE));
EXPECT_EQ(ERROR_SUCCESS, EXPECT_EQ(ERROR_SUCCESS,
key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); key.ReadValueDW(google_update::kRegEulaAceptedField, &value));
EXPECT_EQ(1U, value); EXPECT_EQ(1U, value);
} }
......
...@@ -407,11 +407,11 @@ base::string16 InstallUtil::GetToastActivatorRegistryPath() { ...@@ -407,11 +407,11 @@ base::string16 InstallUtil::GetToastActivatorRegistryPath() {
} }
// static // static
bool InstallUtil::GetEULASentinelFilePath(base::FilePath* path) { bool InstallUtil::GetEulaSentinelFilePath(base::FilePath* path) {
base::FilePath user_data_dir; base::FilePath user_data_dir;
if (!base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) if (!base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir))
return false; return false;
*path = user_data_dir.Append(installer::kEULASentinelFile); *path = user_data_dir.Append(installer::kEulaSentinelFile);
return true; return true;
} }
......
...@@ -86,7 +86,7 @@ class InstallUtil { ...@@ -86,7 +86,7 @@ class InstallUtil {
static base::string16 GetToastActivatorRegistryPath(); static base::string16 GetToastActivatorRegistryPath();
// Populates |path| with EULA sentinel file path. Returns false on error. // Populates |path| with EULA sentinel file path. Returns false on error.
static bool GetEULASentinelFilePath(base::FilePath* path); static bool GetEulaSentinelFilePath(base::FilePath* path);
// Deletes the registry key at path key_path under the key given by root_key. // Deletes the registry key at path key_path under the key given by root_key.
static bool DeleteRegistryKey(HKEY root_key, static bool DeleteRegistryKey(HKEY root_key,
......
...@@ -111,7 +111,7 @@ bool ProductState::Initialize(bool system_install) { ...@@ -111,7 +111,7 @@ bool ProductState::Initialize(bool system_install) {
has_oem_install_ = (key.ReadValue(google_update::kRegOemInstallField, has_oem_install_ = (key.ReadValue(google_update::kRegOemInstallField,
&oem_install_) == ERROR_SUCCESS); &oem_install_) == ERROR_SUCCESS);
// "eulaaccepted" may be absent, 0 or 1. // "eulaaccepted" may be absent, 0 or 1.
has_eula_accepted_ = (key.ReadValueDW(google_update::kRegEULAAceptedField, has_eula_accepted_ = (key.ReadValueDW(google_update::kRegEulaAceptedField,
&eula_accepted_) == ERROR_SUCCESS); &eula_accepted_) == ERROR_SUCCESS);
// "msi" may be absent, 0 or 1 // "msi" may be absent, 0 or 1
DWORD dw_value = 0; DWORD dw_value = 0;
...@@ -135,8 +135,8 @@ bool ProductState::Initialize(bool system_install) { ...@@ -135,8 +135,8 @@ bool ProductState::Initialize(bool system_install) {
usagestats_ = dword_value; usagestats_ = dword_value;
} }
if (key.ReadValueDW(google_update::kRegEULAAceptedField, if (key.ReadValueDW(google_update::kRegEulaAceptedField, &dword_value) ==
&dword_value) == ERROR_SUCCESS) { ERROR_SUCCESS) {
has_eula_accepted_ = true; has_eula_accepted_ = true;
eula_accepted_ = dword_value; eula_accepted_ = dword_value;
} }
......
...@@ -192,7 +192,7 @@ const wchar_t kChromeNewExe[] = L"new_chrome.exe"; ...@@ -192,7 +192,7 @@ const wchar_t kChromeNewExe[] = L"new_chrome.exe";
const wchar_t kChromeOldExe[] = L"old_chrome.exe"; const wchar_t kChromeOldExe[] = L"old_chrome.exe";
const wchar_t kCmdOnOsUpgrade[] = L"on-os-upgrade"; const wchar_t kCmdOnOsUpgrade[] = L"on-os-upgrade";
const wchar_t kCmdStoreDMToken[] = L"store-dmtoken"; const wchar_t kCmdStoreDMToken[] = L"store-dmtoken";
const wchar_t kEULASentinelFile[] = L"EULA Accepted"; const wchar_t kEulaSentinelFile[] = L"EULA Accepted";
const wchar_t kInstallBinaryDir[] = L"Application"; const wchar_t kInstallBinaryDir[] = L"Application";
const wchar_t kInstallerDir[] = L"Installer"; const wchar_t kInstallerDir[] = L"Installer";
const wchar_t kInstallTempDir[] = L"Temp"; const wchar_t kInstallTempDir[] = L"Temp";
......
...@@ -205,7 +205,7 @@ extern const wchar_t kChromeNewExe[]; ...@@ -205,7 +205,7 @@ extern const wchar_t kChromeNewExe[];
extern const wchar_t kChromeOldExe[]; extern const wchar_t kChromeOldExe[];
extern const wchar_t kCmdOnOsUpgrade[]; extern const wchar_t kCmdOnOsUpgrade[];
extern const wchar_t kCmdStoreDMToken[]; extern const wchar_t kCmdStoreDMToken[];
extern const wchar_t kEULASentinelFile[]; extern const wchar_t kEulaSentinelFile[];
extern const wchar_t kInstallBinaryDir[]; extern const wchar_t kInstallBinaryDir[];
extern const wchar_t kInstallerDir[]; extern const wchar_t kInstallerDir[];
extern const wchar_t kInstallTempDir[]; extern const wchar_t kInstallTempDir[];
......
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