diff options
Diffstat (limited to 'sync/sessions/sync_session_context.cc')
-rw-r--r-- | sync/sessions/sync_session_context.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sync/sessions/sync_session_context.cc b/sync/sessions/sync_session_context.cc index 78b3442..d44591d 100644 --- a/sync/sessions/sync_session_context.cc +++ b/sync/sessions/sync_session_context.cc @@ -23,6 +23,7 @@ SyncSessionContext::SyncSessionContext( const std::string& invalidator_client_id) : connection_manager_(connection_manager), directory_(directory), + update_handler_deleter_(&update_handler_map_), commit_contributor_deleter_(&commit_contributor_map_), extensions_activity_(extensions_activity), notifications_enabled_(false), @@ -50,14 +51,22 @@ void SyncSessionContext::set_routing_info( routing_info_ = routing_info; // TODO(rlarocque): This is not a good long-term solution. We must find a - // better way to initialize the set of CommitContributors. - STLDeleteValues<CommitContributorMap>(&commit_contributor_map_); + // better way to initialize the set of CommitContributors and UpdateHandlers. ModelTypeSet enabled_types = GetRoutingInfoTypes(routing_info); + + STLDeleteValues<CommitContributorMap>(&commit_contributor_map_); for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) { SyncDirectoryCommitContributor* contributor = new SyncDirectoryCommitContributor(directory(), it.Get()); commit_contributor_map_.insert(std::make_pair(it.Get(), contributor)); } + + STLDeleteValues<UpdateHandlerMap>(&update_handler_map_); + for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) { + SyncDirectoryUpdateHandler* handler = + new SyncDirectoryUpdateHandler(directory(), it.Get()); + update_handler_map_.insert(std::make_pair(it.Get(), handler)); + } } } // namespace sessions |