Commit 4e4124a5 authored by Jesse Schettler's avatar Jesse Schettler Committed by Commit Bot

scanning: Add page number to progress callback

Add the page number to the progress callback so that clients know which
page the progress update corresponds to.

Bug: 1059779
Change-Id: I22b445f9a671c2e0b21b4549242a784c3757553a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2518205
Commit-Queue: Jesse Schettler <jschettler@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823733}
parent cd3c90ff
......@@ -36,16 +36,18 @@ void FakeLorgnetteScannerManager::Scan(const std::string& scanner_name,
PageCallback page_callback,
CompletionCallback completion_callback) {
if (scan_data_.has_value()) {
constexpr uint32_t page_number = 1;
if (progress_callback) {
for (int progress : {7, 22, 40, 42, 59, 74, 95}) {
for (const uint32_t progress : {7, 22, 40, 42, 59, 74, 95}) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(progress_callback, progress));
FROM_HERE,
base::BindOnce(progress_callback, progress, page_number));
}
}
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(page_callback, scan_data_.value(), /*page_number=*/1));
base::BindOnce(page_callback, scan_data_.value(), page_number));
}
base::ThreadTaskRunnerHandle::Get()->PostTask(
......
......@@ -28,7 +28,9 @@ class LorgnetteScannerManager : public KeyedService {
base::OnceCallback<void(std::vector<std::string> scanner_names)>;
using GetScannerCapabilitiesCallback = base::OnceCallback<void(
const base::Optional<lorgnette::ScannerCapabilities>& capabilities)>;
using ProgressCallback = base::RepeatingCallback<void(int progress_percent)>;
using ProgressCallback =
base::RepeatingCallback<void(uint32_t progress_percent,
uint32_t page_number)>;
using PageCallback = base::RepeatingCallback<void(std::string scan_data,
uint32_t page_number)>;
using CompletionCallback = base::OnceCallback<void(bool success)>;
......
......@@ -38,15 +38,16 @@ void FakeLorgnetteManagerClient::StartScan(
const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_callback,
base::RepeatingCallback<void(int)> progress_callback) {
base::RepeatingCallback<void(uint32_t, uint32_t)> progress_callback) {
if (scan_response_.has_value()) {
uint32_t page_number = 0;
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 (int progress : {7, 22, 40, 42, 59, 74, 95}) {
for (const uint32_t progress : {7, 22, 40, 42, 59, 74, 95}) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(progress_callback, progress));
FROM_HERE,
base::BindOnce(progress_callback, progress, page_number));
}
}
......
......@@ -36,7 +36,8 @@ class COMPONENT_EXPORT(LORGNETTE_MANAGER) FakeLorgnetteManagerClient
const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_callback,
base::RepeatingCallback<void(int)> progress_callback) override;
base::RepeatingCallback<void(uint32_t, uint32_t)> progress_callback)
override;
// Sets the response returned by ListScanners().
void SetListScannersResponse(
......
......@@ -69,7 +69,8 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient {
const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_callback,
base::RepeatingCallback<void(int)> progress_callback) override {
base::RepeatingCallback<void(uint32_t, uint32_t)> progress_callback)
override {
lorgnette::StartScanRequest request;
request.set_device_name(device_name);
*request.mutable_settings() = settings;
......@@ -183,7 +184,7 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient {
// of data into a string.
struct ScanJobState {
VoidDBusMethodCallback completion_callback;
base::RepeatingCallback<void(int)> progress_callback;
base::RepeatingCallback<void(uint32_t, uint32_t)> progress_callback;
base::RepeatingCallback<void(std::string, uint32_t)> page_callback;
std::unique_ptr<ScanDataReader> scan_data_reader;
};
......@@ -384,7 +385,7 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient {
<< " completed successfully";
} else if (signal_proto.state() == lorgnette::SCAN_STATE_IN_PROGRESS &&
!state.progress_callback.is_null()) {
state.progress_callback.Run(signal_proto.progress());
state.progress_callback.Run(signal_proto.progress(), signal_proto.page());
}
}
......
......@@ -55,7 +55,7 @@ class COMPONENT_EXPORT(LORGNETTE_MANAGER) LorgnetteManagerClient
const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_callback,
base::RepeatingCallback<void(int)> progress_callback) = 0;
base::RepeatingCallback<void(uint32_t, uint32_t)> progress_callback) = 0;
// Factory function, creates a new instance and returns ownership.
// For normal usage, access the singleton via DBusThreadManager::Get().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment