| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Unit tests for master preferences related methods. | 5 // Unit tests for master preferences related methods. |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/scoped_ptr.h" | 9 #include "base/scoped_ptr.h" |
| 10 #include "chrome/common/chrome_paths.h" | 10 #include "chrome/common/chrome_paths.h" |
| 11 #include "chrome/common/json_value_serializer.h" | 11 #include "chrome/common/json_value_serializer.h" |
| 12 #include "chrome/installer/util/master_preferences.h" | 12 #include "chrome/installer/util/master_preferences.h" |
| 13 #include "chrome/installer/util/master_preferences_constants.h" |
| 13 #include "googleurl/src/gurl.h" | 14 #include "googleurl/src/gurl.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 16 |
| 16 namespace { | 17 namespace { |
| 17 class MasterPreferencesTest : public testing::Test { | 18 class MasterPreferencesTest : public testing::Test { |
| 18 protected: | 19 protected: |
| 19 virtual void SetUp() { | 20 virtual void SetUp() { |
| 20 ASSERT_TRUE(file_util::CreateTemporaryFile(&prefs_file_)); | 21 ASSERT_TRUE(file_util::CreateTemporaryFile(&prefs_file_)); |
| 21 } | 22 } |
| 22 | 23 |
| 23 virtual void TearDown() { | 24 virtual void TearDown() { |
| 24 EXPECT_TRUE(file_util::Delete(prefs_file_, false)); | 25 EXPECT_TRUE(file_util::Delete(prefs_file_, false)); |
| 25 } | 26 } |
| 26 | 27 |
| 27 const FilePath& prefs_file() const { return prefs_file_; } | 28 const FilePath& prefs_file() const { return prefs_file_; } |
| 28 | 29 |
| 29 private: | 30 private: |
| 30 FilePath prefs_file_; | 31 FilePath prefs_file_; |
| 31 }; | 32 }; |
| 33 |
| 34 // Used to specify an expected value for a set boolean preference variable. |
| 35 struct ExpectedBooleans { |
| 36 const char* name; |
| 37 bool expected_value; |
| 38 }; |
| 39 |
| 32 } // namespace | 40 } // namespace |
| 33 | 41 |
| 34 TEST_F(MasterPreferencesTest, ParseDistroParams) { | 42 TEST_F(MasterPreferencesTest, ParseDistroParams) { |
| 35 const char text[] = | 43 const char text[] = |
| 36 "{ \n" | 44 "{ \n" |
| 37 " \"distribution\": { \n" | 45 " \"distribution\": { \n" |
| 38 " \"skip_first_run_ui\": true,\n" | 46 " \"skip_first_run_ui\": true,\n" |
| 39 " \"show_welcome_page\": true,\n" | 47 " \"show_welcome_page\": true,\n" |
| 40 " \"import_search_engine\": true,\n" | 48 " \"import_search_engine\": true,\n" |
| 41 " \"import_history\": true,\n" | 49 " \"import_history\": true,\n" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 54 " \"chrome_shortcut_icon_index\": 1,\n" | 62 " \"chrome_shortcut_icon_index\": 1,\n" |
| 55 " \"ping_delay\": 40,\n" | 63 " \"ping_delay\": 40,\n" |
| 56 " \"search_engine_experiment\": true\n" | 64 " \"search_engine_experiment\": true\n" |
| 57 " },\n" | 65 " },\n" |
| 58 " \"blah\": {\n" | 66 " \"blah\": {\n" |
| 59 " \"import_history\": false\n" | 67 " \"import_history\": false\n" |
| 60 " }\n" | 68 " }\n" |
| 61 "} \n"; | 69 "} \n"; |
| 62 | 70 |
| 63 EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); | 71 EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); |
| 64 scoped_ptr<DictionaryValue> prefs( | 72 installer_util::MasterPreferences prefs(prefs_file()); |
| 65 installer_util::ParseDistributionPreferences(prefs_file())); | |
| 66 EXPECT_TRUE(prefs.get() != NULL); | |
| 67 bool value = true; | |
| 68 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 69 installer_util::master_preferences::kDistroSkipFirstRunPref, &value) && | |
| 70 value); | |
| 71 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 72 installer_util::master_preferences::kDistroShowWelcomePage, &value) && | |
| 73 value); | |
| 74 | 73 |
| 75 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 74 const char* expected_true[] = { |
| 76 installer_util::master_preferences::kDistroImportSearchPref, &value) && | 75 installer_util::master_preferences::kDistroSkipFirstRunPref, |
| 77 value); | 76 installer_util::master_preferences::kDistroShowWelcomePage, |
| 78 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 77 installer_util::master_preferences::kDistroImportSearchPref, |
| 79 installer_util::master_preferences::kDistroImportHistoryPref, &value) && | 78 installer_util::master_preferences::kDistroImportHistoryPref, |
| 80 value); | 79 installer_util::master_preferences::kDistroImportBookmarksPref, |
| 81 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 80 installer_util::master_preferences::kDistroImportHomePagePref, |
| 82 installer_util::master_preferences::kDistroImportBookmarksPref, &value) && | 81 installer_util::master_preferences::kCreateAllShortcuts, |
| 83 value); | 82 installer_util::master_preferences::kDoNotLaunchChrome, |
| 83 installer_util::master_preferences::kMakeChromeDefault, |
| 84 installer_util::master_preferences::kMakeChromeDefaultForUser, |
| 85 installer_util::master_preferences::kSystemLevel, |
| 86 installer_util::master_preferences::kVerboseLogging, |
| 87 installer_util::master_preferences::kRequireEula, |
| 88 installer_util::master_preferences::kAltShortcutText, |
| 89 installer_util::master_preferences::kAltFirstRunBubble, |
| 90 installer_util::master_preferences::kSearchEngineExperimentPref, |
| 91 }; |
| 92 |
| 93 for (int i = 0; i < arraysize(expected_true); ++i) { |
| 94 bool value = false; |
| 95 EXPECT_TRUE(prefs.GetBool(expected_true[i], &value)); |
| 96 EXPECT_TRUE(value) << expected_true[i]; |
| 97 } |
| 98 |
| 84 std::string str_value; | 99 std::string str_value; |
| 85 EXPECT_TRUE(installer_util::GetDistroStringPreference(prefs.get(), | 100 EXPECT_TRUE(prefs.GetString( |
| 86 installer_util::master_preferences::kDistroImportBookmarksFromFilePref, | 101 installer_util::master_preferences::kDistroImportBookmarksFromFilePref, |
| 87 &str_value)); | 102 &str_value)); |
| 88 EXPECT_STREQ("c:\\foo", str_value.c_str()); | 103 EXPECT_STREQ("c:\\foo", str_value.c_str()); |
| 89 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 90 installer_util::master_preferences::kDistroImportHomePagePref, &value) && | |
| 91 value); | |
| 92 | 104 |
| 93 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 94 installer_util::master_preferences::kCreateAllShortcuts, &value) && | |
| 95 value); | |
| 96 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 97 installer_util::master_preferences::kDoNotLaunchChrome, &value) && | |
| 98 value); | |
| 99 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 100 installer_util::master_preferences::kMakeChromeDefault, &value) && | |
| 101 value); | |
| 102 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 103 installer_util::master_preferences::kMakeChromeDefaultForUser, &value) && | |
| 104 value); | |
| 105 | |
| 106 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 107 installer_util::master_preferences::kSystemLevel, &value) && | |
| 108 value); | |
| 109 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 110 installer_util::master_preferences::kVerboseLogging, &value) && | |
| 111 value); | |
| 112 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 113 installer_util::master_preferences::kRequireEula, &value) && | |
| 114 value); | |
| 115 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 116 installer_util::master_preferences::kAltShortcutText, &value) && | |
| 117 value); | |
| 118 | |
| 119 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 120 installer_util::master_preferences::kAltFirstRunBubble, &value) && | |
| 121 value); | |
| 122 int icon_index = 0; | 105 int icon_index = 0; |
| 123 EXPECT_TRUE(installer_util::GetDistroIntegerPreference(prefs.get(), | 106 EXPECT_TRUE(prefs.GetInt( |
| 124 installer_util::master_preferences::kChromeShortcutIconIndex, | 107 installer_util::master_preferences::kChromeShortcutIconIndex, |
| 125 &icon_index)); | 108 &icon_index)); |
| 126 EXPECT_EQ(icon_index, 1); | 109 EXPECT_EQ(icon_index, 1); |
| 127 int ping_delay = 90; | 110 int ping_delay = 90; |
| 128 EXPECT_TRUE(installer_util::GetDistroIntegerPreference(prefs.get(), | 111 EXPECT_TRUE(prefs.GetInt(installer_util::master_preferences::kDistroPingDelay, |
| 129 installer_util::master_preferences::kDistroPingDelay, &ping_delay)); | 112 &ping_delay)); |
| 130 EXPECT_EQ(ping_delay, 40); | 113 EXPECT_EQ(ping_delay, 40); |
| 131 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 132 installer_util::master_preferences::kSearchEngineExperimentPref, &value) && | |
| 133 value); | |
| 134 } | 114 } |
| 135 | 115 |
| 136 TEST_F(MasterPreferencesTest, ParseMissingDistroParams) { | 116 TEST_F(MasterPreferencesTest, ParseMissingDistroParams) { |
| 137 const char text[] = | 117 const char text[] = |
| 138 "{ \n" | 118 "{ \n" |
| 139 " \"distribution\": { \n" | 119 " \"distribution\": { \n" |
| 140 " \"skip_first_run_ui\": true,\n" | 120 " \"skip_first_run_ui\": true,\n" |
| 141 " \"import_search_engine\": true,\n" | 121 " \"import_search_engine\": true,\n" |
| 142 " \"import_bookmarks\": false,\n" | 122 " \"import_bookmarks\": false,\n" |
| 143 " \"import_bookmarks_from_file\": \"\",\n" | 123 " \"import_bookmarks_from_file\": \"\",\n" |
| 144 " \"create_all_shortcuts\": true,\n" | 124 " \"create_all_shortcuts\": true,\n" |
| 145 " \"do_not_launch_chrome\": true,\n" | 125 " \"do_not_launch_chrome\": true,\n" |
| 146 " \"chrome_shortcut_icon_index\": \"bac\"\n" | 126 " \"chrome_shortcut_icon_index\": \"bac\"\n" |
| 147 " }\n" | 127 " }\n" |
| 148 "} \n"; | 128 "} \n"; |
| 149 | 129 |
| 150 EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); | 130 EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); |
| 151 scoped_ptr<DictionaryValue> prefs( | 131 installer_util::MasterPreferences prefs(prefs_file()); |
| 152 installer_util::ParseDistributionPreferences(prefs_file())); | 132 |
| 153 EXPECT_TRUE(prefs.get() != NULL); | 133 ExpectedBooleans expected_bool[] = { |
| 134 { installer_util::master_preferences::kDistroSkipFirstRunPref, true }, |
| 135 { installer_util::master_preferences::kDistroImportSearchPref, true }, |
| 136 { installer_util::master_preferences::kDistroImportBookmarksPref, false }, |
| 137 { installer_util::master_preferences::kCreateAllShortcuts, true }, |
| 138 { installer_util::master_preferences::kDoNotLaunchChrome, true }, |
| 139 }; |
| 140 |
| 154 bool value = false; | 141 bool value = false; |
| 155 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 142 for (int i = 0; i < arraysize(expected_bool); ++i) { |
| 156 installer_util::master_preferences::kDistroSkipFirstRunPref, &value) && | 143 EXPECT_TRUE(prefs.GetBool(expected_bool[i].name, &value)); |
| 157 value); | 144 EXPECT_EQ(value, expected_bool[i].expected_value) << expected_bool[i].name; |
| 158 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | 145 } |
| 159 installer_util::master_preferences::kDistroShowWelcomePage, &value)); | |
| 160 | 146 |
| 161 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 147 const char* missing_bools[] = { |
| 162 installer_util::master_preferences::kDistroImportSearchPref, &value) && | 148 installer_util::master_preferences::kDistroShowWelcomePage, |
| 163 value); | 149 installer_util::master_preferences::kDistroImportHistoryPref, |
| 164 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | 150 installer_util::master_preferences::kDistroImportHomePagePref, |
| 165 installer_util::master_preferences::kDistroImportHistoryPref, &value)); | 151 installer_util::master_preferences::kDoNotRegisterForUpdateLaunch, |
| 166 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 152 installer_util::master_preferences::kMakeChromeDefault, |
| 167 installer_util::master_preferences::kDistroImportBookmarksPref, &value)); | 153 installer_util::master_preferences::kMakeChromeDefaultForUser, |
| 168 EXPECT_FALSE(value); | 154 }; |
| 155 |
| 156 for (int i = 0; i < arraysize(missing_bools); ++i) { |
| 157 EXPECT_FALSE(prefs.GetBool(missing_bools[i], &value)) << missing_bools[i]; |
| 158 } |
| 159 |
| 169 std::string str_value; | 160 std::string str_value; |
| 170 EXPECT_FALSE(installer_util::GetDistroStringPreference(prefs.get(), | 161 EXPECT_FALSE(prefs.GetString( |
| 171 installer_util::master_preferences::kDistroImportBookmarksFromFilePref, | 162 installer_util::master_preferences::kDistroImportBookmarksFromFilePref, |
| 172 &str_value)); | 163 &str_value)); |
| 173 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 174 installer_util::master_preferences::kDistroImportHomePagePref, &value)); | |
| 175 | |
| 176 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 177 installer_util::master_preferences::kCreateAllShortcuts, &value) && | |
| 178 value); | |
| 179 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 180 installer_util::master_preferences::kDoNotLaunchChrome, &value) && | |
| 181 value); | |
| 182 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 183 installer_util::master_preferences::kDoNotRegisterForUpdateLaunch, | |
| 184 &value)); | |
| 185 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 186 installer_util::master_preferences::kMakeChromeDefault, &value)); | |
| 187 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 188 installer_util::master_preferences::kMakeChromeDefaultForUser, &value)); | |
| 189 | 164 |
| 190 int icon_index = 0; | 165 int icon_index = 0; |
| 191 EXPECT_FALSE(installer_util::GetDistroIntegerPreference(prefs.get(), | 166 EXPECT_FALSE(prefs.GetInt( |
| 192 installer_util::master_preferences::kChromeShortcutIconIndex, | 167 installer_util::master_preferences::kChromeShortcutIconIndex, |
| 193 &icon_index)); | 168 &icon_index)); |
| 194 EXPECT_EQ(icon_index, 0); | 169 EXPECT_EQ(icon_index, 0); |
| 170 |
| 195 int ping_delay = 90; | 171 int ping_delay = 90; |
| 196 EXPECT_FALSE(installer_util::GetDistroIntegerPreference(prefs.get(), | 172 EXPECT_FALSE(prefs.GetInt( |
| 197 installer_util::master_preferences::kDistroPingDelay, &ping_delay)); | 173 installer_util::master_preferences::kDistroPingDelay, &ping_delay)); |
| 198 EXPECT_EQ(ping_delay, 90); | 174 EXPECT_EQ(ping_delay, 90); |
| 199 } | 175 } |
| 200 | 176 |
| 201 TEST_F(MasterPreferencesTest, FirstRunTabs) { | 177 TEST_F(MasterPreferencesTest, FirstRunTabs) { |
| 202 const char text[] = | 178 const char text[] = |
| 203 "{ \n" | 179 "{ \n" |
| 204 " \"distribution\": { \n" | 180 " \"distribution\": { \n" |
| 205 " \"something here\": true\n" | 181 " \"something here\": true\n" |
| 206 " },\n" | 182 " },\n" |
| 207 " \"first_run_tabs\": [\n" | 183 " \"first_run_tabs\": [\n" |
| 208 " \"http://google.com/f1\",\n" | 184 " \"http://google.com/f1\",\n" |
| 209 " \"https://google.com/f2\",\n" | 185 " \"https://google.com/f2\",\n" |
| 210 " \"new_tab_page\"\n" | 186 " \"new_tab_page\"\n" |
| 211 " ]\n" | 187 " ]\n" |
| 212 "} \n"; | 188 "} \n"; |
| 213 | 189 |
| 214 EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); | 190 EXPECT_TRUE(file_util::WriteFile(prefs_file(), text, sizeof(text))); |
| 215 scoped_ptr<DictionaryValue> prefs( | 191 installer_util::MasterPreferences prefs(prefs_file()); |
| 216 installer_util::ParseDistributionPreferences(prefs_file())); | |
| 217 EXPECT_TRUE(prefs.get() != NULL); | |
| 218 | |
| 219 typedef std::vector<GURL> TabsVector; | 192 typedef std::vector<GURL> TabsVector; |
| 220 TabsVector tabs = installer_util::GetFirstRunTabs(prefs.get()); | 193 TabsVector tabs = prefs.GetFirstRunTabs(); |
| 221 ASSERT_EQ(3, tabs.size()); | 194 ASSERT_EQ(3, tabs.size()); |
| 222 EXPECT_EQ(GURL("http://google.com/f1"), tabs[0]); | 195 EXPECT_EQ(GURL("http://google.com/f1"), tabs[0]); |
| 223 EXPECT_EQ(GURL("https://google.com/f2"), tabs[1]); | 196 EXPECT_EQ(GURL("https://google.com/f2"), tabs[1]); |
| 224 EXPECT_EQ(GURL("new_tab_page"), tabs[2]); | 197 EXPECT_EQ(GURL("new_tab_page"), tabs[2]); |
| 225 } | 198 } |
| 226 | 199 |
| 227 // In this test instead of using our synthetic json file, we use an | 200 // In this test instead of using our synthetic json file, we use an |
| 228 // actual test case from the extensions unittest. The hope here is that if | 201 // actual test case from the extensions unittest. The hope here is that if |
| 229 // they change something in the manifest this test will break, but in | 202 // they change something in the manifest this test will break, but in |
| 230 // general it is expected the extension format to be backwards compatible. | 203 // general it is expected the extension format to be backwards compatible. |
| 231 TEST(MasterPrefsExtension, ValidateExtensionJSON) { | 204 TEST(MasterPrefsExtension, ValidateExtensionJSON) { |
| 232 FilePath prefs_path; | 205 FilePath prefs_path; |
| 233 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &prefs_path)); | 206 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &prefs_path)); |
| 234 prefs_path = prefs_path.AppendASCII("extensions") | 207 prefs_path = prefs_path.AppendASCII("extensions") |
| 235 .AppendASCII("good").AppendASCII("Preferences"); | 208 .AppendASCII("good").AppendASCII("Preferences"); |
| 236 | 209 |
| 237 scoped_ptr<DictionaryValue> prefs( | 210 installer_util::MasterPreferences prefs(prefs_path); |
| 238 installer_util::ParseDistributionPreferences(prefs_path)); | |
| 239 ASSERT_TRUE(prefs.get() != NULL); | |
| 240 DictionaryValue* extensions = NULL; | 211 DictionaryValue* extensions = NULL; |
| 241 EXPECT_TRUE(installer_util::HasExtensionsBlock(prefs.get(), &extensions)); | 212 EXPECT_TRUE(prefs.GetExtensionsBlock(&extensions)); |
| 242 int location = 0; | 213 int location = 0; |
| 243 EXPECT_TRUE(extensions->GetInteger( | 214 EXPECT_TRUE(extensions->GetInteger( |
| 244 "behllobkkfkfnphdnhnkndlbkcpglgmj.location", &location)); | 215 "behllobkkfkfnphdnhnkndlbkcpglgmj.location", &location)); |
| 245 int state = 0; | 216 int state = 0; |
| 246 EXPECT_TRUE(extensions->GetInteger( | 217 EXPECT_TRUE(extensions->GetInteger( |
| 247 "behllobkkfkfnphdnhnkndlbkcpglgmj.state", &state)); | 218 "behllobkkfkfnphdnhnkndlbkcpglgmj.state", &state)); |
| 248 std::string path; | 219 std::string path; |
| 249 EXPECT_TRUE(extensions->GetString( | 220 EXPECT_TRUE(extensions->GetString( |
| 250 "behllobkkfkfnphdnhnkndlbkcpglgmj.path", &path)); | 221 "behllobkkfkfnphdnhnkndlbkcpglgmj.path", &path)); |
| 251 std::string key; | 222 std::string key; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 276 "} \n"; | 247 "} \n"; |
| 277 EXPECT_TRUE(file_util::WriteFile(prefs_file, text, sizeof(text))); | 248 EXPECT_TRUE(file_util::WriteFile(prefs_file, text, sizeof(text))); |
| 278 | 249 |
| 279 // Make sure command line values override the values in master preferences. | 250 // Make sure command line values override the values in master preferences. |
| 280 std::wstring cmd_str( | 251 std::wstring cmd_str( |
| 281 L"setup.exe --installerdata=\"" + prefs_file.value() + L"\""); | 252 L"setup.exe --installerdata=\"" + prefs_file.value() + L"\""); |
| 282 cmd_str.append(L" --create-all-shortcuts"); | 253 cmd_str.append(L" --create-all-shortcuts"); |
| 283 cmd_str.append(L" --do-not-launch-chrome"); | 254 cmd_str.append(L" --do-not-launch-chrome"); |
| 284 cmd_str.append(L" --alt-desktop-shortcut"); | 255 cmd_str.append(L" --alt-desktop-shortcut"); |
| 285 CommandLine cmd_line = CommandLine::FromString(cmd_str); | 256 CommandLine cmd_line = CommandLine::FromString(cmd_str); |
| 286 scoped_ptr<DictionaryValue> prefs( | 257 installer_util::MasterPreferences prefs(cmd_line); |
| 287 installer_util::GetInstallPreferences(cmd_line)); | |
| 288 EXPECT_TRUE(prefs.get() != NULL); | |
| 289 | 258 |
| 290 // Check prefs that do not have any equivalent command line option. | 259 // Check prefs that do not have any equivalent command line option. |
| 291 bool value = false; | 260 ExpectedBooleans expected_bool[] = { |
| 292 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 261 { installer_util::master_preferences::kDistroSkipFirstRunPref, true }, |
| 293 installer_util::master_preferences::kDistroSkipFirstRunPref, &value) && | 262 { installer_util::master_preferences::kCreateAllShortcuts, true }, |
| 294 value); | 263 { installer_util::master_preferences::kDoNotLaunchChrome, true }, |
| 295 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | 264 { installer_util::master_preferences::kAltShortcutText, true }, |
| 296 installer_util::master_preferences::kDistroShowWelcomePage, &value)); | 265 { installer_util::master_preferences::kSystemLevel, true }, |
| 266 { installer_util::master_preferences::kVerboseLogging, false }, |
| 267 }; |
| 297 | 268 |
| 298 // Now check that prefs got merged correctly. | 269 // Now check that prefs got merged correctly. |
| 299 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 270 bool value = false; |
| 300 installer_util::master_preferences::kCreateAllShortcuts, &value) && | 271 for (int i = 0; i < arraysize(expected_bool); ++i) { |
| 301 value); | 272 EXPECT_TRUE(prefs.GetBool(expected_bool[i].name, &value)); |
| 302 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 273 EXPECT_EQ(value, expected_bool[i].expected_value) << expected_bool[i].name; |
| 303 installer_util::master_preferences::kDoNotLaunchChrome, &value) && | 274 } |
| 304 value); | |
| 305 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 306 installer_util::master_preferences::kAltShortcutText, &value) && | |
| 307 value); | |
| 308 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 309 installer_util::master_preferences::kSystemLevel, &value) && | |
| 310 value); | |
| 311 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | |
| 312 installer_util::master_preferences::kVerboseLogging, &value)); | |
| 313 EXPECT_FALSE(value); | |
| 314 | 275 |
| 315 // Delete temporary prefs file. | 276 // Delete temporary prefs file. |
| 316 EXPECT_TRUE(file_util::Delete(prefs_file, false)); | 277 EXPECT_TRUE(file_util::Delete(prefs_file, false)); |
| 317 | 278 |
| 318 // Check that if master prefs doesn't exist, we can still parse the common | 279 // Check that if master prefs doesn't exist, we can still parse the common |
| 319 // prefs. | 280 // prefs. |
| 320 cmd_str = L"setup.exe --create-all-shortcuts --do-not-launch-chrome" | 281 cmd_str = L"setup.exe --create-all-shortcuts --do-not-launch-chrome" |
| 321 L" --alt-desktop-shortcut"; | 282 L" --alt-desktop-shortcut"; |
| 322 cmd_line.ParseFromString(cmd_str); | 283 cmd_line.ParseFromString(cmd_str); |
| 323 prefs.reset(installer_util::GetInstallPreferences(cmd_line)); | 284 installer_util::MasterPreferences prefs2(cmd_line); |
| 324 EXPECT_TRUE(prefs.get() != NULL); | 285 ExpectedBooleans expected_bool2[] = { |
| 325 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 286 { installer_util::master_preferences::kCreateAllShortcuts, true }, |
| 326 installer_util::master_preferences::kCreateAllShortcuts, &value) && | 287 { installer_util::master_preferences::kDoNotLaunchChrome, true }, |
| 327 value); | 288 { installer_util::master_preferences::kAltShortcutText, true }, |
| 328 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 289 }; |
| 329 installer_util::master_preferences::kDoNotLaunchChrome, &value) && | 290 |
| 330 value); | 291 for (int i = 0; i < arraysize(expected_bool2); ++i) { |
| 331 EXPECT_TRUE(installer_util::GetDistroBooleanPreference(prefs.get(), | 292 EXPECT_TRUE(prefs2.GetBool(expected_bool2[i].name, &value)); |
| 332 installer_util::master_preferences::kAltShortcutText, &value) && | 293 EXPECT_EQ(value, expected_bool2[i].expected_value) |
| 333 value); | 294 << expected_bool2[i].name; |
| 334 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | 295 } |
| 296 |
| 297 EXPECT_FALSE(prefs2.GetBool( |
| 335 installer_util::master_preferences::kSystemLevel, &value)); | 298 installer_util::master_preferences::kSystemLevel, &value)); |
| 336 EXPECT_FALSE(installer_util::GetDistroBooleanPreference(prefs.get(), | 299 EXPECT_FALSE(prefs2.GetBool( |
| 337 installer_util::master_preferences::kVerboseLogging, &value)); | 300 installer_util::master_preferences::kVerboseLogging, &value)); |
| 338 } | 301 } |
| OLD | NEW |