summaryrefslogtreecommitdiffstats
path: root/sync/sessions/sync_session_context.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sync/sessions/sync_session_context.cc')
-rw-r--r--sync/sessions/sync_session_context.cc13
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