| Index: chrome/browser/sync/test/integration/sync_test.cc
|
| diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc
|
| index 541c371847f9cdf301f58072d3dfe41e373401f8..f757b285a3c38f90f7655e2e9fafc3bd3c07f9ad 100644
|
| --- a/chrome/browser/sync/test/integration/sync_test.cc
|
| +++ b/chrome/browser/sync/test/integration/sync_test.cc
|
| @@ -34,6 +34,7 @@
|
| #include "chrome/browser/sync/profile_sync_service_factory.h"
|
| #include "chrome/browser/sync/test/integration/fake_server_invalidation_service.h"
|
| #include "chrome/browser/sync/test/integration/p2p_invalidation_forwarder.h"
|
| +#include "chrome/browser/sync/test/integration/p2p_sync_refresher.h"
|
| #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
|
| #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h"
|
| #include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
|
| @@ -388,6 +389,7 @@ bool SyncTest::SetupClients() {
|
| browsers_.resize(num_clients_);
|
| clients_.resize(num_clients_);
|
| invalidation_forwarders_.resize(num_clients_);
|
| + sync_refreshers_.resize(num_clients_);
|
| fake_server_invalidation_services_.resize(num_clients_);
|
| for (int i = 0; i < num_clients_; ++i) {
|
| InitializeInstance(i);
|
| @@ -483,7 +485,8 @@ void SyncTest::InitializeInvalidations(int index) {
|
| fake_server_invalidation_services_[index] = invalidation_service;
|
| } else if (server_type_ == EXTERNAL_LIVE_SERVER) {
|
| // DO NOTHING. External live sync servers use GCM to notify profiles of any
|
| - // invalidations in sync'ed data.
|
| + // invalidations in sync'ed data. In this case, to notify other profiles of
|
| + // invalidations, we use sync refresh notifications instead.
|
| } else {
|
| invalidation::P2PInvalidationService* p2p_invalidation_service =
|
| static_cast<invalidation::P2PInvalidationService*>(
|
| @@ -527,6 +530,19 @@ bool SyncTest::SetupSync() {
|
| AwaitQuiescence();
|
| }
|
|
|
| + // SyncRefresher is used instead of invalidations to notify other profiles to
|
| + // do a sync refresh on committed data sets. This is only needed when running
|
| + // tests against external live server, otherwise invalidation service is used.
|
| + // With external live servers, the profiles commit data on first sync cycle
|
| + // automatically after signing in. To avoid misleading sync commit
|
| + // notifications at start up, we start the SyncRefresher observers post
|
| + // client set up.
|
| + if (server_type_ == EXTERNAL_LIVE_SERVER) {
|
| + for (int i = 0; i < num_clients_; ++i) {
|
| + sync_refreshers_[i] = new P2PSyncRefresher(clients_[i]->service());
|
| + }
|
| + }
|
| +
|
| return true;
|
| }
|
|
|
| @@ -554,6 +570,7 @@ void SyncTest::TearDownOnMainThread() {
|
| // corruption in QuitBrowser().
|
| CHECK_EQ(0U, chrome::GetTotalBrowserCount());
|
| invalidation_forwarders_.clear();
|
| + sync_refreshers_.clear();
|
| fake_server_invalidation_services_.clear();
|
| clients_.clear();
|
| }
|
|
|