1 // Copyright 2014 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/internal_api/sync_context_proxy_impl.h"
8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h"
10 #include "base/thread_task_runner_handle.h"
11 #include "sync/internal_api/public/non_blocking_sync_common.h"
12 #include "sync/internal_api/public/sync_context.h"
16 SyncContextProxyImpl::SyncContextProxyImpl(
17 const scoped_refptr
<base::SequencedTaskRunner
>& sync_task_runner
,
18 const base::WeakPtr
<SyncContext
>& sync_context
)
19 : sync_task_runner_(sync_task_runner
), sync_context_(sync_context
) {
22 SyncContextProxyImpl::~SyncContextProxyImpl() {
25 void SyncContextProxyImpl::ConnectTypeToSync(
27 const DataTypeState
& data_type_state
,
28 const UpdateResponseDataList
& saved_pending_updates
,
29 const base::WeakPtr
<ModelTypeSyncProxyImpl
>& type_sync_proxy
) {
30 VLOG(1) << "ConnectTypeToSync: " << ModelTypeToString(type
);
31 sync_task_runner_
->PostTask(FROM_HERE
,
32 base::Bind(&SyncContext::ConnectSyncTypeToWorker
,
36 saved_pending_updates
,
37 base::ThreadTaskRunnerHandle::Get(),
41 void SyncContextProxyImpl::Disconnect(ModelType type
) {
42 sync_task_runner_
->PostTask(
44 base::Bind(&SyncContext::DisconnectSyncWorker
, sync_context_
, type
));
47 scoped_ptr
<SyncContextProxy
> SyncContextProxyImpl::Clone() const {
48 return scoped_ptr
<SyncContextProxy
>(
49 new SyncContextProxyImpl(sync_task_runner_
, sync_context_
));