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 |