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

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: fix 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
« no previous file with comments | « chrome/browser/sync/engine/syncapi.h ('k') | chrome/browser/sync/engine/syncer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/engine/syncapi.cc
diff --git a/chrome/browser/sync/engine/syncapi.cc b/chrome/browser/sync/engine/syncapi.cc
index cfd278215b8cf170c144217cda07ca6795a10c05..f72a1af243e20de540f34602c5df3b627a10927a 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;
@@ -1099,7 +1101,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:
@@ -1296,6 +1299,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();
@@ -1597,11 +1603,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();
@@ -1635,11 +1648,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,
@@ -1660,8 +1681,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);
@@ -2161,6 +2181,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);
« no previous file with comments | « chrome/browser/sync/engine/syncapi.h ('k') | chrome/browser/sync/engine/syncer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698