blob: b8d6eddd8daa40e46b43ac5a33d816710acb4cab [file] [log] [blame]
// Copyright 2017 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 "components/multidevice/service/device_sync_impl.h"
namespace multidevice {
// static
DeviceSyncImpl::Factory* DeviceSyncImpl::Factory::factory_instance_ = nullptr;
// static
std::unique_ptr<device_sync::mojom::DeviceSync>
DeviceSyncImpl::Factory::NewInstance(
std::unique_ptr<service_manager::ServiceContextRef> service_ref) {
if (!factory_instance_) {
factory_instance_ = new Factory();
}
return factory_instance_->BuildInstance(std::move(service_ref));
}
DeviceSyncImpl::Factory::~Factory() {}
// static
void DeviceSyncImpl::Factory::SetInstanceForTesting(Factory* factory) {
factory_instance_ = factory;
}
std::unique_ptr<device_sync::mojom::DeviceSync>
DeviceSyncImpl::Factory::BuildInstance(
std::unique_ptr<service_manager::ServiceContextRef> service_ref) {
return base::WrapUnique(new DeviceSyncImpl(std::move(service_ref)));
}
DeviceSyncImpl::DeviceSyncImpl(
std::unique_ptr<service_manager::ServiceContextRef> service_ref)
: service_ref_(std::move(service_ref)) {}
DeviceSyncImpl::~DeviceSyncImpl() {}
void DeviceSyncImpl::ForceEnrollmentNow() {
observers_.ForAllPtrs([](device_sync::mojom::DeviceSyncObserver* observer) {
// TODO(hsuregan): Actually enroll observers, and pass the success/failure
// status to observer->OnEnrollmentFinished().
observer->OnEnrollmentFinished(true /* success */);
});
}
void DeviceSyncImpl::ForceSyncNow() {
observers_.ForAllPtrs([](device_sync::mojom::DeviceSyncObserver* observer) {
// TODO(hsuregan): Actually sync observers, and pass the success/failure
// status to observer->OnEnrollmentFinished().
observer->OnDevicesSynced(true /* success */);
});
}
void DeviceSyncImpl::AddObserver(
device_sync::mojom::DeviceSyncObserverPtr observer) {
observers_.AddPtr(std::move(observer));
}
} // namespace multidevice