| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/sync/profile_sync_service_harness.h" | 5 #include "chrome/browser/sync/profile_sync_service_harness.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <iterator> | 9 #include <iterator> |
| 10 #include <ostream> | 10 #include <ostream> |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 | 88 |
| 89 bool StateChangeTimeoutEvent::Abort() { | 89 bool StateChangeTimeoutEvent::Abort() { |
| 90 aborted_ = true; | 90 aborted_ = true; |
| 91 caller_ = NULL; | 91 caller_ = NULL; |
| 92 return !did_timeout_; | 92 return !did_timeout_; |
| 93 } | 93 } |
| 94 | 94 |
| 95 ProfileSyncServiceHarness::ProfileSyncServiceHarness( | 95 ProfileSyncServiceHarness::ProfileSyncServiceHarness( |
| 96 Profile* profile, | 96 Profile* profile, |
| 97 const std::string& username, | 97 const std::string& username, |
| 98 const std::string& password, | 98 const std::string& password) |
| 99 bool expected_notifications_enabled) | |
| 100 : waiting_for_encryption_type_(syncable::UNSPECIFIED), | 99 : waiting_for_encryption_type_(syncable::UNSPECIFIED), |
| 101 wait_state_(INITIAL_WAIT_STATE), | 100 wait_state_(INITIAL_WAIT_STATE), |
| 102 profile_(profile), | 101 profile_(profile), |
| 103 service_(NULL), | 102 service_(NULL), |
| 104 timestamp_match_partner_(NULL), | 103 timestamp_match_partner_(NULL), |
| 105 username_(username), | 104 username_(username), |
| 106 password_(password), | 105 password_(password), |
| 107 expected_notifications_enabled_(expected_notifications_enabled), | |
| 108 profile_debug_name_(profile->GetDebugName()) { | 106 profile_debug_name_(profile->GetDebugName()) { |
| 109 if (IsSyncAlreadySetup()) { | 107 if (IsSyncAlreadySetup()) { |
| 110 service_ = profile_->GetProfileSyncService(); | 108 service_ = profile_->GetProfileSyncService(); |
| 111 service_->AddObserver(this); | 109 service_->AddObserver(this); |
| 112 wait_state_ = FULLY_SYNCED; | 110 wait_state_ = FULLY_SYNCED; |
| 113 } | 111 } |
| 114 } | 112 } |
| 115 | 113 |
| 116 ProfileSyncServiceHarness::~ProfileSyncServiceHarness() {} | 114 ProfileSyncServiceHarness::~ProfileSyncServiceHarness() {} |
| 117 | 115 |
| 118 // static | 116 // static |
| 119 ProfileSyncServiceHarness* ProfileSyncServiceHarness::CreateAndAttach( | 117 ProfileSyncServiceHarness* ProfileSyncServiceHarness::CreateAndAttach( |
| 120 Profile* profile) { | 118 Profile* profile) { |
| 121 if (!profile->HasProfileSyncService()) { | 119 if (!profile->HasProfileSyncService()) { |
| 122 NOTREACHED() << "Profile has never signed into sync."; | 120 NOTREACHED() << "Profile has never signed into sync."; |
| 123 return NULL; | 121 return NULL; |
| 124 } | 122 } |
| 125 return new ProfileSyncServiceHarness( | 123 return new ProfileSyncServiceHarness(profile, "", ""); |
| 126 profile, "", "", | |
| 127 /* expected_notifications_enabled */ true); | |
| 128 } | 124 } |
| 129 | 125 |
| 130 void ProfileSyncServiceHarness::SetCredentials(const std::string& username, | 126 void ProfileSyncServiceHarness::SetCredentials(const std::string& username, |
| 131 const std::string& password) { | 127 const std::string& password) { |
| 132 username_ = username; | 128 username_ = username; |
| 133 password_ = password; | 129 password_ = password; |
| 134 } | 130 } |
| 135 | 131 |
| 136 bool ProfileSyncServiceHarness::IsSyncAlreadySetup() { | 132 bool ProfileSyncServiceHarness::IsSyncAlreadySetup() { |
| 137 return profile_->HasProfileSyncService(); | 133 return profile_->HasProfileSyncService(); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 if (wait_state_ == SYNC_DISABLED) { | 462 if (wait_state_ == SYNC_DISABLED) { |
| 467 LOG(ERROR) << "Sync disabled for " << profile_debug_name_ << "."; | 463 LOG(ERROR) << "Sync disabled for " << profile_debug_name_ << "."; |
| 468 return false; | 464 return false; |
| 469 } | 465 } |
| 470 | 466 |
| 471 if (IsSynced()) { | 467 if (IsSynced()) { |
| 472 // Client is already synced; don't wait. | 468 // Client is already synced; don't wait. |
| 473 return true; | 469 return true; |
| 474 } | 470 } |
| 475 | 471 |
| 472 return AwaitSyncCycleCompletionHelper(reason); |
| 473 } |
| 474 |
| 475 bool ProfileSyncServiceHarness::AwaitNextSyncCycleCompletion( |
| 476 const std::string& reason) { |
| 477 VLOG(1) << GetClientInfoString("AwaitNextSyncCycleCompletion"); |
| 478 return AwaitSyncCycleCompletionHelper(reason); |
| 479 } |
| 480 |
| 481 bool ProfileSyncServiceHarness::AwaitSyncCycleCompletionHelper( |
| 482 const std::string& reason) { |
| 476 if (wait_state_ == SERVER_UNREACHABLE) { | 483 if (wait_state_ == SERVER_UNREACHABLE) { |
| 477 // Client was offline; wait for it to go online, and then wait for sync. | 484 // Client was offline; wait for it to go online, and then wait for sync. |
| 478 AwaitStatusChangeWithTimeout(kLiveSyncOperationTimeoutMs, reason); | 485 AwaitStatusChangeWithTimeout(kLiveSyncOperationTimeoutMs, reason); |
| 479 DCHECK_EQ(wait_state_, WAITING_FOR_SYNC_TO_FINISH); | 486 DCHECK_EQ(wait_state_, WAITING_FOR_SYNC_TO_FINISH); |
| 480 return AwaitStatusChangeWithTimeout(kLiveSyncOperationTimeoutMs, reason); | 487 return AwaitStatusChangeWithTimeout(kLiveSyncOperationTimeoutMs, reason); |
| 481 } | 488 } |
| 482 | 489 |
| 483 DCHECK(service()->sync_initialized()); | 490 DCHECK(service()->sync_initialized()); |
| 484 wait_state_ = WAITING_FOR_SYNC_TO_FINISH; | 491 wait_state_ = WAITING_FOR_SYNC_TO_FINISH; |
| 485 AwaitStatusChangeWithTimeout(kLiveSyncOperationTimeoutMs, reason); | 492 AwaitStatusChangeWithTimeout(kLiveSyncOperationTimeoutMs, reason); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 if (service() == NULL) { | 620 if (service() == NULL) { |
| 614 VLOG(1) << GetClientInfoString("IsSynced: false"); | 621 VLOG(1) << GetClientInfoString("IsSynced: false"); |
| 615 return false; | 622 return false; |
| 616 } | 623 } |
| 617 const SyncSessionSnapshot* snap = GetLastSessionSnapshot(); | 624 const SyncSessionSnapshot* snap = GetLastSessionSnapshot(); |
| 618 // TODO(rsimha): Remove additional checks of snap->has_more_to_sync and | 625 // TODO(rsimha): Remove additional checks of snap->has_more_to_sync and |
| 619 // snap->unsynced_count once http://crbug.com/48989 is fixed. | 626 // snap->unsynced_count once http://crbug.com/48989 is fixed. |
| 620 bool is_synced = snap && | 627 bool is_synced = snap && |
| 621 snap->num_blocking_conflicting_updates == 0 && | 628 snap->num_blocking_conflicting_updates == 0 && |
| 622 ServiceIsPushingChanges() && | 629 ServiceIsPushingChanges() && |
| 623 (GetStatus().notifications_enabled == | 630 GetStatus().notifications_enabled && |
| 624 expected_notifications_enabled_) && | |
| 625 !service()->HasUnsyncedItems() && | 631 !service()->HasUnsyncedItems() && |
| 626 !snap->has_more_to_sync && | 632 !snap->has_more_to_sync && |
| 627 snap->unsynced_count == 0 && | 633 snap->unsynced_count == 0 && |
| 628 !service()->HasPendingBackendMigration() && | 634 !service()->HasPendingBackendMigration() && |
| 629 service()->passphrase_required_reason() != | 635 service()->passphrase_required_reason() != |
| 630 sync_api::REASON_SET_PASSPHRASE_FAILED; | 636 sync_api::REASON_SET_PASSPHRASE_FAILED; |
| 631 VLOG(1) << GetClientInfoString( | 637 VLOG(1) << GetClientInfoString( |
| 632 is_synced ? "IsSynced: true" : "IsSynced: false"); | 638 is_synced ? "IsSynced: true" : "IsSynced: false"); |
| 633 return is_synced; | 639 return is_synced; |
| 634 } | 640 } |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 889 return (synced_types.count(type) != 0); | 895 return (synced_types.count(type) != 0); |
| 890 } | 896 } |
| 891 | 897 |
| 892 std::string ProfileSyncServiceHarness::GetServiceStatus() { | 898 std::string ProfileSyncServiceHarness::GetServiceStatus() { |
| 893 DictionaryValue value; | 899 DictionaryValue value; |
| 894 sync_ui_util::ConstructAboutInformation(service_, &value); | 900 sync_ui_util::ConstructAboutInformation(service_, &value); |
| 895 std::string service_status; | 901 std::string service_status; |
| 896 base::JSONWriter::Write(&value, true, &service_status); | 902 base::JSONWriter::Write(&value, true, &service_status); |
| 897 return service_status; | 903 return service_status; |
| 898 } | 904 } |
| OLD | NEW |