Index: chrome/browser/sync/glue/sync_backend_host_impl.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host_impl.cc b/chrome/browser/sync/glue/sync_backend_host_impl.cc |
index de87a4939a37256e29d92fab4c6ee9479a2dd3cf..8fb02c08b2b1eae2bf63e5edd1c4e9c61adba970 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host_impl.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host_impl.cc |
@@ -234,6 +234,9 @@ void SyncBackendHostImpl::StopSyncingForShutdown() { |
// Stop listening for and forwarding locally-triggered sync refresh requests. |
notification_registrar_.RemoveAll(); |
+ // Stop non-blocking sync types from sending any more requests to the syncer. |
+ sync_core_proxy_.reset(); |
+ |
DCHECK(registrar_->sync_thread()->IsRunning()); |
registrar_->RequestWorkerStopOnUIThread(); |
@@ -288,6 +291,12 @@ void SyncBackendHostImpl::UnregisterInvalidationIds() { |
} |
} |
+void SyncBackendHostImpl::SetPreferredNonBlockingTypes( |
+ syncer::ModelTypeSet types) { |
+ preferred_non_blocking_types_ = types; |
+ UpdateRegisteredInvalidationTypes(); |
+} |
+ |
void SyncBackendHostImpl::ConfigureDataTypes( |
syncer::ConfigureReason reason, |
const DataTypeConfigStateMap& config_state_map, |
@@ -427,6 +436,10 @@ syncer::UserShare* SyncBackendHostImpl::GetUserShare() const { |
return core_->sync_manager()->GetUserShare(); |
} |
+syncer::SyncCoreProxy SyncBackendHostImpl::GetSyncCoreProxy() { |
+ return *sync_core_proxy_.get(); |
+} |
+ |
SyncBackendHostImpl::Status SyncBackendHostImpl::GetDetailedStatus() { |
DCHECK(initialized()); |
return core_->sync_manager()->GetDetailedStatus(); |
@@ -524,14 +537,20 @@ void SyncBackendHostImpl::FinishConfigureDataTypesOnFrontendLoop( |
if (!frontend_) |
return; |
- invalidator_->UpdateRegisteredInvalidationIds( |
- this, |
- ModelTypeSetToObjectIdSet(enabled_types)); |
+ enabled_directory_types_ = enabled_types; |
+ UpdateRegisteredInvalidationTypes(); |
if (!ready_task.is_null()) |
ready_task.Run(succeeded_configuration_types, failed_configuration_types); |
} |
+void SyncBackendHostImpl::UpdateRegisteredInvalidationTypes() { |
Nicolas Zea
2014/04/02 23:19:05
How about changing this to UpdateEnabledTypes(dire
rlarocque
2014/04/03 01:03:46
I don't understand this suggestion. We'd still ne
Nicolas Zea
2014/04/03 17:52:15
Yeah, I think I was still thinking of the set of e
|
+ invalidator_->UpdateRegisteredInvalidationIds( |
+ this, |
+ ModelTypeSetToObjectIdSet( |
+ Union(enabled_directory_types_, preferred_non_blocking_types_))); |
+} |
+ |
void SyncBackendHostImpl::Observe( |
int type, |
const content::NotificationSource& source, |
@@ -563,13 +582,19 @@ void SyncBackendHostImpl::HandleControlTypesDownloadRetry() { |
void SyncBackendHostImpl::HandleInitializationSuccessOnFrontendLoop( |
const syncer::WeakHandle<syncer::JsBackend> js_backend, |
const syncer::WeakHandle<syncer::DataTypeDebugInfoListener> |
- debug_info_listener) { |
+ debug_info_listener, |
+ base::WeakPtr<syncer::SyncCore> sync_core) { |
Nicolas Zea
2014/04/02 23:19:05
What do you think about creating the SyncCoreProxy
rlarocque
2014/04/03 01:03:46
I think that's a good idea. Done.
|
DCHECK_EQ(base::MessageLoop::current(), frontend_loop_); |
if (!frontend_) |
return; |
initialized_ = true; |
+ sync_core_proxy_.reset( |
+ new syncer::SyncCoreProxy( |
+ registrar_->sync_thread()->message_loop_proxy(), |
+ sync_core)); |
+ |
invalidator_->RegisterInvalidationHandler(this); |
invalidation_handler_registered_ = true; |