blob: a8247deed417e2ec7e414b8b3ad5c99fadad4443 [file] [log] [blame]
// 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 "chromeos/dbus/lorgnette_manager/fake_lorgnette_manager_client.h"
#include <utility>
#include "base/bind.h"
#include "base/location.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
namespace chromeos {
FakeLorgnetteManagerClient::FakeLorgnetteManagerClient() = default;
FakeLorgnetteManagerClient::~FakeLorgnetteManagerClient() = default;
void FakeLorgnetteManagerClient::Init(dbus::Bus* bus) {}
void FakeLorgnetteManagerClient::ListScanners(
DBusMethodCallback<lorgnette::ListScannersResponse> callback) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), list_scanners_response_));
}
void FakeLorgnetteManagerClient::GetScannerCapabilities(
const std::string& device_name,
DBusMethodCallback<lorgnette::ScannerCapabilities> callback) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), capabilities_response_));
}
void FakeLorgnetteManagerClient::StartScan(
const std::string& device_name,
const lorgnette::ScanSettings& settings,
base::OnceCallback<void(lorgnette::ScanFailureMode)> completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_callback,
base::RepeatingCallback<void(uint32_t, uint32_t)> progress_callback) {
if (scan_response_.has_value()) {
uint32_t page_number = 1;
for (const std::string& page_data : scan_response_.value()) {
// Simulate progress reporting for the scan job.
if (progress_callback) {
for (const uint32_t progress : {7, 22, 40, 42, 59, 74, 95}) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(progress_callback, progress, page_number));
}
}
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(page_callback, page_data, ++page_number));
}
}
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(completion_callback),
scan_response_.has_value()
? lorgnette::SCAN_FAILURE_MODE_NO_FAILURE
: lorgnette::SCAN_FAILURE_MODE_UNKNOWN));
scan_response_ = absl::nullopt;
}
void FakeLorgnetteManagerClient::CancelScan(
VoidDBusMethodCallback completion_callback) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(completion_callback), true));
}
void FakeLorgnetteManagerClient::SetListScannersResponse(
const absl::optional<lorgnette::ListScannersResponse>&
list_scanners_response) {
list_scanners_response_ = list_scanners_response;
}
void FakeLorgnetteManagerClient::SetScannerCapabilitiesResponse(
const absl::optional<lorgnette::ScannerCapabilities>&
capabilities_response) {
capabilities_response_ = capabilities_response;
}
void FakeLorgnetteManagerClient::SetScanResponse(
const absl::optional<std::vector<std::string>>& scan_response) {
scan_response_ = scan_response;
}
} // namespace chromeos