Index: chrome/test/live_sync/profile_sync_service_test_harness.cc |
=================================================================== |
--- chrome/test/live_sync/profile_sync_service_test_harness.cc (revision 58702) |
+++ chrome/test/live_sync/profile_sync_service_test_harness.cc (working copy) |
@@ -7,9 +7,11 @@ |
#include "chrome/browser/defaults.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/profile.h" |
+#include "chrome/browser/net/gaia/token_service.h" |
#include "chrome/browser/sync/glue/sync_backend_host.h" |
#include "chrome/browser/sync/sessions/session_state.h" |
#include "chrome/browser/tab_contents/tab_contents.h" |
+#include "chrome/common/net/gaia/gaia_constants.h" |
#include "chrome/common/net/gaia/google_service_auth_error.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/live_sync/profile_sync_service_test_harness.h" |
@@ -84,7 +86,8 @@ |
ProfileSyncServiceTestHarness::ProfileSyncServiceTestHarness(Profile* p, |
const std::string& username, const std::string& password, int id) |
- : wait_state_(WAITING_FOR_ON_AUTH_ERROR), profile_(p), service_(NULL), |
+ : wait_state_(WAITING_FOR_ON_BACKEND_INITIALIZED), |
+ profile_(p), service_(NULL), |
last_status_(kInvalidStatus), |
last_timestamp_(0), |
min_timestamp_needed_(kMinTimestampNeededNone), |
@@ -95,15 +98,11 @@ |
} |
bool ProfileSyncServiceTestHarness::SetupSync() { |
- service_ = profile_->GetProfileSyncService(); |
- service_->StartUp(); |
+ service_ = profile_->GetProfileSyncService(""); |
service_->AddObserver(this); |
- return WaitForServiceInit(false); |
-} |
+ service_->signin_.StartSignIn(username_, password_, "", ""); |
-bool ProfileSyncServiceTestHarness::RetryAuthentication() { |
- wait_state_ = WAITING_FOR_ON_BACKEND_INITIALIZED; |
- return WaitForServiceInit(true); |
+ return WaitForServiceInit(); |
} |
void ProfileSyncServiceTestHarness::SignalStateCompleteWithNextState( |
@@ -121,11 +120,6 @@ |
WaitState state = wait_state_; |
ProfileSyncService::Status status(service_->QueryDetailedSyncStatus()); |
switch (wait_state_) { |
- case WAITING_FOR_ON_AUTH_ERROR: { |
- LogClientInfo("WAITING_FOR_ON_AUTH_ERROR"); |
- SignalStateCompleteWithNextState(WAITING_FOR_ON_BACKEND_INITIALIZED); |
- break; |
- } |
case WAITING_FOR_ON_BACKEND_INITIALIZED: { |
LogClientInfo("WAITING_FOR_ON_BACKEND_INITIALIZED"); |
if (service_->GetAuthError().state() != GoogleServiceAuthError::NONE) { |
@@ -143,6 +137,21 @@ |
} |
break; |
} |
+ case WAITING_FOR_SERVER_REACHABLE: { |
+ LogClientInfo("WAITING_FOR_SERVER_REACHABLE"); |
+ const SyncSessionSnapshot* snap = GetLastSessionSnapshot(); |
+ if (!status.server_reachable) { |
+ break; |
+ } |
+ if (service()->backend()->HasUnsyncedItems() || |
+ snap->has_more_to_sync || snap->unsynced_count != 0) { |
+ SignalStateCompleteWithNextState(WAITING_FOR_SYNC_TO_FINISH); |
+ break; |
+ } |
+ last_timestamp_ = snap->max_local_timestamp; |
+ SignalStateCompleteWithNextState(FULLY_SYNCED); |
+ break; |
+ } |
case WAITING_FOR_SYNC_TO_FINISH: { |
LogClientInfo("WAITING_FOR_SYNC_TO_FINISH"); |
const SyncSessionSnapshot* snap = GetLastSessionSnapshot(); |
@@ -151,7 +160,10 @@ |
// be a sufficient condition for sync to have completed. However, the |
// additional check of snap->unsynced_count is required due to |
// http://crbug.com/48989. |
- if (snap->has_more_to_sync || snap->unsynced_count != 0) { |
+ if (service()->backend()->HasUnsyncedItems() || |
+ snap->has_more_to_sync || snap->unsynced_count != 0) { |
+ if (!status.server_reachable) |
+ SignalStateCompleteWithNextState(WAITING_FOR_SERVER_REACHABLE); |
break; |
} |
EXPECT_LE(last_timestamp_, snap->max_local_timestamp); |
@@ -286,18 +298,10 @@ |
return timeout_signal->Abort(); |
} |
-bool ProfileSyncServiceTestHarness::WaitForServiceInit(bool is_auth_retry) { |
+bool ProfileSyncServiceTestHarness::WaitForServiceInit() { |
LogClientInfo("WaitForServiceInit"); |
- if (!is_auth_retry) { |
- // Wait for the OnAuthError() callback. |
- EXPECT_EQ(wait_state_, WAITING_FOR_ON_AUTH_ERROR); |
- EXPECT_TRUE(AwaitStatusChangeWithTimeout(30, |
- "Waiting for the OnAuthError() callback.")) << |
- "OnAuthError() not seen after 30 seconds."; |
- } |
- // Enter GAIA credentials and wait for the OnBackendInitialized() callback. |
- service_->backend()->Authenticate(username_, password_, std::string()); |
+ // Wait for the OnBackendInitialized() callback. |
EXPECT_EQ(wait_state_, WAITING_FOR_ON_BACKEND_INITIALIZED); |
EXPECT_TRUE(AwaitStatusChangeWithTimeout(30, |
"Waiting for OnBackendInitialized().")) << |
@@ -307,15 +311,13 @@ |
return false; |
} |
- // Choose datatypes to be synced. Note: This is unnecessary on Chrome OS. |
- if (!browser_defaults::kBootstrapSyncAuthentication) { |
- syncable::ModelTypeSet set; |
- for (int i = syncable::FIRST_REAL_MODEL_TYPE; |
- i < syncable::MODEL_TYPE_COUNT; ++i) { |
- set.insert(syncable::ModelTypeFromInt(i)); |
- } |
- service_->OnUserChoseDatatypes(true, set); |
+ // Choose datatypes to be synced. |
+ syncable::ModelTypeSet set; |
+ for (int i = syncable::FIRST_REAL_MODEL_TYPE; |
+ i < syncable::MODEL_TYPE_COUNT; ++i) { |
+ set.insert(syncable::ModelTypeFromInt(i)); |
} |
+ service_->OnUserChoseDatatypes(true, set); |
// Wait for notifications_enabled to be set to true. |
EXPECT_EQ(wait_state_, WAITING_FOR_NOTIFICATIONS_ENABLED); |
@@ -329,7 +331,10 @@ |
const SyncSessionSnapshot* |
ProfileSyncServiceTestHarness::GetLastSessionSnapshot() const { |
EXPECT_FALSE(service_ == NULL) << "Sync service has not yet been set up."; |
- return service_->backend()->GetLastSessionSnapshot(); |
+ if (service_->backend()) { |
+ return service_->backend()->GetLastSessionSnapshot(); |
+ } |
+ return NULL; |
} |
void ProfileSyncServiceTestHarness::LogClientInfo(std::string message) { |