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

Unified Diff: sync/internal_api/sync_manager.cc

Issue 10701085: Revert "Revert 142517 - [Sync] Refactor sync configuration logic." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix deps Created 8 years, 5 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: sync/internal_api/sync_manager.cc
diff --git a/sync/internal_api/sync_manager.cc b/sync/internal_api/sync_manager.cc
index c8a293ea85f3ffc7e861d42891072d6535ca265d..d1b721fed6eb5e21239df78cd01bbabc7f7bcfc1 100644
--- a/sync/internal_api/sync_manager.cc
+++ b/sync/internal_api/sync_manager.cc
@@ -32,6 +32,7 @@
#include "sync/internal_api/public/base_node.h"
#include "sync/internal_api/public/configure_reason.h"
#include "sync/internal_api/public/engine/polling_constants.h"
+#include "sync/internal_api/public/http_post_provider_factory.h"
#include "sync/internal_api/public/read_node.h"
#include "sync/internal_api/public/read_transaction.h"
#include "sync/internal_api/public/user_share.h"
@@ -176,14 +177,14 @@ class SyncManager::SyncInternal
int port,
bool use_ssl,
const scoped_refptr<base::TaskRunner>& blocking_task_runner,
- HttpPostProviderFactory* post_factory,
+ scoped_ptr<HttpPostProviderFactory> post_factory,
const syncer::ModelSafeRoutingInfo& model_safe_routing_info,
const std::vector<syncer::ModelSafeWorker*>& workers,
syncer::ExtensionsActivityMonitor*
extensions_activity_monitor,
ChangeDelegate* change_delegate,
const SyncCredentials& credentials,
- syncer::SyncNotifier* sync_notifier,
+ scoped_ptr<syncer::SyncNotifier> sync_notifier,
const std::string& restored_key_for_bootstrapping,
TestingMode testing_mode,
Encryptor* encryptor,
@@ -376,6 +377,8 @@ class SyncManager::SyncInternal
const std::string& name, const JsArgList& args,
const WeakHandle<JsReplyHandler>& reply_handler) OVERRIDE;
+ void SetSyncSchedulerForTest(scoped_ptr<SyncScheduler> scheduler);
+
private:
struct NotificationInfo {
int total_count;
@@ -692,20 +695,20 @@ bool SyncManager::Init(
int sync_server_port,
bool use_ssl,
const scoped_refptr<base::TaskRunner>& blocking_task_runner,
- HttpPostProviderFactory* post_factory,
+ scoped_ptr<HttpPostProviderFactory> post_factory,
const syncer::ModelSafeRoutingInfo& model_safe_routing_info,
const std::vector<syncer::ModelSafeWorker*>& workers,
syncer::ExtensionsActivityMonitor* extensions_activity_monitor,
ChangeDelegate* change_delegate,
const SyncCredentials& credentials,
- syncer::SyncNotifier* sync_notifier,
+ scoped_ptr<syncer::SyncNotifier> sync_notifier,
const std::string& restored_key_for_bootstrapping,
TestingMode testing_mode,
Encryptor* encryptor,
UnrecoverableErrorHandler* unrecoverable_error_handler,
ReportUnrecoverableErrorFunction report_unrecoverable_error_function) {
DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(post_factory);
+ DCHECK(post_factory.get());
DVLOG(1) << "SyncManager starting Init...";
std::string server_string(sync_server_and_path);
return data_->Init(database_location,
@@ -714,13 +717,13 @@ bool SyncManager::Init(
sync_server_port,
use_ssl,
blocking_task_runner,
- post_factory,
+ post_factory.Pass(),
model_safe_routing_info,
workers,
extensions_activity_monitor,
change_delegate,
credentials,
- sync_notifier,
+ sync_notifier.Pass(),
restored_key_for_bootstrapping,
testing_mode,
encryptor,
@@ -749,6 +752,21 @@ syncer::ModelTypeSet SyncManager::InitialSyncEndedTypes() {
return data_->InitialSyncEndedTypes();
}
+syncer::ModelTypeSet SyncManager::GetTypesWithEmptyProgressMarkerToken(
+ syncer::ModelTypeSet types) {
+ syncer::ModelTypeSet result;
+ for (syncer::ModelTypeSet::Iterator i = types.First();
+ i.Good(); i.Inc()) {
+ sync_pb::DataTypeProgressMarker marker;
+ GetUserShare()->directory->GetDownloadProgress(i.Get(), &marker);
+
+ if (marker.token().empty())
+ result.Put(i.Get());
+
+ }
+ return result;
+}
+
void SyncManager::StartSyncingNormally(
const syncer::ModelSafeRoutingInfo& routing_info) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -793,40 +811,39 @@ bool SyncManager::IsUsingExplicitPassphrase() {
return data_ && data_->IsUsingExplicitPassphrase();
}
-void SyncManager::RequestCleanupDisabledTypes(
- const syncer::ModelSafeRoutingInfo& routing_info) {
+void SyncManager::ConfigureSyncer(
+ ConfigureReason reason,
+ const syncer::ModelTypeSet& types_to_config,
+ const syncer::ModelSafeRoutingInfo& new_routing_info,
+ const base::Closure& ready_task,
+ const base::Closure& retry_task) {
DCHECK(thread_checker_.CalledOnValidThread());
- if (data_->scheduler()) {
- data_->session_context()->set_routing_info(routing_info);
- data_->scheduler()->CleanupDisabledTypes();
- }
-}
+ DCHECK(!ready_task.is_null());
+ DCHECK(!retry_task.is_null());
-void SyncManager::RequestConfig(
- const syncer::ModelSafeRoutingInfo& routing_info,
- const ModelTypeSet& types, ConfigureReason reason) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (!data_->scheduler()) {
- LOG(INFO)
- << "SyncManager::RequestConfig: bailing out because scheduler is "
- << "null";
- return;
- }
- StartConfigurationMode(base::Closure());
- data_->session_context()->set_routing_info(routing_info);
- data_->scheduler()->ScheduleConfiguration(types, GetSourceFromReason(reason));
-}
+ // TODO(zea): set this based on whether cryptographer has keystore
+ // encryption key or not (requires opening a transaction). crbug.com/129665.
+ ConfigurationParams::KeystoreKeyStatus keystore_key_status =
+ ConfigurationParams::KEYSTORE_KEY_UNNECESSARY;
+
+ ConfigurationParams params(GetSourceFromReason(reason),
+ types_to_config,
+ new_routing_info,
+ keystore_key_status,
+ ready_task);
-void SyncManager::StartConfigurationMode(const base::Closure& callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
if (!data_->scheduler()) {
LOG(INFO)
- << "SyncManager::StartConfigurationMode: could not start "
- << "configuration mode because because scheduler is null";
+ << "SyncManager::ConfigureSyncer: could not configure because "
+ << "scheduler is null";
+ params.ready_task.Run();
return;
}
- data_->scheduler()->Start(
- syncer::SyncScheduler::CONFIGURATION_MODE, callback);
+
+ data_->scheduler()->Start(syncer::SyncScheduler::CONFIGURATION_MODE);
+ if (!data_->scheduler()->ScheduleConfiguration(params))
+ retry_task.Run();
+
}
bool SyncManager::SyncInternal::Init(
@@ -836,13 +853,13 @@ bool SyncManager::SyncInternal::Init(
int port,
bool use_ssl,
const scoped_refptr<base::TaskRunner>& blocking_task_runner,
- HttpPostProviderFactory* post_factory,
+ scoped_ptr<HttpPostProviderFactory> post_factory,
const syncer::ModelSafeRoutingInfo& model_safe_routing_info,
const std::vector<syncer::ModelSafeWorker*>& workers,
syncer::ExtensionsActivityMonitor* extensions_activity_monitor,
ChangeDelegate* change_delegate,
const SyncCredentials& credentials,
- syncer::SyncNotifier* sync_notifier,
+ scoped_ptr<syncer::SyncNotifier> sync_notifier,
const std::string& restored_key_for_bootstrapping,
TestingMode testing_mode,
Encryptor* encryptor,
@@ -861,7 +878,7 @@ bool SyncManager::SyncInternal::Init(
change_delegate_ = change_delegate;
testing_mode_ = testing_mode;
- sync_notifier_.reset(sync_notifier);
+ sync_notifier_ = sync_notifier.Pass();
AddObserver(&js_sync_manager_observer_);
SetJsEventHandler(event_handler);
@@ -895,7 +912,7 @@ bool SyncManager::SyncInternal::Init(
backing_store));
connection_manager_.reset(new SyncAPIServerConnectionManager(
- sync_server_and_path, port, use_ssl, post_factory));
+ sync_server_and_path, port, use_ssl, post_factory.release()));
net::NetworkChangeNotifier::AddIPAddressObserver(this);
observing_ip_address_changes_ = true;
@@ -927,8 +944,7 @@ bool SyncManager::SyncInternal::Init(
if (signed_in) {
if (scheduler()) {
- scheduler()->Start(
- syncer::SyncScheduler::CONFIGURATION_MODE, base::Closure());
+ scheduler()->Start(syncer::SyncScheduler::CONFIGURATION_MODE);
}
initialized_ = true;
@@ -1102,9 +1118,13 @@ void SyncManager::SyncInternal::NotifyCryptographerState(
void SyncManager::SyncInternal::StartSyncingNormally(
const syncer::ModelSafeRoutingInfo& routing_info) {
// Start the sync scheduler.
- if (scheduler()) { // NULL during certain unittests.
+ if (scheduler()) { // NULL during certain unittests.
+ // TODO(sync): We always want the newest set of routes when we switch back
+ // to normal mode. Figure out how to enforce set_routing_info is always
+ // appropriately set and that it's only modified when switching to normal
+ // mode.
session_context()->set_routing_info(routing_info);
- scheduler()->Start(SyncScheduler::NORMAL_MODE, base::Closure());
+ scheduler()->Start(SyncScheduler::NORMAL_MODE);
}
}
@@ -2340,6 +2360,11 @@ void SyncManager::SyncInternal::RemoveObserver(
observers_.RemoveObserver(observer);
}
+void SyncManager::SyncInternal::SetSyncSchedulerForTest(
+ scoped_ptr<SyncScheduler> sync_scheduler) {
+ scheduler_ = sync_scheduler.Pass();
+}
+
SyncStatus SyncManager::GetDetailedStatus() const {
return data_->GetStatus();
}
@@ -2370,6 +2395,10 @@ TimeDelta SyncManager::GetNudgeDelayTimeDelta(
return data_->GetNudgeDelayTimeDelta(model_type);
}
+void SyncManager::SetSyncSchedulerForTest(scoped_ptr<SyncScheduler> scheduler) {
+ data_->SetSyncSchedulerForTest(scheduler.Pass());
+}
+
syncer::ModelTypeSet SyncManager::GetEncryptedDataTypesForTest() const {
ReadTransaction trans(FROM_HERE, GetUserShare());
return GetEncryptedTypes(&trans);
@@ -2459,20 +2488,4 @@ bool InitialSyncEndedForTypes(syncer::ModelTypeSet types,
return true;
}
-syncer::ModelTypeSet GetTypesWithEmptyProgressMarkerToken(
- syncer::ModelTypeSet types,
- syncer::UserShare* share) {
- syncer::ModelTypeSet result;
- for (syncer::ModelTypeSet::Iterator i = types.First();
- i.Good(); i.Inc()) {
- sync_pb::DataTypeProgressMarker marker;
- share->directory->GetDownloadProgress(i.Get(), &marker);
-
- if (marker.token().empty())
- result.Put(i.Get());
-
- }
- return result;
-}
-
} // namespace syncer

Powered by Google App Engine
This is Rietveld 408576698