summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/engine/syncapi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/engine/syncapi.cc')
-rw-r--r--chrome/browser/sync/engine/syncapi.cc96
1 files changed, 29 insertions, 67 deletions
diff --git a/chrome/browser/sync/engine/syncapi.cc b/chrome/browser/sync/engine/syncapi.cc
index 7792dc6..41da3d7 100644
--- a/chrome/browser/sync/engine/syncapi.cc
+++ b/chrome/browser/sync/engine/syncapi.cc
@@ -23,17 +23,17 @@
#include "base/string_util.h"
#include "base/synchronization/lock.h"
#include "base/task.h"
+#include "base/time.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/sync/engine/all_status.h"
#include "chrome/browser/sync/engine/change_reorder_buffer.h"
#include "chrome/browser/sync/engine/model_safe_worker.h"
+#include "chrome/browser/sync/engine/nudge_source.h"
#include "chrome/browser/sync/engine/net/server_connection_manager.h"
#include "chrome/browser/sync/engine/net/syncapi_server_connection_manager.h"
#include "chrome/browser/sync/engine/syncer.h"
#include "chrome/browser/sync/engine/syncer_thread.h"
-#include "chrome/browser/sync/engine/syncer_thread2.h"
-#include "chrome/browser/sync/engine/syncer_thread_adapter.h"
#include "chrome/browser/sync/engine/http_post_provider_factory.h"
#include "chrome/browser/sync/js_arg_list.h"
#include "chrome/browser/sync/js_backend.h"
@@ -57,6 +57,7 @@
#include "chrome/browser/sync/syncable/autofill_migration.h"
#include "chrome/browser/sync/syncable/directory_manager.h"
#include "chrome/browser/sync/syncable/model_type_payload_map.h"
+#include "chrome/browser/sync/syncable/model_type.h"
#include "chrome/browser/sync/syncable/nigori_util.h"
#include "chrome/browser/sync/syncable/syncable.h"
#include "chrome/browser/sync/util/crypto_helpers.h"
@@ -66,6 +67,7 @@
#include "content/browser/browser_thread.h"
#include "net/base/network_change_notifier.h"
+using base::TimeDelta;
using browser_sync::AllStatus;
using browser_sync::Cryptographer;
using browser_sync::KeyParams;
@@ -79,7 +81,6 @@ using browser_sync::SyncEngineEvent;
using browser_sync::SyncEngineEventListener;
using browser_sync::Syncer;
using browser_sync::SyncerThread;
-using browser_sync::SyncerThreadAdapter;
using browser_sync::kNigoriTag;
using browser_sync::sessions::SyncSessionContext;
using std::list;
@@ -89,6 +90,7 @@ using std::vector;
using syncable::Directory;
using syncable::DirectoryManager;
using syncable::Entry;
+using syncable::ModelTypeBitSet;
using syncable::SPECIFICS;
using sync_pb::AutofillProfileSpecifics;
@@ -1269,7 +1271,7 @@ class SyncManager::SyncInternal
SyncAPIServerConnectionManager* connection_manager() {
return connection_manager_.get();
}
- SyncerThreadAdapter* syncer_thread() { return syncer_thread_.get(); }
+ SyncerThread* syncer_thread() { return syncer_thread_.get(); }
UserShare* GetUserShare() { return &share_; }
// Return the currently active (validated) username for use with syncable
@@ -1516,7 +1518,7 @@ class SyncManager::SyncInternal
scoped_ptr<SyncAPIServerConnectionManager> connection_manager_;
// The thread that runs the Syncer. Needs to be explicitly Start()ed.
- scoped_ptr<SyncerThreadAdapter> syncer_thread_;
+ scoped_ptr<SyncerThread> syncer_thread_;
// The SyncNotifier which notifies us when updates need to be downloaded.
sync_notifier::SyncNotifier* sync_notifier_;
@@ -1664,44 +1666,30 @@ bool SyncManager::IsUsingExplicitPassphrase() {
return data_ && data_->IsUsingExplicitPassphrase();
}
-bool SyncManager::RequestPause() {
- if (data_->syncer_thread())
- return data_->syncer_thread()->RequestPause();
- return false;
-}
-
-bool SyncManager::RequestResume() {
- if (data_->syncer_thread())
- return data_->syncer_thread()->RequestResume();
- return false;
-}
-
void SyncManager::RequestNudge(const tracked_objects::Location& location) {
if (data_->syncer_thread())
- data_->syncer_thread()->NudgeSyncer(0, SyncerThread::kLocal, location);
+ data_->syncer_thread()->ScheduleNudge(
+ TimeDelta::FromMilliseconds(0), browser_sync::NUDGE_SOURCE_LOCAL,
+ ModelTypeBitSet(), location);
}
void SyncManager::RequestClearServerData() {
if (data_->syncer_thread())
- data_->syncer_thread()->NudgeSyncer(0, SyncerThread::kClearPrivateData,
- FROM_HERE);
+ data_->syncer_thread()->ScheduleClearUserData();
}
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.
StartConfigurationMode(NULL);
- data_->syncer_thread()->new_impl()->ScheduleConfig(types);
+ data_->syncer_thread()->ScheduleConfig(types);
}
void SyncManager::StartConfigurationMode(ModeChangeCallback* callback) {
if (!data_->syncer_thread())
return;
- if (!data_->syncer_thread()->new_impl())
- return;
- data_->syncer_thread()->new_impl()->Start(
- browser_sync::s3::SyncerThread::CONFIGURATION_MODE, callback);
+ data_->syncer_thread()->Start(
+ browser_sync::SyncerThread::CONFIGURATION_MODE, callback);
}
const std::string& SyncManager::GetAuthenticatedUsername() {
@@ -1739,16 +1727,7 @@ bool SyncManager::SyncInternal::Init(
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));
- }
+ connection_manager()->AddListener(this);
// TODO(akalin): CheckServerReachable() can block, which may cause jank if we
// try to shut down sync. Fix this.
@@ -1769,8 +1748,7 @@ bool SyncManager::SyncInternal::Init(
listeners);
context->set_account_name(credentials.email);
// The SyncerThread takes ownership of |context|.
- syncer_thread_.reset(new SyncerThreadAdapter(context,
- new_syncer_thread));
+ syncer_thread_.reset(new SyncerThread(context, new Syncer()));
}
bool signed_in = SignIn(credentials);
@@ -1825,11 +1803,12 @@ void SyncManager::SyncInternal::BootstrapEncryption(
}
void SyncManager::SyncInternal::StartSyncing() {
+ // Start the syncer thread. This won't actually
+ // result in any syncing until at least the
+ // DirectoryManager broadcasts the OPENED event,
+ // and a valid server connection is detected.
if (syncer_thread()) // NULL during certain unittests.
- syncer_thread()->Start(); // Start the syncer thread. This won't actually
- // result in any syncing until at least the
- // DirectoryManager broadcasts the OPENED event,
- // and a valid server connection is detected.
+ syncer_thread()->Start(SyncerThread::NORMAL_MODE, NULL);
}
void SyncManager::SyncInternal::MarkAndNotifyInitializationComplete() {
@@ -1882,9 +1861,6 @@ bool SyncManager::SyncInternal::OpenDirectory() {
connection_manager()->set_client_id(lookup->cache_guid());
- if (syncer_thread())
- syncer_thread()->CreateSyncer(username_for_share());
-
MarkAndNotifyInitializationComplete();
dir_change_hookup_.reset(lookup->AddChangeObserver(this));
return true;
@@ -2210,9 +2186,7 @@ void SyncManager::SyncInternal::Shutdown() {
method_factory_.RevokeAll();
if (syncer_thread()) {
- if (!syncer_thread()->Stop(kThreadExitTimeoutMsec)) {
- LOG(FATAL) << "Unable to stop the syncer, it won't be happy...";
- }
+ syncer_thread()->Stop();
syncer_thread_.reset();
}
@@ -2417,9 +2391,9 @@ void SyncManager::SyncInternal::HandleCalculateChangesChangeEventFromSyncApi(
if (exists_unsynced_items && syncer_thread()) {
int nudge_delay = only_preference_changes ?
kPreferencesNudgeDelayMilliseconds : kDefaultNudgeDelayMilliseconds;
- syncer_thread()->NudgeSyncerWithDataTypes(
- nudge_delay,
- SyncerThread::kLocal,
+ syncer_thread()->ScheduleNudge(
+ TimeDelta::FromMilliseconds(nudge_delay),
+ browser_sync::NUDGE_SOURCE_LOCAL,
model_types,
FROM_HERE);
}
@@ -2575,18 +2549,6 @@ void SyncManager::SyncInternal::OnSyncEngineEvent(
}
}
- if (event.what_happened == SyncEngineEvent::SYNCER_THREAD_PAUSED) {
- FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
- OnPaused());
- return;
- }
-
- if (event.what_happened == SyncEngineEvent::SYNCER_THREAD_RESUMED) {
- FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
- OnResumed());
- return;
- }
-
if (event.what_happened == SyncEngineEvent::STOP_SYNCING_PERMANENTLY) {
FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
OnStopSyncingPermanently());
@@ -2743,7 +2705,7 @@ void SyncManager::SyncInternal::OnNotificationStateChange(
<< (notifications_enabled ? "true" : "false");
allstatus_.SetNotificationsEnabled(notifications_enabled);
if (syncer_thread()) {
- syncer_thread()->SetNotificationsEnabled(notifications_enabled);
+ syncer_thread()->set_notifications_enabled(notifications_enabled);
}
if (parent_router_) {
ListValue args;
@@ -2768,9 +2730,9 @@ void SyncManager::SyncInternal::OnIncomingNotification(
const syncable::ModelTypePayloadMap& type_payloads) {
if (!type_payloads.empty()) {
if (syncer_thread()) {
- syncer_thread()->NudgeSyncerWithPayloads(
- kSyncerThreadDelayMsec,
- SyncerThread::kNotification,
+ syncer_thread()->ScheduleNudgeWithPayloads(
+ TimeDelta::FromMilliseconds(kSyncerThreadDelayMsec),
+ browser_sync::NUDGE_SOURCE_NOTIFICATION,
type_payloads, FROM_HERE);
}
allstatus_.IncrementNotificationsReceived();