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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
11 #include "base/values.h" | 12 #include "base/values.h" |
12 #include "chrome/browser/invalidation/fake_invalidation_service.h" | 13 #include "chrome/browser/invalidation/fake_invalidation_service.h" |
13 #include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" | 14 #include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" |
14 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" | 15 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" |
15 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" | 16 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" |
16 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" | 17 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
17 #include "chrome/browser/signin/signin_manager_factory.h" | 18 #include "chrome/browser/signin/signin_manager_factory.h" |
18 #include "chrome/browser/sync/glue/sync_backend_host_mock.h" | 19 #include "chrome/browser/sync/glue/sync_backend_host_mock.h" |
19 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" | 20 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 token_status.last_get_token_error); | 486 token_status.last_get_token_error); |
486 EXPECT_TRUE(token_status.next_token_request_time.is_null()); | 487 EXPECT_TRUE(token_status.next_token_request_time.is_null()); |
487 | 488 |
488 // Simulate successful connection. | 489 // Simulate successful connection. |
489 service()->OnConnectionStatusChange(syncer::CONNECTION_OK); | 490 service()->OnConnectionStatusChange(syncer::CONNECTION_OK); |
490 token_status = service()->GetSyncTokenStatus(); | 491 token_status = service()->GetSyncTokenStatus(); |
491 EXPECT_EQ(syncer::CONNECTION_OK, token_status.connection_status); | 492 EXPECT_EQ(syncer::CONNECTION_OK, token_status.connection_status); |
492 } | 493 } |
493 | 494 |
494 #if defined(ENABLE_PRE_SYNC_BACKUP) | 495 #if defined(ENABLE_PRE_SYNC_BACKUP) |
495 void QuitLoop() { | |
496 base::MessageLoop::current()->Quit(); | |
497 } | |
498 | |
499 TEST_F(ProfileSyncServiceTest, StartBackup) { | 496 TEST_F(ProfileSyncServiceTest, StartBackup) { |
500 CreateServiceWithoutSignIn(); | 497 CreateServiceWithoutSignIn(); |
501 ExpectDataTypeManagerCreation(1); | 498 ExpectDataTypeManagerCreation(1); |
502 std::vector<bool> delete_dir_param; | 499 std::vector<bool> delete_dir_param; |
503 ExpectSyncBackendHostCreationCollectDeleteDir(1, &delete_dir_param); | 500 ExpectSyncBackendHostCreationCollectDeleteDir(1, &delete_dir_param); |
504 Initialize(); | 501 Initialize(); |
505 EXPECT_EQ(ProfileSyncService::IDLE, service()->backend_mode()); | 502 EXPECT_EQ(ProfileSyncService::IDLE, service()->backend_mode()); |
| 503 base::RunLoop run_loop; |
506 base::MessageLoop::current()->PostDelayedTask( | 504 base::MessageLoop::current()->PostDelayedTask( |
507 FROM_HERE, base::Bind(&QuitLoop), | 505 FROM_HERE, run_loop.QuitClosure(), |
508 base::TimeDelta::FromMilliseconds(100)); | 506 base::TimeDelta::FromMilliseconds(100)); |
509 base::MessageLoop::current()->Run(); | 507 run_loop.Run(); |
510 EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode()); | 508 EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode()); |
511 | 509 |
512 EXPECT_EQ(1u, delete_dir_param.size()); | 510 EXPECT_EQ(1u, delete_dir_param.size()); |
513 EXPECT_FALSE(delete_dir_param[0]); | 511 EXPECT_FALSE(delete_dir_param[0]); |
514 } | 512 } |
515 | 513 |
516 TEST_F(ProfileSyncServiceTest, BackupAfterSyncDisabled) { | 514 TEST_F(ProfileSyncServiceTest, BackupAfterSyncDisabled) { |
517 CreateService(browser_sync::MANUAL_START); | 515 CreateService(browser_sync::MANUAL_START); |
518 service()->SetSyncSetupCompleted(); | 516 service()->SetSyncSetupCompleted(); |
519 ExpectDataTypeManagerCreation(2); | 517 ExpectDataTypeManagerCreation(2); |
520 std::vector<bool> delete_dir_param; | 518 std::vector<bool> delete_dir_param; |
521 ExpectSyncBackendHostCreationCollectDeleteDir(2, &delete_dir_param); | 519 ExpectSyncBackendHostCreationCollectDeleteDir(2, &delete_dir_param); |
522 IssueTestTokens(); | 520 IssueTestTokens(); |
523 Initialize(); | 521 Initialize(); |
524 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitLoop)); | |
525 EXPECT_TRUE(service()->sync_initialized()); | 522 EXPECT_TRUE(service()->sync_initialized()); |
526 EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode()); | 523 EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode()); |
527 | 524 |
528 // First sync time should be recorded. | 525 // First sync time should be recorded. |
529 sync_driver::SyncPrefs sync_prefs(service()->profile()->GetPrefs()); | 526 sync_driver::SyncPrefs sync_prefs(service()->profile()->GetPrefs()); |
530 EXPECT_FALSE(sync_prefs.GetFirstSyncTime().is_null()); | 527 EXPECT_FALSE(sync_prefs.GetFirstSyncTime().is_null()); |
531 | 528 |
532 syncer::SyncProtocolError client_cmd; | 529 syncer::SyncProtocolError client_cmd; |
533 client_cmd.action = syncer::DISABLE_SYNC_ON_CLIENT; | 530 client_cmd.action = syncer::DISABLE_SYNC_ON_CLIENT; |
534 service()->OnActionableError(client_cmd); | 531 service()->OnActionableError(client_cmd); |
(...skipping 14 matching lines...) Expand all Loading... |
549 CommandLine::ForCurrentProcess()->AppendSwitch( | 546 CommandLine::ForCurrentProcess()->AppendSwitch( |
550 switches::kSyncEnableRollback); | 547 switches::kSyncEnableRollback); |
551 | 548 |
552 CreateService(browser_sync::MANUAL_START); | 549 CreateService(browser_sync::MANUAL_START); |
553 service()->SetSyncSetupCompleted(); | 550 service()->SetSyncSetupCompleted(); |
554 ExpectDataTypeManagerCreation(3); | 551 ExpectDataTypeManagerCreation(3); |
555 std::vector<bool> delete_dir_param; | 552 std::vector<bool> delete_dir_param; |
556 ExpectSyncBackendHostCreationCollectDeleteDir(3, &delete_dir_param); | 553 ExpectSyncBackendHostCreationCollectDeleteDir(3, &delete_dir_param); |
557 IssueTestTokens(); | 554 IssueTestTokens(); |
558 Initialize(); | 555 Initialize(); |
559 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitLoop)); | |
560 EXPECT_TRUE(service()->sync_initialized()); | 556 EXPECT_TRUE(service()->sync_initialized()); |
561 EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode()); | 557 EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode()); |
562 | 558 |
563 // First sync time should be recorded. | 559 // First sync time should be recorded. |
564 sync_driver::SyncPrefs sync_prefs(service()->profile()->GetPrefs()); | 560 sync_driver::SyncPrefs sync_prefs(service()->profile()->GetPrefs()); |
565 base::Time first_sync_time = sync_prefs.GetFirstSyncTime(); | 561 base::Time first_sync_time = sync_prefs.GetFirstSyncTime(); |
566 EXPECT_FALSE(first_sync_time.is_null()); | 562 EXPECT_FALSE(first_sync_time.is_null()); |
567 | 563 |
568 syncer::SyncProtocolError client_cmd; | 564 syncer::SyncProtocolError client_cmd; |
569 client_cmd.action = syncer::DISABLE_SYNC_AND_ROLLBACK; | 565 client_cmd.action = syncer::DISABLE_SYNC_AND_ROLLBACK; |
(...skipping 10 matching lines...) Expand all Loading... |
580 EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode()); | 576 EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode()); |
581 | 577 |
582 // First sync time is erased once backup starts. | 578 // First sync time is erased once backup starts. |
583 EXPECT_TRUE(sync_prefs.GetFirstSyncTime().is_null()); | 579 EXPECT_TRUE(sync_prefs.GetFirstSyncTime().is_null()); |
584 | 580 |
585 EXPECT_EQ(3u, delete_dir_param.size()); | 581 EXPECT_EQ(3u, delete_dir_param.size()); |
586 EXPECT_FALSE(delete_dir_param[0]); | 582 EXPECT_FALSE(delete_dir_param[0]); |
587 EXPECT_FALSE(delete_dir_param[1]); | 583 EXPECT_FALSE(delete_dir_param[1]); |
588 EXPECT_TRUE(delete_dir_param[2]); | 584 EXPECT_TRUE(delete_dir_param[2]); |
589 } | 585 } |
| 586 |
| 587 TEST_F(ProfileSyncServiceTest, StartNewBackupDbOnSettingsReset) { |
| 588 CreateServiceWithoutSignIn(); |
| 589 ExpectDataTypeManagerCreation(1); |
| 590 std::vector<bool> delete_dir_param; |
| 591 ExpectSyncBackendHostCreationCollectDeleteDir(1, &delete_dir_param); |
| 592 Initialize(); |
| 593 EXPECT_EQ(ProfileSyncService::IDLE, service()->backend_mode()); |
| 594 |
| 595 // Set reset time to pretend settings reset happened. |
| 596 profile()->GetPrefs()->SetString( |
| 597 prefs::kPreferenceResetTime, |
| 598 base::Int64ToString(base::Time::Now().ToInternalValue())); |
| 599 |
| 600 base::RunLoop run_loop; |
| 601 base::MessageLoop::current()->PostDelayedTask( |
| 602 FROM_HERE, run_loop.QuitClosure(), |
| 603 base::TimeDelta::FromMilliseconds(100)); |
| 604 run_loop.Run(); |
| 605 |
| 606 EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode()); |
| 607 |
| 608 EXPECT_EQ(1u, delete_dir_param.size()); |
| 609 EXPECT_TRUE(delete_dir_param[0]); |
| 610 } |
| 611 |
590 #endif | 612 #endif |
591 | 613 |
592 TEST_F(ProfileSyncServiceTest, GetSyncServiceURL) { | 614 TEST_F(ProfileSyncServiceTest, GetSyncServiceURL) { |
593 // See that we can override the URL with a flag. | 615 // See that we can override the URL with a flag. |
594 CommandLine command_line( | 616 CommandLine command_line( |
595 base::FilePath(base::FilePath(FILE_PATH_LITERAL("chrome.exe")))); | 617 base::FilePath(base::FilePath(FILE_PATH_LITERAL("chrome.exe")))); |
596 command_line.AppendSwitchASCII(switches::kSyncServiceURL, "https://foo/bar"); | 618 command_line.AppendSwitchASCII(switches::kSyncServiceURL, "https://foo/bar"); |
597 EXPECT_EQ("https://foo/bar", | 619 EXPECT_EQ("https://foo/bar", |
598 ProfileSyncService::GetSyncServiceURL(command_line).spec()); | 620 ProfileSyncService::GetSyncServiceURL(command_line).spec()); |
599 } | 621 } |
600 | 622 |
601 } // namespace | 623 } // namespace |
602 } // namespace browser_sync | 624 } // namespace browser_sync |
OLD | NEW |