Index: chrome/installer/util/master_preferences_unittest.cc |
=================================================================== |
--- chrome/installer/util/master_preferences_unittest.cc (revision 64604) |
+++ chrome/installer/util/master_preferences_unittest.cc (working copy) |
@@ -10,6 +10,7 @@ |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/json_value_serializer.h" |
#include "chrome/installer/util/master_preferences.h" |
+#include "chrome/installer/util/master_preferences_constants.h" |
#include "googleurl/src/gurl.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -29,6 +30,13 @@ |
private: |
FilePath prefs_file_; |
}; |
+ |
+// Used to specify an expected value for a set boolean preference variable. |
+struct ExpectedBooleans { |
+ const char* name; |
+ bool expected_value; |
+}; |
+ |
} // namespace |
TEST_F(MasterPreferencesTest, ParseDistroParams) { |
@@ -61,76 +69,48 @@ |
"} \n"; |
EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); |
- scoped_ptr<DictionaryValue> prefs( |
- installer_util::ParseDistributionPreferences(prefs_file())); |
- EXPECT_TRUE(prefs.get() != NULL); |
- bool value = true; |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroSkipFirstRunPref, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroShowWelcomePage, &value) && |
- value); |
+ installer_util::MasterPreferences prefs(prefs_file()); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportSearchPref, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportHistoryPref, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportBookmarksPref, &value) && |
- value); |
+ const char* expected_true[] = { |
+ installer_util::master_preferences::kDistroSkipFirstRunPref, |
+ installer_util::master_preferences::kDistroShowWelcomePage, |
+ installer_util::master_preferences::kDistroImportSearchPref, |
+ installer_util::master_preferences::kDistroImportHistoryPref, |
+ installer_util::master_preferences::kDistroImportBookmarksPref, |
+ installer_util::master_preferences::kDistroImportHomePagePref, |
+ installer_util::master_preferences::kCreateAllShortcuts, |
+ installer_util::master_preferences::kDoNotLaunchChrome, |
+ installer_util::master_preferences::kMakeChromeDefault, |
+ installer_util::master_preferences::kMakeChromeDefaultForUser, |
+ installer_util::master_preferences::kSystemLevel, |
+ installer_util::master_preferences::kVerboseLogging, |
+ installer_util::master_preferences::kRequireEula, |
+ installer_util::master_preferences::kAltShortcutText, |
+ installer_util::master_preferences::kAltFirstRunBubble, |
+ installer_util::master_preferences::kSearchEngineExperimentPref, |
+ }; |
+ |
+ for (int i = 0; i < arraysize(expected_true); ++i) { |
+ bool value = false; |
+ EXPECT_TRUE(prefs.GetBool(expected_true[i], &value)); |
+ EXPECT_TRUE(value) << expected_true[i]; |
+ } |
+ |
std::string str_value; |
- EXPECT_TRUE(installer_util::GetDistroStringPreference(prefs.get(), |
+ EXPECT_TRUE(prefs.GetString( |
installer_util::master_preferences::kDistroImportBookmarksFromFilePref, |
&str_value)); |
EXPECT_STREQ("c:\\foo", str_value.c_str()); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportHomePagePref, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kCreateAllShortcuts, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDoNotLaunchChrome, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kMakeChromeDefault, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kMakeChromeDefaultForUser, &value) && |
- value); |
- |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kSystemLevel, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kVerboseLogging, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kRequireEula, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kAltShortcutText, &value) && |
- value); |
- |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kAltFirstRunBubble, &value) && |
- value); |
int icon_index = 0; |
- EXPECT_TRUE(installer_util::GetDistroIntegerPreference(prefs.get(), |
+ EXPECT_TRUE(prefs.GetInt( |
installer_util::master_preferences::kChromeShortcutIconIndex, |
&icon_index)); |
EXPECT_EQ(icon_index, 1); |
int ping_delay = 90; |
- EXPECT_TRUE(installer_util::GetDistroIntegerPreference(prefs.get(), |
- installer_util::master_preferences::kDistroPingDelay, &ping_delay)); |
+ EXPECT_TRUE(prefs.GetInt(installer_util::master_preferences::kDistroPingDelay, |
+ &ping_delay)); |
EXPECT_EQ(ping_delay, 40); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kSearchEngineExperimentPref, &value) && |
- value); |
} |
TEST_F(MasterPreferencesTest, ParseMissingDistroParams) { |
@@ -148,52 +128,48 @@ |
"} \n"; |
EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); |
- scoped_ptr<DictionaryValue> prefs( |
- installer_util::ParseDistributionPreferences(prefs_file())); |
- EXPECT_TRUE(prefs.get() != NULL); |
+ installer_util::MasterPreferences prefs(prefs_file()); |
+ |
+ ExpectedBooleans expected_bool[] = { |
+ { installer_util::master_preferences::kDistroSkipFirstRunPref, true }, |
+ { installer_util::master_preferences::kDistroImportSearchPref, true }, |
+ { installer_util::master_preferences::kDistroImportBookmarksPref, false }, |
+ { installer_util::master_preferences::kCreateAllShortcuts, true }, |
+ { installer_util::master_preferences::kDoNotLaunchChrome, true }, |
+ }; |
+ |
bool value = false; |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroSkipFirstRunPref, &value) && |
- value); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroShowWelcomePage, &value)); |
+ for (int i = 0; i < arraysize(expected_bool); ++i) { |
+ EXPECT_TRUE(prefs.GetBool(expected_bool[i].name, &value)); |
+ EXPECT_EQ(value, expected_bool[i].expected_value) << expected_bool[i].name; |
+ } |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportSearchPref, &value) && |
- value); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportHistoryPref, &value)); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportBookmarksPref, &value)); |
- EXPECT_FALSE(value); |
+ const char* missing_bools[] = { |
+ installer_util::master_preferences::kDistroShowWelcomePage, |
+ installer_util::master_preferences::kDistroImportHistoryPref, |
+ installer_util::master_preferences::kDistroImportHomePagePref, |
+ installer_util::master_preferences::kDoNotRegisterForUpdateLaunch, |
+ installer_util::master_preferences::kMakeChromeDefault, |
+ installer_util::master_preferences::kMakeChromeDefaultForUser, |
+ }; |
+ |
+ for (int i = 0; i < arraysize(missing_bools); ++i) { |
+ EXPECT_FALSE(prefs.GetBool(missing_bools[i], &value)) << missing_bools[i]; |
+ } |
+ |
std::string str_value; |
- EXPECT_FALSE(installer_util::GetDistroStringPreference(prefs.get(), |
+ EXPECT_FALSE(prefs.GetString( |
installer_util::master_preferences::kDistroImportBookmarksFromFilePref, |
&str_value)); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroImportHomePagePref, &value)); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kCreateAllShortcuts, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDoNotLaunchChrome, &value) && |
- value); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDoNotRegisterForUpdateLaunch, |
- &value)); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kMakeChromeDefault, &value)); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kMakeChromeDefaultForUser, &value)); |
- |
int icon_index = 0; |
- EXPECT_FALSE(installer_util::GetDistroIntegerPreference(prefs.get(), |
+ EXPECT_FALSE(prefs.GetInt( |
installer_util::master_preferences::kChromeShortcutIconIndex, |
&icon_index)); |
EXPECT_EQ(icon_index, 0); |
+ |
int ping_delay = 90; |
- EXPECT_FALSE(installer_util::GetDistroIntegerPreference(prefs.get(), |
+ EXPECT_FALSE(prefs.GetInt( |
installer_util::master_preferences::kDistroPingDelay, &ping_delay)); |
EXPECT_EQ(ping_delay, 90); |
} |
@@ -212,12 +188,9 @@ |
"} \n"; |
EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); |
- scoped_ptr<DictionaryValue> prefs( |
- installer_util::ParseDistributionPreferences(prefs_file())); |
- EXPECT_TRUE(prefs.get() != NULL); |
- |
+ installer_util::MasterPreferences prefs(prefs_file()); |
typedef std::vector<GURL> TabsVector; |
- TabsVector tabs = installer_util::GetFirstRunTabs(prefs.get()); |
+ TabsVector tabs = prefs.GetFirstRunTabs(); |
ASSERT_EQ(3, tabs.size()); |
EXPECT_EQ(GURL("http://google.com/f1"), tabs[0]); |
EXPECT_EQ(GURL("https://google.com/f2"), tabs[1]); |
@@ -234,11 +207,9 @@ |
prefs_path = prefs_path.AppendASCII("extensions") |
.AppendASCII("good").AppendASCII("Preferences"); |
- scoped_ptr<DictionaryValue> prefs( |
- installer_util::ParseDistributionPreferences(prefs_path)); |
- ASSERT_TRUE(prefs.get() != NULL); |
+ installer_util::MasterPreferences prefs(prefs_path); |
DictionaryValue* extensions = NULL; |
- EXPECT_TRUE(installer_util::HasExtensionsBlock(prefs.get(), &extensions)); |
+ EXPECT_TRUE(prefs.GetExtensionsBlock(&extensions)); |
int location = 0; |
EXPECT_TRUE(extensions->GetInteger( |
"behllobkkfkfnphdnhnkndlbkcpglgmj.location", &location)); |
@@ -283,34 +254,24 @@ |
cmd_str.append(L" --do-not-launch-chrome"); |
cmd_str.append(L" --alt-desktop-shortcut"); |
CommandLine cmd_line = CommandLine::FromString(cmd_str); |
- scoped_ptr<DictionaryValue> prefs( |
- installer_util::GetInstallPreferences(cmd_line)); |
- EXPECT_TRUE(prefs.get() != NULL); |
+ installer_util::MasterPreferences prefs(cmd_line); |
// Check prefs that do not have any equivalent command line option. |
- bool value = false; |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroSkipFirstRunPref, &value) && |
- value); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDistroShowWelcomePage, &value)); |
+ ExpectedBooleans expected_bool[] = { |
+ { installer_util::master_preferences::kDistroSkipFirstRunPref, true }, |
+ { installer_util::master_preferences::kCreateAllShortcuts, true }, |
+ { installer_util::master_preferences::kDoNotLaunchChrome, true }, |
+ { installer_util::master_preferences::kAltShortcutText, true }, |
+ { installer_util::master_preferences::kSystemLevel, true }, |
+ { installer_util::master_preferences::kVerboseLogging, false }, |
+ }; |
// Now check that prefs got merged correctly. |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kCreateAllShortcuts, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDoNotLaunchChrome, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kAltShortcutText, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kSystemLevel, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kVerboseLogging, &value)); |
- EXPECT_FALSE(value); |
+ bool value = false; |
+ for (int i = 0; i < arraysize(expected_bool); ++i) { |
+ EXPECT_TRUE(prefs.GetBool(expected_bool[i].name, &value)); |
+ EXPECT_EQ(value, expected_bool[i].expected_value) << expected_bool[i].name; |
+ } |
// Delete temporary prefs file. |
EXPECT_TRUE(file_util::Delete(prefs_file, false)); |
@@ -320,19 +281,21 @@ |
cmd_str = L"setup.exe --create-all-shortcuts --do-not-launch-chrome" |
L" --alt-desktop-shortcut"; |
cmd_line.ParseFromString(cmd_str); |
- prefs.reset(installer_util::GetInstallPreferences(cmd_line)); |
- EXPECT_TRUE(prefs.get() != NULL); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kCreateAllShortcuts, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kDoNotLaunchChrome, &value) && |
- value); |
- EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), |
- installer_util::master_preferences::kAltShortcutText, &value) && |
- value); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
+ installer_util::MasterPreferences prefs2(cmd_line); |
+ ExpectedBooleans expected_bool2[] = { |
+ { installer_util::master_preferences::kCreateAllShortcuts, true }, |
+ { installer_util::master_preferences::kDoNotLaunchChrome, true }, |
+ { installer_util::master_preferences::kAltShortcutText, true }, |
+ }; |
+ |
+ for (int i = 0; i < arraysize(expected_bool2); ++i) { |
+ EXPECT_TRUE(prefs2.GetBool(expected_bool2[i].name, &value)); |
+ EXPECT_EQ(value, expected_bool2[i].expected_value) |
+ << expected_bool2[i].name; |
+ } |
+ |
+ EXPECT_FALSE(prefs2.GetBool( |
installer_util::master_preferences::kSystemLevel, &value)); |
- EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), |
+ EXPECT_FALSE(prefs2.GetBool( |
installer_util::master_preferences::kVerboseLogging, &value)); |
} |