15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/sessions/sync_session_context.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/sessions/debug_info_getter.h"
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "sync/util/extensions_activity.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sessions {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SyncSessionContext::SyncSessionContext(
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ServerConnectionManager* connection_manager,
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    syncable::Directory* directory,
16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    ExtensionsActivity* extensions_activity,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::vector<SyncEngineEventListener*>& listeners,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DebugInfoGetter* debug_info_getter,
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    ModelTypeRegistry* model_type_registry,
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool keystore_encryption_enabled,
21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    bool client_enabled_pre_commit_update_avoidance,
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& invalidator_client_id)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : connection_manager_(connection_manager),
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      directory_(directory),
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      extensions_activity_(extensions_activity),
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      notifications_enabled_(false),
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      max_commit_batch_size_(kDefaultMaxCommitBatchSize),
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      debug_info_getter_(debug_info_getter),
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      model_type_registry_(model_type_registry),
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      keystore_encryption_enabled_(keystore_encryption_enabled),
31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      invalidator_client_id_(invalidator_client_id),
32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      server_enabled_pre_commit_update_avoidance_(false),
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      client_enabled_pre_commit_update_avoidance_(
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch          client_enabled_pre_commit_update_avoidance) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<SyncEngineEventListener*>::const_iterator it;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (it = listeners.begin(); it != listeners.end(); ++it)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    listeners_.AddObserver(*it);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SyncSessionContext::~SyncSessionContext() {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)ModelTypeSet SyncSessionContext::GetEnabledTypes() const {
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return model_type_registry_->GetEnabledTypes();
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void SyncSessionContext::SetRoutingInfo(
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const ModelSafeRoutingInfo& routing_info) {
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  model_type_registry_->SetEnabledDirectoryTypes(routing_info);
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace sessions
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace syncer
54