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

Unified Diff: chrome/browser/sync/engine/syncapi.cc

Issue 6690020: sync: hook up ServerConnectionManager <> SyncerThread2 and tie up more loose ends (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/debug
Patch Set: rebase Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/engine/syncapi.cc
diff --git a/chrome/browser/sync/engine/syncapi.cc b/chrome/browser/sync/engine/syncapi.cc
index 93fe7281ee984d9f3aaa1fdd4307309b7c360341..5e9f3eba59312bfb8a9b99ad017c1dd6f171d73d 100644
--- a/chrome/browser/sync/engine/syncapi.cc
+++ b/chrome/browser/sync/engine/syncapi.cc
@@ -72,6 +72,8 @@ using browser_sync::ModelSafeRoutingInfo;
using browser_sync::ModelSafeWorker;
using browser_sync::ModelSafeWorkerRegistrar;
using browser_sync::ServerConnectionEvent;
+using browser_sync::ServerConnectionEvent2;
+using browser_sync::ServerConnectionEventListener;
using browser_sync::SyncEngineEvent;
using browser_sync::SyncEngineEventListener;
using browser_sync::Syncer;
@@ -1110,7 +1112,8 @@ class SyncManager::SyncInternal
public sync_notifier::SyncNotifierObserver,
public browser_sync::ChannelEventHandler<syncable::DirectoryChangeEvent>,
public browser_sync::JsBackend,
- public SyncEngineEventListener {
+ public SyncEngineEventListener,
+ public ServerConnectionEventListener {
static const int kDefaultNudgeDelayMilliseconds;
static const int kPreferencesNudgeDelayMilliseconds;
public:
@@ -1307,6 +1310,9 @@ class SyncManager::SyncInternal
// SyncEngineEventListener implementation.
virtual void OnSyncEngineEvent(const SyncEngineEvent& event);
+ // ServerConnectionEventListener implementation.
+ virtual void OnServerConnectionEvent(const ServerConnectionEvent2& event);
+
// browser_sync::JsBackend implementation.
virtual void SetParentJsEventRouter(browser_sync::JsEventRouter* router);
virtual void RemoveParentJsEventRouter();
@@ -1608,11 +1614,18 @@ void SyncManager::RequestConfig(const syncable::ModelTypeBitSet& types) {
if (!data_->syncer_thread())
return;
// It is an error for this to be called if new_impl is null.
- data_->syncer_thread()->new_impl()->Start(
- browser_sync::s3::SyncerThread::CONFIGURATION_MODE);
+ StartConfigurationMode(NULL);
data_->syncer_thread()->new_impl()->ScheduleConfig(types);
}
+void SyncManager::StartConfigurationMode(ModeChangeCallback* callback) {
+ if (!data_->syncer_thread())
+ return;
+ // It is an error for this to be called if new_impl is null.
+ data_->syncer_thread()->new_impl()->Start(
+ browser_sync::s3::SyncerThread::CONFIGURATION_MODE, callback);
+}
+
const std::string& SyncManager::GetAuthenticatedUsername() {
DCHECK(data_);
return data_->username_for_share();
@@ -1646,11 +1659,19 @@ bool SyncManager::SyncInternal::Init(
connection_manager_.reset(new SyncAPIServerConnectionManager(
sync_server_and_path, port, use_ssl, user_agent, post_factory));
- connection_manager_hookup_.reset(
- NewEventListenerHookup(connection_manager()->channel(), this,
- &SyncManager::SyncInternal::HandleServerConnectionEvent));
-
net::NetworkChangeNotifier::AddIPAddressObserver(this);
+
+ bool new_syncer_thread = CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kNewSyncerThread);
+
+ if (new_syncer_thread) {
+ connection_manager()->AddListener(this);
+ } else {
+ connection_manager_hookup_.reset(
+ NewEventListenerHookup(connection_manager()->channel(), this,
+ &SyncManager::SyncInternal::HandleServerConnectionEvent));
+ }
+
// TODO(akalin): CheckServerReachable() can block, which may cause jank if we
// try to shut down sync. Fix this.
core_message_loop_->PostTask(FROM_HERE,
@@ -1671,8 +1692,7 @@ bool SyncManager::SyncInternal::Init(
context->set_account_name(credentials.email);
// The SyncerThread takes ownership of |context|.
syncer_thread_.reset(new SyncerThreadAdapter(context,
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kNewSyncerThread)));
+ new_syncer_thread));
}
bool signed_in = SignIn(credentials);
@@ -2172,6 +2192,15 @@ void SyncManager::SyncInternal::HandleTransactionCompleteChangeEvent(
}
}
+void SyncManager::SyncInternal::OnServerConnectionEvent(
+ const ServerConnectionEvent2& event) {
+ ServerConnectionEvent legacy;
+ legacy.what_happened = ServerConnectionEvent::STATUS_CHANGED;
+ legacy.connection_code = event.connection_code;
+ legacy.server_reachable = event.server_reachable;
+ HandleServerConnectionEvent(legacy);
+}
+
void SyncManager::SyncInternal::HandleServerConnectionEvent(
const ServerConnectionEvent& event) {
allstatus_.HandleServerConnectionEvent(event);

Powered by Google App Engine
This is Rietveld 408576698