OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stdarg.h> | 5 #include <stdarg.h> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 element = g_list_next(element); | 250 element = g_list_next(element); |
251 } | 251 } |
252 g_list_free(results); | 252 g_list_free(results); |
253 return NULL; | 253 return NULL; |
254 } | 254 } |
255 | 255 |
256 const gchar* mock_gnome_keyring_result_to_message(GnomeKeyringResult res) { | 256 const gchar* mock_gnome_keyring_result_to_message(GnomeKeyringResult res) { |
257 return "mock keyring simulating failure"; | 257 return "mock keyring simulating failure"; |
258 } | 258 } |
259 | 259 |
260 } // namespace | 260 // Inherit to get access to protected fields. |
| 261 class MockGnomeKeyringLoader : public GnomeKeyringLoader { |
| 262 public: |
| 263 static bool LoadMockGnomeKeyring() { |
| 264 #define GNOME_KEYRING_ASSIGN_POINTER(name) \ |
| 265 gnome_keyring_##name = &mock_gnome_keyring_##name; |
| 266 GNOME_KEYRING_FOR_EACH_FUNC(GNOME_KEYRING_ASSIGN_POINTER) |
| 267 #undef GNOME_KEYRING_ASSIGN_POINTER |
| 268 keyring_loaded = true; |
| 269 // Reset the state of the mock library. |
| 270 mock_keyring_items.clear(); |
| 271 mock_keyring_reject_local_ids = false; |
| 272 return true; |
| 273 } |
| 274 }; |
| 275 |
| 276 } // anonymous namespace |
261 | 277 |
262 class NativeBackendGnomeTest : public testing::Test { | 278 class NativeBackendGnomeTest : public testing::Test { |
263 protected: | 279 protected: |
264 NativeBackendGnomeTest() | 280 NativeBackendGnomeTest() |
265 : ui_thread_(BrowserThread::UI, &message_loop_), | 281 : ui_thread_(BrowserThread::UI, &message_loop_), |
266 db_thread_(BrowserThread::DB) { | 282 db_thread_(BrowserThread::DB) { |
267 } | 283 } |
268 | 284 |
269 virtual void SetUp() { | 285 virtual void SetUp() { |
270 ASSERT_TRUE(db_thread_.Start()); | 286 ASSERT_TRUE(db_thread_.Start()); |
271 | 287 |
| 288 MockGnomeKeyringLoader::LoadMockGnomeKeyring(); |
| 289 |
272 form_google_.origin = GURL("http://www.google.com/"); | 290 form_google_.origin = GURL("http://www.google.com/"); |
273 form_google_.action = GURL("http://www.google.com/login"); | 291 form_google_.action = GURL("http://www.google.com/login"); |
274 form_google_.username_element = UTF8ToUTF16("user"); | 292 form_google_.username_element = UTF8ToUTF16("user"); |
275 form_google_.username_value = UTF8ToUTF16("joeschmoe"); | 293 form_google_.username_value = UTF8ToUTF16("joeschmoe"); |
276 form_google_.password_element = UTF8ToUTF16("pass"); | 294 form_google_.password_element = UTF8ToUTF16("pass"); |
277 form_google_.password_value = UTF8ToUTF16("seekrit"); | 295 form_google_.password_value = UTF8ToUTF16("seekrit"); |
278 form_google_.submit_element = UTF8ToUTF16("submit"); | 296 form_google_.submit_element = UTF8ToUTF16("submit"); |
279 form_google_.signon_realm = "Google"; | 297 form_google_.signon_realm = "Google"; |
280 | 298 |
281 form_isc_.origin = GURL("http://www.isc.org/"); | 299 form_isc_.origin = GURL("http://www.isc.org/"); |
282 form_isc_.action = GURL("http://www.isc.org/auth"); | 300 form_isc_.action = GURL("http://www.isc.org/auth"); |
283 form_isc_.username_element = UTF8ToUTF16("id"); | 301 form_isc_.username_element = UTF8ToUTF16("id"); |
284 form_isc_.username_value = UTF8ToUTF16("janedoe"); | 302 form_isc_.username_value = UTF8ToUTF16("janedoe"); |
285 form_isc_.password_element = UTF8ToUTF16("passwd"); | 303 form_isc_.password_element = UTF8ToUTF16("passwd"); |
286 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); | 304 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); |
287 form_isc_.submit_element = UTF8ToUTF16("login"); | 305 form_isc_.submit_element = UTF8ToUTF16("login"); |
288 form_isc_.signon_realm = "ISC"; | 306 form_isc_.signon_realm = "ISC"; |
289 } | 307 } |
290 | 308 |
291 virtual void TearDown() { | 309 virtual void TearDown() { |
292 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); | 310 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); |
293 MessageLoop::current()->Run(); | 311 MessageLoop::current()->Run(); |
294 db_thread_.Stop(); | 312 db_thread_.Stop(); |
295 } | 313 } |
296 | 314 |
297 static void SetUpMockKeyring(NativeBackendGnome* backend) { | |
298 LibGnomeKeyringLoader* loader = backend->libgnome_keyring_loader(); | |
299 loader->gnome_keyring_is_available = &mock_gnome_keyring_is_available; | |
300 loader->gnome_keyring_store_password = &mock_gnome_keyring_store_password; | |
301 loader->gnome_keyring_delete_password = &mock_gnome_keyring_delete_password; | |
302 loader->gnome_keyring_find_itemsv = &mock_gnome_keyring_find_itemsv; | |
303 loader->gnome_keyring_result_to_message = | |
304 &mock_gnome_keyring_result_to_message; | |
305 | |
306 // Reset the state of the mock library. | |
307 mock_keyring_items.clear(); | |
308 mock_keyring_reject_local_ids = false; | |
309 } | |
310 | |
311 void RunBothThreads() { | 315 void RunBothThreads() { |
312 // First we post a message to the DB thread that will run after all other | 316 // First we post a message to the DB thread that will run after all other |
313 // messages that have been posted to the DB thread (we don't expect more | 317 // messages that have been posted to the DB thread (we don't expect more |
314 // to be posted), which posts a message to the UI thread to quit the loop. | 318 // to be posted), which posts a message to the UI thread to quit the loop. |
315 // That way we can run both loops and be sure that the UI thread loop will | 319 // That way we can run both loops and be sure that the UI thread loop will |
316 // quit so we can get on with the rest of the test. | 320 // quit so we can get on with the rest of the test. |
317 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 321 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
318 base::Bind(&PostQuitTask, &message_loop_)); | 322 base::Bind(&PostQuitTask, &message_loop_)); |
319 MessageLoop::current()->Run(); | 323 MessageLoop::current()->Run(); |
320 } | 324 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 PasswordForm form_google_; | 388 PasswordForm form_google_; |
385 PasswordForm form_isc_; | 389 PasswordForm form_isc_; |
386 }; | 390 }; |
387 | 391 |
388 TEST_F(NativeBackendGnomeTest, BasicAddLogin) { | 392 TEST_F(NativeBackendGnomeTest, BasicAddLogin) { |
389 // Pretend that the migration has already taken place. | 393 // Pretend that the migration has already taken place. |
390 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 394 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
391 | 395 |
392 NativeBackendGnome backend(42, profile_.GetPrefs()); | 396 NativeBackendGnome backend(42, profile_.GetPrefs()); |
393 backend.Init(); | 397 backend.Init(); |
394 SetUpMockKeyring(&backend); | |
395 | 398 |
396 BrowserThread::PostTask( | 399 BrowserThread::PostTask( |
397 BrowserThread::DB, FROM_HERE, | 400 BrowserThread::DB, FROM_HERE, |
398 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 401 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
399 base::Unretained(&backend), form_google_)); | 402 base::Unretained(&backend), form_google_)); |
400 | 403 |
401 RunBothThreads(); | 404 RunBothThreads(); |
402 | 405 |
403 EXPECT_EQ(1u, mock_keyring_items.size()); | 406 EXPECT_EQ(1u, mock_keyring_items.size()); |
404 if (mock_keyring_items.size() > 0) | 407 if (mock_keyring_items.size() > 0) |
405 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); | 408 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
406 } | 409 } |
407 | 410 |
408 TEST_F(NativeBackendGnomeTest, BasicListLogins) { | 411 TEST_F(NativeBackendGnomeTest, BasicListLogins) { |
409 // Pretend that the migration has already taken place. | 412 // Pretend that the migration has already taken place. |
410 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 413 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
411 | 414 |
412 NativeBackendGnome backend(42, profile_.GetPrefs()); | 415 NativeBackendGnome backend(42, profile_.GetPrefs()); |
413 backend.Init(); | 416 backend.Init(); |
414 SetUpMockKeyring(&backend); | |
415 | 417 |
416 BrowserThread::PostTask( | 418 BrowserThread::PostTask( |
417 BrowserThread::DB, FROM_HERE, | 419 BrowserThread::DB, FROM_HERE, |
418 base::Bind(base::IgnoreResult( &NativeBackendGnome::AddLogin), | 420 base::Bind(base::IgnoreResult( &NativeBackendGnome::AddLogin), |
419 base::Unretained(&backend), form_google_)); | 421 base::Unretained(&backend), form_google_)); |
420 | 422 |
421 std::vector<PasswordForm*> form_list; | 423 std::vector<PasswordForm*> form_list; |
422 BrowserThread::PostTask( | 424 BrowserThread::PostTask( |
423 BrowserThread::DB, FROM_HERE, | 425 BrowserThread::DB, FROM_HERE, |
424 base::Bind( | 426 base::Bind( |
(...skipping 10 matching lines...) Expand all Loading... |
435 if (mock_keyring_items.size() > 0) | 437 if (mock_keyring_items.size() > 0) |
436 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); | 438 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
437 } | 439 } |
438 | 440 |
439 TEST_F(NativeBackendGnomeTest, BasicRemoveLogin) { | 441 TEST_F(NativeBackendGnomeTest, BasicRemoveLogin) { |
440 // Pretend that the migration has already taken place. | 442 // Pretend that the migration has already taken place. |
441 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 443 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
442 | 444 |
443 NativeBackendGnome backend(42, profile_.GetPrefs()); | 445 NativeBackendGnome backend(42, profile_.GetPrefs()); |
444 backend.Init(); | 446 backend.Init(); |
445 SetUpMockKeyring(&backend); | |
446 | 447 |
447 BrowserThread::PostTask( | 448 BrowserThread::PostTask( |
448 BrowserThread::DB, FROM_HERE, | 449 BrowserThread::DB, FROM_HERE, |
449 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 450 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
450 base::Unretained(&backend), form_google_)); | 451 base::Unretained(&backend), form_google_)); |
451 | 452 |
452 RunBothThreads(); | 453 RunBothThreads(); |
453 | 454 |
454 EXPECT_EQ(1u, mock_keyring_items.size()); | 455 EXPECT_EQ(1u, mock_keyring_items.size()); |
455 if (mock_keyring_items.size() > 0) | 456 if (mock_keyring_items.size() > 0) |
456 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); | 457 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
457 | 458 |
458 BrowserThread::PostTask( | 459 BrowserThread::PostTask( |
459 BrowserThread::DB, FROM_HERE, | 460 BrowserThread::DB, FROM_HERE, |
460 base::Bind(base::IgnoreResult(&NativeBackendGnome::RemoveLogin), | 461 base::Bind(base::IgnoreResult(&NativeBackendGnome::RemoveLogin), |
461 base::Unretained(&backend), form_google_)); | 462 base::Unretained(&backend), form_google_)); |
462 | 463 |
463 RunBothThreads(); | 464 RunBothThreads(); |
464 | 465 |
465 EXPECT_EQ(0u, mock_keyring_items.size()); | 466 EXPECT_EQ(0u, mock_keyring_items.size()); |
466 } | 467 } |
467 | 468 |
468 TEST_F(NativeBackendGnomeTest, RemoveNonexistentLogin) { | 469 TEST_F(NativeBackendGnomeTest, RemoveNonexistentLogin) { |
469 // Pretend that the migration has already taken place. | 470 // Pretend that the migration has already taken place. |
470 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 471 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
471 | 472 |
472 NativeBackendGnome backend(42, profile_.GetPrefs()); | 473 NativeBackendGnome backend(42, profile_.GetPrefs()); |
473 backend.Init(); | 474 backend.Init(); |
474 SetUpMockKeyring(&backend); | |
475 | 475 |
476 // First add an unrelated login. | 476 // First add an unrelated login. |
477 BrowserThread::PostTask( | 477 BrowserThread::PostTask( |
478 BrowserThread::DB, FROM_HERE, | 478 BrowserThread::DB, FROM_HERE, |
479 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 479 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
480 base::Unretained(&backend), form_google_)); | 480 base::Unretained(&backend), form_google_)); |
481 | 481 |
482 RunBothThreads(); | 482 RunBothThreads(); |
483 | 483 |
484 EXPECT_EQ(1u, mock_keyring_items.size()); | 484 EXPECT_EQ(1u, mock_keyring_items.size()); |
(...skipping 24 matching lines...) Expand all Loading... |
509 if (mock_keyring_items.size() > 0) | 509 if (mock_keyring_items.size() > 0) |
510 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); | 510 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
511 } | 511 } |
512 | 512 |
513 TEST_F(NativeBackendGnomeTest, AddDuplicateLogin) { | 513 TEST_F(NativeBackendGnomeTest, AddDuplicateLogin) { |
514 // Pretend that the migration has already taken place. | 514 // Pretend that the migration has already taken place. |
515 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 515 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
516 | 516 |
517 NativeBackendGnome backend(42, profile_.GetPrefs()); | 517 NativeBackendGnome backend(42, profile_.GetPrefs()); |
518 backend.Init(); | 518 backend.Init(); |
519 SetUpMockKeyring(&backend); | |
520 | 519 |
521 BrowserThread::PostTask( | 520 BrowserThread::PostTask( |
522 BrowserThread::DB, FROM_HERE, | 521 BrowserThread::DB, FROM_HERE, |
523 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 522 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
524 base::Unretained(&backend), form_google_)); | 523 base::Unretained(&backend), form_google_)); |
525 BrowserThread::PostTask( | 524 BrowserThread::PostTask( |
526 BrowserThread::DB, FROM_HERE, | 525 BrowserThread::DB, FROM_HERE, |
527 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 526 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
528 base::Unretained(&backend), form_google_)); | 527 base::Unretained(&backend), form_google_)); |
529 | 528 |
530 RunBothThreads(); | 529 RunBothThreads(); |
531 | 530 |
532 EXPECT_EQ(1u, mock_keyring_items.size()); | 531 EXPECT_EQ(1u, mock_keyring_items.size()); |
533 if (mock_keyring_items.size() > 0) | 532 if (mock_keyring_items.size() > 0) |
534 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); | 533 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
535 } | 534 } |
536 | 535 |
537 TEST_F(NativeBackendGnomeTest, ListLoginsAppends) { | 536 TEST_F(NativeBackendGnomeTest, ListLoginsAppends) { |
538 // Pretend that the migration has already taken place. | 537 // Pretend that the migration has already taken place. |
539 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 538 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
540 | 539 |
541 NativeBackendGnome backend(42, profile_.GetPrefs()); | 540 NativeBackendGnome backend(42, profile_.GetPrefs()); |
542 backend.Init(); | 541 backend.Init(); |
543 SetUpMockKeyring(&backend); | |
544 | 542 |
545 BrowserThread::PostTask( | 543 BrowserThread::PostTask( |
546 BrowserThread::DB, FROM_HERE, | 544 BrowserThread::DB, FROM_HERE, |
547 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 545 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
548 base::Unretained(&backend), form_google_)); | 546 base::Unretained(&backend), form_google_)); |
549 | 547 |
550 // Send the same request twice with the same list both times. | 548 // Send the same request twice with the same list both times. |
551 std::vector<PasswordForm*> form_list; | 549 std::vector<PasswordForm*> form_list; |
552 BrowserThread::PostTask( | 550 BrowserThread::PostTask( |
553 BrowserThread::DB, FROM_HERE, | 551 BrowserThread::DB, FROM_HERE, |
(...skipping 19 matching lines...) Expand all Loading... |
573 | 571 |
574 // TODO(mdm): add more basic (i.e. non-migration) tests here at some point. | 572 // TODO(mdm): add more basic (i.e. non-migration) tests here at some point. |
575 | 573 |
576 TEST_F(NativeBackendGnomeTest, DISABLED_MigrateOneLogin) { | 574 TEST_F(NativeBackendGnomeTest, DISABLED_MigrateOneLogin) { |
577 // Reject attempts to migrate so we can populate the store. | 575 // Reject attempts to migrate so we can populate the store. |
578 mock_keyring_reject_local_ids = true; | 576 mock_keyring_reject_local_ids = true; |
579 | 577 |
580 { | 578 { |
581 NativeBackendGnome backend(42, profile_.GetPrefs()); | 579 NativeBackendGnome backend(42, profile_.GetPrefs()); |
582 backend.Init(); | 580 backend.Init(); |
583 SetUpMockKeyring(&backend); | |
584 | 581 |
585 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 582 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
586 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 583 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
587 base::Unretained(&backend), form_google_)); | 584 base::Unretained(&backend), form_google_)); |
588 | 585 |
589 // Make sure we can get the form back even when migration is failing. | 586 // Make sure we can get the form back even when migration is failing. |
590 std::vector<PasswordForm*> form_list; | 587 std::vector<PasswordForm*> form_list; |
591 BrowserThread::PostTask( | 588 BrowserThread::PostTask( |
592 BrowserThread::DB, FROM_HERE, | 589 BrowserThread::DB, FROM_HERE, |
593 base::Bind( | 590 base::Bind( |
(...skipping 10 matching lines...) Expand all Loading... |
604 EXPECT_EQ(1u, mock_keyring_items.size()); | 601 EXPECT_EQ(1u, mock_keyring_items.size()); |
605 if (mock_keyring_items.size() > 0) | 602 if (mock_keyring_items.size() > 0) |
606 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); | 603 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); |
607 | 604 |
608 // Now allow the migration. | 605 // Now allow the migration. |
609 mock_keyring_reject_local_ids = false; | 606 mock_keyring_reject_local_ids = false; |
610 | 607 |
611 { | 608 { |
612 NativeBackendGnome backend(42, profile_.GetPrefs()); | 609 NativeBackendGnome backend(42, profile_.GetPrefs()); |
613 backend.Init(); | 610 backend.Init(); |
614 SetUpMockKeyring(&backend); | |
615 | 611 |
616 // This should not trigger migration because there will be no results. | 612 // This should not trigger migration because there will be no results. |
617 std::vector<PasswordForm*> form_list; | 613 std::vector<PasswordForm*> form_list; |
618 BrowserThread::PostTask( | 614 BrowserThread::PostTask( |
619 BrowserThread::DB, FROM_HERE, | 615 BrowserThread::DB, FROM_HERE, |
620 base::Bind(base::IgnoreResult(&NativeBackendGnome::GetBlacklistLogins), | 616 base::Bind(base::IgnoreResult(&NativeBackendGnome::GetBlacklistLogins), |
621 base::Unretained(&backend), &form_list)); | 617 base::Unretained(&backend), &form_list)); |
622 | 618 |
623 RunBothThreads(); | 619 RunBothThreads(); |
624 | 620 |
625 // Check that we got nothing back. | 621 // Check that we got nothing back. |
626 EXPECT_EQ(0u, form_list.size()); | 622 EXPECT_EQ(0u, form_list.size()); |
627 STLDeleteElements(&form_list); | 623 STLDeleteElements(&form_list); |
628 } | 624 } |
629 | 625 |
630 // Check that the keyring is unmodified. | 626 // Check that the keyring is unmodified. |
631 EXPECT_EQ(1u, mock_keyring_items.size()); | 627 EXPECT_EQ(1u, mock_keyring_items.size()); |
632 if (mock_keyring_items.size() > 0) | 628 if (mock_keyring_items.size() > 0) |
633 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); | 629 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); |
634 | 630 |
635 // Check that we haven't set the persistent preference. | 631 // Check that we haven't set the persistent preference. |
636 EXPECT_FALSE( | 632 EXPECT_FALSE( |
637 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 633 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
638 | 634 |
639 { | 635 { |
640 NativeBackendGnome backend(42, profile_.GetPrefs()); | 636 NativeBackendGnome backend(42, profile_.GetPrefs()); |
641 backend.Init(); | 637 backend.Init(); |
642 SetUpMockKeyring(&backend); | |
643 | 638 |
644 // Trigger the migration by looking something up. | 639 // Trigger the migration by looking something up. |
645 std::vector<PasswordForm*> form_list; | 640 std::vector<PasswordForm*> form_list; |
646 BrowserThread::PostTask( | 641 BrowserThread::PostTask( |
647 BrowserThread::DB, FROM_HERE, | 642 BrowserThread::DB, FROM_HERE, |
648 base::Bind( | 643 base::Bind( |
649 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), | 644 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), |
650 base::Unretained(&backend), &form_list)); | 645 base::Unretained(&backend), &form_list)); |
651 | 646 |
652 RunBothThreads(); | 647 RunBothThreads(); |
(...skipping 14 matching lines...) Expand all Loading... |
667 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 662 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
668 } | 663 } |
669 | 664 |
670 TEST_F(NativeBackendGnomeTest, DISABLED_MigrateToMultipleProfiles) { | 665 TEST_F(NativeBackendGnomeTest, DISABLED_MigrateToMultipleProfiles) { |
671 // Reject attempts to migrate so we can populate the store. | 666 // Reject attempts to migrate so we can populate the store. |
672 mock_keyring_reject_local_ids = true; | 667 mock_keyring_reject_local_ids = true; |
673 | 668 |
674 { | 669 { |
675 NativeBackendGnome backend(42, profile_.GetPrefs()); | 670 NativeBackendGnome backend(42, profile_.GetPrefs()); |
676 backend.Init(); | 671 backend.Init(); |
677 SetUpMockKeyring(&backend); | |
678 | 672 |
679 BrowserThread::PostTask( | 673 BrowserThread::PostTask( |
680 BrowserThread::DB, FROM_HERE, | 674 BrowserThread::DB, FROM_HERE, |
681 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 675 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
682 base::Unretained(&backend), form_google_)); | 676 base::Unretained(&backend), form_google_)); |
683 | 677 |
684 RunBothThreads(); | 678 RunBothThreads(); |
685 } | 679 } |
686 | 680 |
687 EXPECT_EQ(1u, mock_keyring_items.size()); | 681 EXPECT_EQ(1u, mock_keyring_items.size()); |
688 if (mock_keyring_items.size() > 0) | 682 if (mock_keyring_items.size() > 0) |
689 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); | 683 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); |
690 | 684 |
691 // Now allow the migration. | 685 // Now allow the migration. |
692 mock_keyring_reject_local_ids = false; | 686 mock_keyring_reject_local_ids = false; |
693 | 687 |
694 { | 688 { |
695 NativeBackendGnome backend(42, profile_.GetPrefs()); | 689 NativeBackendGnome backend(42, profile_.GetPrefs()); |
696 backend.Init(); | 690 backend.Init(); |
697 SetUpMockKeyring(&backend); | |
698 | 691 |
699 // Trigger the migration by looking something up. | 692 // Trigger the migration by looking something up. |
700 std::vector<PasswordForm*> form_list; | 693 std::vector<PasswordForm*> form_list; |
701 BrowserThread::PostTask( | 694 BrowserThread::PostTask( |
702 BrowserThread::DB, FROM_HERE, | 695 BrowserThread::DB, FROM_HERE, |
703 base::Bind( | 696 base::Bind( |
704 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), | 697 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), |
705 base::Unretained(&backend), &form_list)); | 698 base::Unretained(&backend), &form_list)); |
706 | 699 |
707 RunBothThreads(); | 700 RunBothThreads(); |
(...skipping 13 matching lines...) Expand all Loading... |
721 EXPECT_TRUE( | 714 EXPECT_TRUE( |
722 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 715 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
723 | 716 |
724 // Normally we'd actually have a different profile. But in the test just reset | 717 // Normally we'd actually have a different profile. But in the test just reset |
725 // the profile's persistent pref; we pass in the local profile id anyway. | 718 // the profile's persistent pref; we pass in the local profile id anyway. |
726 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); | 719 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); |
727 | 720 |
728 { | 721 { |
729 NativeBackendGnome backend(24, profile_.GetPrefs()); | 722 NativeBackendGnome backend(24, profile_.GetPrefs()); |
730 backend.Init(); | 723 backend.Init(); |
731 SetUpMockKeyring(&backend); | |
732 | 724 |
733 // Trigger the migration by looking something up. | 725 // Trigger the migration by looking something up. |
734 std::vector<PasswordForm*> form_list; | 726 std::vector<PasswordForm*> form_list; |
735 BrowserThread::PostTask( | 727 BrowserThread::PostTask( |
736 BrowserThread::DB, FROM_HERE, | 728 BrowserThread::DB, FROM_HERE, |
737 base::Bind( | 729 base::Bind( |
738 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), | 730 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), |
739 base::Unretained(&backend), &form_list)); | 731 base::Unretained(&backend), &form_list)); |
740 | 732 |
741 RunBothThreads(); | 733 RunBothThreads(); |
(...skipping 12 matching lines...) Expand all Loading... |
754 CheckMockKeyringItem(&mock_keyring_items[2], form_google_, "chrome-24"); | 746 CheckMockKeyringItem(&mock_keyring_items[2], form_google_, "chrome-24"); |
755 } | 747 } |
756 | 748 |
757 TEST_F(NativeBackendGnomeTest, DISABLED_NoMigrationWithPrefSet) { | 749 TEST_F(NativeBackendGnomeTest, DISABLED_NoMigrationWithPrefSet) { |
758 // Reject attempts to migrate so we can populate the store. | 750 // Reject attempts to migrate so we can populate the store. |
759 mock_keyring_reject_local_ids = true; | 751 mock_keyring_reject_local_ids = true; |
760 | 752 |
761 { | 753 { |
762 NativeBackendGnome backend(42, profile_.GetPrefs()); | 754 NativeBackendGnome backend(42, profile_.GetPrefs()); |
763 backend.Init(); | 755 backend.Init(); |
764 SetUpMockKeyring(&backend); | |
765 | 756 |
766 BrowserThread::PostTask( | 757 BrowserThread::PostTask( |
767 BrowserThread::DB, FROM_HERE, | 758 BrowserThread::DB, FROM_HERE, |
768 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 759 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
769 base::Unretained(&backend), form_google_)); | 760 base::Unretained(&backend), form_google_)); |
770 | 761 |
771 RunBothThreads(); | 762 RunBothThreads(); |
772 } | 763 } |
773 | 764 |
774 EXPECT_EQ(1u, mock_keyring_items.size()); | 765 EXPECT_EQ(1u, mock_keyring_items.size()); |
775 if (mock_keyring_items.size() > 0) | 766 if (mock_keyring_items.size() > 0) |
776 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); | 767 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); |
777 | 768 |
778 // Now allow migration, but also pretend that the it has already taken place. | 769 // Now allow migration, but also pretend that the it has already taken place. |
779 mock_keyring_reject_local_ids = false; | 770 mock_keyring_reject_local_ids = false; |
780 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 771 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
781 | 772 |
782 { | 773 { |
783 NativeBackendGnome backend(42, profile_.GetPrefs()); | 774 NativeBackendGnome backend(42, profile_.GetPrefs()); |
784 backend.Init(); | 775 backend.Init(); |
785 SetUpMockKeyring(&backend); | |
786 | 776 |
787 // Trigger the migration by adding a new login. | 777 // Trigger the migration by adding a new login. |
788 BrowserThread::PostTask( | 778 BrowserThread::PostTask( |
789 BrowserThread::DB, FROM_HERE, | 779 BrowserThread::DB, FROM_HERE, |
790 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 780 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
791 base::Unretained(&backend), form_isc_)); | 781 base::Unretained(&backend), form_isc_)); |
792 | 782 |
793 // Look up all logins; we expect only the one we added. | 783 // Look up all logins; we expect only the one we added. |
794 std::vector<PasswordForm*> form_list; | 784 std::vector<PasswordForm*> form_list; |
795 BrowserThread::PostTask( | 785 BrowserThread::PostTask( |
(...skipping 18 matching lines...) Expand all Loading... |
814 CheckMockKeyringItem(&mock_keyring_items[1], form_isc_, "chrome-42"); | 804 CheckMockKeyringItem(&mock_keyring_items[1], form_isc_, "chrome-42"); |
815 } | 805 } |
816 | 806 |
817 TEST_F(NativeBackendGnomeTest, DISABLED_DeleteMigratedPasswordIsIsolated) { | 807 TEST_F(NativeBackendGnomeTest, DISABLED_DeleteMigratedPasswordIsIsolated) { |
818 // Reject attempts to migrate so we can populate the store. | 808 // Reject attempts to migrate so we can populate the store. |
819 mock_keyring_reject_local_ids = true; | 809 mock_keyring_reject_local_ids = true; |
820 | 810 |
821 { | 811 { |
822 NativeBackendGnome backend(42, profile_.GetPrefs()); | 812 NativeBackendGnome backend(42, profile_.GetPrefs()); |
823 backend.Init(); | 813 backend.Init(); |
824 SetUpMockKeyring(&backend); | |
825 | 814 |
826 BrowserThread::PostTask( | 815 BrowserThread::PostTask( |
827 BrowserThread::DB, FROM_HERE, | 816 BrowserThread::DB, FROM_HERE, |
828 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), | 817 base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
829 base::Unretained(&backend), form_google_)); | 818 base::Unretained(&backend), form_google_)); |
830 | 819 |
831 RunBothThreads(); | 820 RunBothThreads(); |
832 } | 821 } |
833 | 822 |
834 EXPECT_EQ(1u, mock_keyring_items.size()); | 823 EXPECT_EQ(1u, mock_keyring_items.size()); |
835 if (mock_keyring_items.size() > 0) | 824 if (mock_keyring_items.size() > 0) |
836 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); | 825 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); |
837 | 826 |
838 // Now allow the migration. | 827 // Now allow the migration. |
839 mock_keyring_reject_local_ids = false; | 828 mock_keyring_reject_local_ids = false; |
840 | 829 |
841 { | 830 { |
842 NativeBackendGnome backend(42, profile_.GetPrefs()); | 831 NativeBackendGnome backend(42, profile_.GetPrefs()); |
843 backend.Init(); | 832 backend.Init(); |
844 SetUpMockKeyring(&backend); | |
845 | 833 |
846 // Trigger the migration by looking something up. | 834 // Trigger the migration by looking something up. |
847 std::vector<PasswordForm*> form_list; | 835 std::vector<PasswordForm*> form_list; |
848 BrowserThread::PostTask( | 836 BrowserThread::PostTask( |
849 BrowserThread::DB, FROM_HERE, | 837 BrowserThread::DB, FROM_HERE, |
850 base::Bind( | 838 base::Bind( |
851 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), | 839 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), |
852 base::Unretained(&backend), &form_list)); | 840 base::Unretained(&backend), &form_list)); |
853 | 841 |
854 RunBothThreads(); | 842 RunBothThreads(); |
(...skipping 13 matching lines...) Expand all Loading... |
868 EXPECT_TRUE( | 856 EXPECT_TRUE( |
869 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 857 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
870 | 858 |
871 // Normally we'd actually have a different profile. But in the test just reset | 859 // Normally we'd actually have a different profile. But in the test just reset |
872 // the profile's persistent pref; we pass in the local profile id anyway. | 860 // the profile's persistent pref; we pass in the local profile id anyway. |
873 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); | 861 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); |
874 | 862 |
875 { | 863 { |
876 NativeBackendGnome backend(24, profile_.GetPrefs()); | 864 NativeBackendGnome backend(24, profile_.GetPrefs()); |
877 backend.Init(); | 865 backend.Init(); |
878 SetUpMockKeyring(&backend); | |
879 | 866 |
880 // Trigger the migration by looking something up. | 867 // Trigger the migration by looking something up. |
881 std::vector<PasswordForm*> form_list; | 868 std::vector<PasswordForm*> form_list; |
882 BrowserThread::PostTask( | 869 BrowserThread::PostTask( |
883 BrowserThread::DB, FROM_HERE, | 870 BrowserThread::DB, FROM_HERE, |
884 base::Bind( | 871 base::Bind( |
885 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), | 872 base::IgnoreResult(&NativeBackendGnome::GetAutofillableLogins), |
886 base::Unretained(&backend), &form_list)); | 873 base::Unretained(&backend), &form_list)); |
887 | 874 |
888 RunBothThreads(); | 875 RunBothThreads(); |
(...skipping 20 matching lines...) Expand all Loading... |
909 RunBothThreads(); | 896 RunBothThreads(); |
910 | 897 |
911 // The other two copies of the password in different profiles should remain. | 898 // The other two copies of the password in different profiles should remain. |
912 EXPECT_EQ(2u, mock_keyring_items.size()); | 899 EXPECT_EQ(2u, mock_keyring_items.size()); |
913 if (mock_keyring_items.size() > 0) | 900 if (mock_keyring_items.size() > 0) |
914 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); | 901 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome"); |
915 if (mock_keyring_items.size() > 1) | 902 if (mock_keyring_items.size() > 1) |
916 CheckMockKeyringItem(&mock_keyring_items[1], form_google_, "chrome-42"); | 903 CheckMockKeyringItem(&mock_keyring_items[1], form_google_, "chrome-42"); |
917 } | 904 } |
918 } | 905 } |
OLD | NEW |