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

Side by Side Diff: chrome/browser/password_manager/native_backend_gnome_x_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698