- add sources.
[platform/framework/web/crosswalk.git] / src / sync / sessions / sync_session_context.cc
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.
4
5 #include "sync/sessions/sync_session_context.h"
6
7 #include "sync/sessions/debug_info_getter.h"
8 #include "sync/util/extensions_activity.h"
9
10 namespace syncer {
11 namespace sessions {
12
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]);
40
41   std::vector<SyncEngineEventListener*>::const_iterator it;
42   for (it = listeners.begin(); it != listeners.end(); ++it)
43     listeners_.AddObserver(*it);
44 }
45
46 SyncSessionContext::~SyncSessionContext() {
47 }
48
49 void SyncSessionContext::set_routing_info(
50     const ModelSafeRoutingInfo& routing_info) {
51   routing_info_ = routing_info;
52
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);
56
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));
62   }
63
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));
69   }
70 }
71
72 }  // namespace sessions
73 }  // namespace syncer