| Index: sync/test/engine/injectable_sync_context_proxy.cc
|
| diff --git a/sync/test/engine/injectable_sync_context_proxy.cc b/sync/test/engine/injectable_sync_context_proxy.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..27de8804a90b5f4522aa072941e0f8cbc5cacacf
|
| --- /dev/null
|
| +++ b/sync/test/engine/injectable_sync_context_proxy.cc
|
| @@ -0,0 +1,49 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "sync/test/engine/injectable_sync_context_proxy.h"
|
| +
|
| +#include "sync/engine/model_type_sync_proxy_impl.h"
|
| +#include "sync/engine/model_type_sync_worker.h"
|
| +
|
| +namespace syncer {
|
| +
|
| +InjectableSyncContextProxy::InjectableSyncContextProxy(
|
| + ModelTypeSyncWorker* worker)
|
| + : is_worker_connected_(false), worker_(worker) {
|
| +}
|
| +
|
| +InjectableSyncContextProxy::~InjectableSyncContextProxy() {
|
| +}
|
| +
|
| +void InjectableSyncContextProxy::ConnectTypeToSync(
|
| + syncer::ModelType type,
|
| + const DataTypeState& data_type_state,
|
| + const base::WeakPtr<syncer::ModelTypeSyncProxyImpl>& type_sync_proxy) {
|
| + // This class is allowed to participate in only one connection.
|
| + DCHECK(!is_worker_connected_);
|
| + is_worker_connected_ = true;
|
| +
|
| + // Hands off ownership of our member to the type_sync_proxy, while keeping
|
| + // an unsafe pointer to it. This is why we can only connect once.
|
| + scoped_ptr<ModelTypeSyncWorker> worker(worker_);
|
| +
|
| + type_sync_proxy->OnConnect(worker.Pass());
|
| +}
|
| +
|
| +void InjectableSyncContextProxy::Disconnect(syncer::ModelType type) {
|
| + // This should delete the worker, but we don't own it.
|
| + worker_ = NULL;
|
| +}
|
| +
|
| +scoped_ptr<SyncContextProxy> InjectableSyncContextProxy::Clone() const {
|
| + // This confuses ownership. We trust that our callers are well-behaved.
|
| + return scoped_ptr<SyncContextProxy>(new InjectableSyncContextProxy(worker_));
|
| +}
|
| +
|
| +ModelTypeSyncWorker* InjectableSyncContextProxy::GetWorker() {
|
| + return worker_;
|
| +}
|
| +
|
| +} // namespace syncer
|
|
|