Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(577)

Side by Side Diff: chrome/common/pref_service_unittest.cc

Issue 342068: Third patch in getting rid of caching MessageLoop pointers and always using C... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/pref_service.cc ('k') | chrome/test/in_process_browser_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #include "app/test/data/resource.h" 5 #include "app/test/data/resource.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/message_loop.h"
7 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "chrome/browser/chrome_thread.h"
8 #include "chrome/common/chrome_paths.h" 10 #include "chrome/common/chrome_paths.h"
9 #include "chrome/common/json_value_serializer.h" 11 #include "chrome/common/json_value_serializer.h"
10 #include "chrome/common/notification_service.h" 12 #include "chrome/common/notification_service.h"
11 #include "chrome/common/notification_type.h" 13 #include "chrome/common/notification_type.h"
12 #include "chrome/common/pref_names.h" 14 #include "chrome/common/pref_names.h"
13 #include "chrome/common/pref_service.h" 15 #include "chrome/common/pref_service.h"
14 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
15 17
16 class PrefServiceTest : public testing::Test { 18 class PrefServiceTest : public testing::Test {
17 protected: 19 protected:
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 bool observer_fired_; 76 bool observer_fired_;
75 const PrefService* prefs_; 77 const PrefService* prefs_;
76 const std::wstring pref_name_; 78 const std::wstring pref_name_;
77 std::wstring new_pref_value_; 79 std::wstring new_pref_value_;
78 }; 80 };
79 81
80 TEST_F(PrefServiceTest, Basic) { 82 TEST_F(PrefServiceTest, Basic) {
81 { 83 {
82 // Test that it fails on nonexistent file. 84 // Test that it fails on nonexistent file.
83 FilePath bogus_input_file = data_dir_.AppendASCII("read.txt"); 85 FilePath bogus_input_file = data_dir_.AppendASCII("read.txt");
84 PrefService prefs(bogus_input_file, NULL); 86 PrefService prefs(bogus_input_file);
85 EXPECT_FALSE(prefs.ReloadPersistentPrefs()); 87 EXPECT_FALSE(prefs.ReloadPersistentPrefs());
86 } 88 }
87 89
88 ASSERT_TRUE(file_util::CopyFile(data_dir_.AppendASCII("read.json"), 90 ASSERT_TRUE(file_util::CopyFile(data_dir_.AppendASCII("read.json"),
89 test_dir_.AppendASCII("write.json"))); 91 test_dir_.AppendASCII("write.json")));
90 92
91 // Test that the persistent value can be loaded. 93 // Test that the persistent value can be loaded.
92 FilePath input_file = test_dir_.AppendASCII("write.json"); 94 FilePath input_file = test_dir_.AppendASCII("write.json");
93 ASSERT_TRUE(file_util::PathExists(input_file)); 95 ASSERT_TRUE(file_util::PathExists(input_file));
94 PrefService prefs(input_file, NULL); 96 PrefService prefs(input_file);
95 ASSERT_TRUE(prefs.ReloadPersistentPrefs()); 97 ASSERT_TRUE(prefs.ReloadPersistentPrefs());
96 98
97 // Register test prefs. 99 // Register test prefs.
98 const wchar_t kNewWindowsInTabs[] = L"tabs.new_windows_in_tabs"; 100 const wchar_t kNewWindowsInTabs[] = L"tabs.new_windows_in_tabs";
99 const wchar_t kMaxTabs[] = L"tabs.max_tabs"; 101 const wchar_t kMaxTabs[] = L"tabs.max_tabs";
100 const wchar_t kLongIntPref[] = L"long_int.pref"; 102 const wchar_t kLongIntPref[] = L"long_int.pref";
101 prefs.RegisterStringPref(prefs::kHomePage, L""); 103 prefs.RegisterStringPref(prefs::kHomePage, L"");
102 prefs.RegisterBooleanPref(kNewWindowsInTabs, false); 104 prefs.RegisterBooleanPref(kNewWindowsInTabs, false);
103 prefs.RegisterIntegerPref(kMaxTabs, 0); 105 prefs.RegisterIntegerPref(kMaxTabs, 0);
104 prefs.RegisterStringPref(kLongIntPref, L"2147483648"); 106 prefs.RegisterStringPref(kLongIntPref, L"2147483648");
(...skipping 29 matching lines...) Expand all
134 EXPECT_EQ(2147483648LL, prefs.GetInt64(kLongIntPref)); 136 EXPECT_EQ(2147483648LL, prefs.GetInt64(kLongIntPref));
135 prefs.SetInt64(kLongIntPref, 214748364842LL); 137 prefs.SetInt64(kLongIntPref, 214748364842LL);
136 EXPECT_EQ(214748364842LL, prefs.GetInt64(kLongIntPref)); 138 EXPECT_EQ(214748364842LL, prefs.GetInt64(kLongIntPref));
137 139
138 EXPECT_EQ(FilePath::StringType(FILE_PATH_LITERAL("/usr/local/")), 140 EXPECT_EQ(FilePath::StringType(FILE_PATH_LITERAL("/usr/local/")),
139 prefs.GetFilePath(kSomeDirectory).value()); 141 prefs.GetFilePath(kSomeDirectory).value());
140 prefs.SetFilePath(kSomeDirectory, some_path); 142 prefs.SetFilePath(kSomeDirectory, some_path);
141 EXPECT_EQ(some_path.value(), prefs.GetFilePath(kSomeDirectory).value()); 143 EXPECT_EQ(some_path.value(), prefs.GetFilePath(kSomeDirectory).value());
142 144
143 // Serialize and compare to expected output. 145 // Serialize and compare to expected output.
146 // SavePersistentPrefs uses ImportantFileWriter which needs a file thread.
147 MessageLoop message_loop;
148 ChromeThread file_thread(ChromeThread::FILE, &message_loop);
144 FilePath output_file = test_dir_.AppendASCII("write.json"); 149 FilePath output_file = test_dir_.AppendASCII("write.json");
145 FilePath golden_output_file = data_dir_.AppendASCII("write.golden.json"); 150 FilePath golden_output_file = data_dir_.AppendASCII("write.golden.json");
146 ASSERT_TRUE(file_util::PathExists(golden_output_file)); 151 ASSERT_TRUE(file_util::PathExists(golden_output_file));
147 ASSERT_TRUE(prefs.SavePersistentPrefs()); 152 ASSERT_TRUE(prefs.SavePersistentPrefs());
153 MessageLoop::current()->RunAllPending();
148 EXPECT_TRUE(file_util::TextContentsEqual(golden_output_file, output_file)); 154 EXPECT_TRUE(file_util::TextContentsEqual(golden_output_file, output_file));
149 ASSERT_TRUE(file_util::Delete(output_file, false)); 155 ASSERT_TRUE(file_util::Delete(output_file, false));
150 } 156 }
151 157
152 TEST_F(PrefServiceTest, Overlay) { 158 TEST_F(PrefServiceTest, Overlay) {
153 const std::string transient = 159 const std::string transient =
154 "{\"bool\":true, \"int\":2, \"real\":2.0, \"string\":\"transient\"," 160 "{\"bool\":true, \"int\":2, \"real\":2.0, \"string\":\"transient\","
155 "\"dictionary\":{\"value\":\"transient\"}," 161 "\"dictionary\":{\"value\":\"transient\"},"
156 "\"list\":[\"transient\"]}"; 162 "\"list\":[\"transient\"]}";
157 163
158 std::wstring persistent_string(L"persistent"); 164 std::wstring persistent_string(L"persistent");
159 std::wstring transient_string(L"transient"); 165 std::wstring transient_string(L"transient");
160 166
161 FilePath persistent_file = data_dir_.AppendASCII("overlay.json"); 167 FilePath persistent_file = data_dir_.AppendASCII("overlay.json");
162 PrefService prefs(persistent_file, NULL); 168 PrefService prefs(persistent_file);
163 EXPECT_TRUE(prefs.ReloadPersistentPrefs()); 169 EXPECT_TRUE(prefs.ReloadPersistentPrefs());
164 170
165 Value* transient_value; 171 Value* transient_value;
166 { 172 {
167 JSONStringValueSerializer serializer(transient); 173 JSONStringValueSerializer serializer(transient);
168 transient_value = serializer.Deserialize(NULL); 174 transient_value = serializer.Deserialize(NULL);
169 ASSERT_TRUE(transient_value); 175 ASSERT_TRUE(transient_value);
170 } 176 }
171 prefs.transient()->Set(transient_string, transient_value); 177 prefs.transient()->Set(transient_string, transient_value);
172 178
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 std::wstring result_string; 285 std::wstring result_string;
280 ASSERT_TRUE(member_value->GetAsString(&result_string)); 286 ASSERT_TRUE(member_value->GetAsString(&result_string));
281 ASSERT_EQ(transient_string, result_string); 287 ASSERT_EQ(transient_string, result_string);
282 } 288 }
283 } 289 }
284 290
285 TEST_F(PrefServiceTest, Observers) { 291 TEST_F(PrefServiceTest, Observers) {
286 FilePath input_file = data_dir_.AppendASCII("read.json"); 292 FilePath input_file = data_dir_.AppendASCII("read.json");
287 EXPECT_TRUE(file_util::PathExists(input_file)); 293 EXPECT_TRUE(file_util::PathExists(input_file));
288 294
289 PrefService prefs(input_file, NULL); 295 PrefService prefs(input_file);
290 296
291 EXPECT_TRUE(prefs.ReloadPersistentPrefs()); 297 EXPECT_TRUE(prefs.ReloadPersistentPrefs());
292 298
293 const wchar_t pref_name[] = L"homepage"; 299 const wchar_t pref_name[] = L"homepage";
294 prefs.RegisterStringPref(pref_name, L""); 300 prefs.RegisterStringPref(pref_name, L"");
295 EXPECT_EQ(std::wstring(L"http://www.cnn.com"), prefs.GetString(pref_name)); 301 EXPECT_EQ(std::wstring(L"http://www.cnn.com"), prefs.GetString(pref_name));
296 302
297 const std::wstring new_pref_value(L"http://www.google.com/"); 303 const std::wstring new_pref_value(L"http://www.google.com/");
298 TestPrefObserver obs(&prefs, pref_name, new_pref_value); 304 TestPrefObserver obs(&prefs, pref_name, new_pref_value);
299 prefs.AddPrefObserver(pref_name, &obs); 305 prefs.AddPrefObserver(pref_name, &obs);
(...skipping 22 matching lines...) Expand all
322 EXPECT_FALSE(obs.observer_fired()); 328 EXPECT_FALSE(obs.observer_fired());
323 EXPECT_TRUE(obs2.observer_fired()); 329 EXPECT_TRUE(obs2.observer_fired());
324 330
325 // Ok, clean up. 331 // Ok, clean up.
326 prefs.RemovePrefObserver(pref_name, &obs2); 332 prefs.RemovePrefObserver(pref_name, &obs2);
327 } 333 }
328 334
329 // TODO(port): port this test to POSIX. 335 // TODO(port): port this test to POSIX.
330 #if defined(OS_WIN) 336 #if defined(OS_WIN)
331 TEST_F(PrefServiceTest, LocalizedPrefs) { 337 TEST_F(PrefServiceTest, LocalizedPrefs) {
332 PrefService prefs(FilePath(), NULL); 338 PrefService prefs((FilePath()));
333 const wchar_t kBoolean[] = L"boolean"; 339 const wchar_t kBoolean[] = L"boolean";
334 const wchar_t kInteger[] = L"integer"; 340 const wchar_t kInteger[] = L"integer";
335 const wchar_t kString[] = L"string"; 341 const wchar_t kString[] = L"string";
336 prefs.RegisterLocalizedBooleanPref(kBoolean, IDS_LOCALE_BOOL); 342 prefs.RegisterLocalizedBooleanPref(kBoolean, IDS_LOCALE_BOOL);
337 prefs.RegisterLocalizedIntegerPref(kInteger, IDS_LOCALE_INT); 343 prefs.RegisterLocalizedIntegerPref(kInteger, IDS_LOCALE_INT);
338 prefs.RegisterLocalizedStringPref(kString, IDS_LOCALE_STRING); 344 prefs.RegisterLocalizedStringPref(kString, IDS_LOCALE_STRING);
339 345
340 // The locale default should take preference over the user default. 346 // The locale default should take preference over the user default.
341 EXPECT_FALSE(prefs.GetBoolean(kBoolean)); 347 EXPECT_FALSE(prefs.GetBoolean(kBoolean));
342 EXPECT_EQ(1, prefs.GetInteger(kInteger)); 348 EXPECT_EQ(1, prefs.GetInteger(kInteger));
343 EXPECT_EQ(L"hello", prefs.GetString(kString)); 349 EXPECT_EQ(L"hello", prefs.GetString(kString));
344 350
345 prefs.SetBoolean(kBoolean, true); 351 prefs.SetBoolean(kBoolean, true);
346 EXPECT_TRUE(prefs.GetBoolean(kBoolean)); 352 EXPECT_TRUE(prefs.GetBoolean(kBoolean));
347 prefs.SetInteger(kInteger, 5); 353 prefs.SetInteger(kInteger, 5);
348 EXPECT_EQ(5, prefs.GetInteger(kInteger)); 354 EXPECT_EQ(5, prefs.GetInteger(kInteger));
349 prefs.SetString(kString, L"foo"); 355 prefs.SetString(kString, L"foo");
350 EXPECT_EQ(L"foo", prefs.GetString(kString)); 356 EXPECT_EQ(L"foo", prefs.GetString(kString));
351 } 357 }
352 #endif 358 #endif
353 359
354 TEST_F(PrefServiceTest, NoObserverFire) { 360 TEST_F(PrefServiceTest, NoObserverFire) {
355 PrefService prefs(FilePath(), NULL); 361 PrefService prefs((FilePath()));
356 362
357 const wchar_t pref_name[] = L"homepage"; 363 const wchar_t pref_name[] = L"homepage";
358 prefs.RegisterStringPref(pref_name, L""); 364 prefs.RegisterStringPref(pref_name, L"");
359 365
360 const std::wstring new_pref_value(L"http://www.google.com/"); 366 const std::wstring new_pref_value(L"http://www.google.com/");
361 TestPrefObserver obs(&prefs, pref_name, new_pref_value); 367 TestPrefObserver obs(&prefs, pref_name, new_pref_value);
362 prefs.AddPrefObserver(pref_name, &obs); 368 prefs.AddPrefObserver(pref_name, &obs);
363 // This should fire the checks in TestPrefObserver::Observe. 369 // This should fire the checks in TestPrefObserver::Observe.
364 prefs.SetString(pref_name, new_pref_value); 370 prefs.SetString(pref_name, new_pref_value);
365 371
(...skipping 14 matching lines...) Expand all
380 // Clearing the pref again should not cause the pref to fire. 386 // Clearing the pref again should not cause the pref to fire.
381 obs.Reset(L""); 387 obs.Reset(L"");
382 prefs.ClearPref(pref_name); 388 prefs.ClearPref(pref_name);
383 EXPECT_FALSE(obs.observer_fired()); 389 EXPECT_FALSE(obs.observer_fired());
384 390
385 // Ok, clean up. 391 // Ok, clean up.
386 prefs.RemovePrefObserver(pref_name, &obs); 392 prefs.RemovePrefObserver(pref_name, &obs);
387 } 393 }
388 394
389 TEST_F(PrefServiceTest, HasPrefPath) { 395 TEST_F(PrefServiceTest, HasPrefPath) {
390 PrefService prefs(FilePath(), NULL); 396 PrefService prefs((FilePath()));
391 397
392 const wchar_t path[] = L"fake.path"; 398 const wchar_t path[] = L"fake.path";
393 399
394 // Shouldn't initially have a path. 400 // Shouldn't initially have a path.
395 EXPECT_FALSE(prefs.HasPrefPath(path)); 401 EXPECT_FALSE(prefs.HasPrefPath(path));
396 402
397 // Register the path. This doesn't set a value, so the path still shouldn't 403 // Register the path. This doesn't set a value, so the path still shouldn't
398 // exist. 404 // exist.
399 prefs.RegisterStringPref(path, std::wstring()); 405 prefs.RegisterStringPref(path, std::wstring());
400 EXPECT_FALSE(prefs.HasPrefPath(path)); 406 EXPECT_FALSE(prefs.HasPrefPath(path));
401 407
402 // Set a value and make sure we have a path. 408 // Set a value and make sure we have a path.
403 prefs.SetString(path, L"blah"); 409 prefs.SetString(path, L"blah");
404 EXPECT_TRUE(prefs.HasPrefPath(path)); 410 EXPECT_TRUE(prefs.HasPrefPath(path));
405 } 411 }
OLDNEW
« no previous file with comments | « chrome/common/pref_service.cc ('k') | chrome/test/in_process_browser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698