1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "sync/sessions/sync_session_context.h"
7 #include "sync/sessions/debug_info_getter.h"
8 #include "sync/util/extensions_activity.h"
13 SyncSessionContext::SyncSessionContext(
14 ServerConnectionManager* connection_manager,
15 syncable::Directory* directory,
16 const std::vector<ModelSafeWorker*>& workers,
17 ExtensionsActivity* extensions_activity,
18 const std::vector<SyncEngineEventListener*>& listeners,
19 DebugInfoGetter* debug_info_getter,
20 TrafficRecorder* traffic_recorder,
21 bool keystore_encryption_enabled,
22 bool client_enabled_pre_commit_update_avoidance,
23 const std::string& invalidator_client_id)
24 : connection_manager_(connection_manager),
25 directory_(directory),
26 update_handler_deleter_(&update_handler_map_),
27 commit_contributor_deleter_(&commit_contributor_map_),
28 extensions_activity_(extensions_activity),
29 notifications_enabled_(false),
30 max_commit_batch_size_(kDefaultMaxCommitBatchSize),
31 debug_info_getter_(debug_info_getter),
32 traffic_recorder_(traffic_recorder),
33 keystore_encryption_enabled_(keystore_encryption_enabled),
34 invalidator_client_id_(invalidator_client_id),
35 server_enabled_pre_commit_update_avoidance_(false),
36 client_enabled_pre_commit_update_avoidance_(
37 client_enabled_pre_commit_update_avoidance) {
38 for (size_t i = 0u; i < workers.size(); ++i)
39 workers_.push_back(workers[i]);
41 std::vector<SyncEngineEventListener*>::const_iterator it;
42 for (it = listeners.begin(); it != listeners.end(); ++it)
43 listeners_.AddObserver(*it);
46 SyncSessionContext::~SyncSessionContext() {
49 void SyncSessionContext::set_routing_info(
50 const ModelSafeRoutingInfo& routing_info) {
51 routing_info_ = routing_info;
53 // TODO(rlarocque): This is not a good long-term solution. We must find a
54 // better way to initialize the set of CommitContributors and UpdateHandlers.
55 ModelTypeSet enabled_types = GetRoutingInfoTypes(routing_info);
57 STLDeleteValues<CommitContributorMap>(&commit_contributor_map_);
58 for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) {
59 SyncDirectoryCommitContributor* contributor =
60 new SyncDirectoryCommitContributor(directory(), it.Get());
61 commit_contributor_map_.insert(std::make_pair(it.Get(), contributor));
64 STLDeleteValues<UpdateHandlerMap>(&update_handler_map_);
65 for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) {
66 SyncDirectoryUpdateHandler* handler =
67 new SyncDirectoryUpdateHandler(directory(), it.Get());
68 update_handler_map_.insert(std::make_pair(it.Get(), handler));
72 } // namespace sessions