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

Side by Side Diff: chrome/browser/sync/profile_sync_service_unittest.cc

Issue 367063005: Use new sync backup DB if settings are reset to avoid undoing reset. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months 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/sync/profile_sync_service.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 "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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698