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 #ifndef SYNC_TEST_ENGINE_INJECTABLE_SYNC_CONTEXT_PROXY_H_
6 #define SYNC_TEST_ENGINE_INJECTABLE_SYNC_CONTEXT_PROXY_H_
8 #include "sync/internal_api/public/base/model_type.h"
9 #include "sync/internal_api/public/non_blocking_sync_common.h"
10 #include "sync/internal_api/public/sync_context_proxy.h"
14 class ModelTypeSyncProxyImpl
;
15 class ModelTypeSyncWorker
;
17 // A SyncContextProxy implementation that, when a connection request is made,
18 // initalizes a connection to a previously injected ModelTypeSyncProxyImpl.
19 class InjectableSyncContextProxy
: public syncer_v2::SyncContextProxy
{
21 explicit InjectableSyncContextProxy(ModelTypeSyncWorker
* worker
);
22 ~InjectableSyncContextProxy() override
;
24 void ConnectTypeToSync(
26 const syncer_v2::DataTypeState
& data_type_state
,
27 const syncer_v2::UpdateResponseDataList
& pending_updates
,
28 const base::WeakPtr
<syncer::ModelTypeSyncProxyImpl
>& type_sync_proxy
)
30 void Disconnect(ModelType type
) override
;
31 scoped_ptr
<syncer_v2::SyncContextProxy
> Clone() const override
;
33 ModelTypeSyncWorker
* GetWorker();
36 // A flag to ensure ConnectTypeToSync is called at most once.
37 bool is_worker_connected_
;
39 // The ModelTypeSyncProxy's contract expects that it gets to own this object,
40 // so we can retain only a non-owned pointer to it.
42 // This is very unsafe, but we can get away with it since these tests are not
43 // exercising the proxy <-> worker connection code.
44 ModelTypeSyncWorker
* worker_
;
49 #endif // SYNC_TEST_ENGINE_INJECTABLE_SYNC_CONTEXT_PROXY_H_