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, ...@@ -36,16 +36,18 @@ void FakeLorgnetteScannerManager::Scan(const std::string& scanner_name,
PageCallback page_callback, PageCallback page_callback,
CompletionCallback completion_callback) { CompletionCallback completion_callback) {
if (scan_data_.has_value()) { if (scan_data_.has_value()) {
constexpr uint32_t page_number = 1;
if (progress_callback) { 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( base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(progress_callback, progress)); FROM_HERE,
base::BindOnce(progress_callback, progress, page_number));
} }
} }
base::ThreadTaskRunnerHandle::Get()->PostTask( base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, 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( base::ThreadTaskRunnerHandle::Get()->PostTask(
......
...@@ -28,7 +28,9 @@ class LorgnetteScannerManager : public KeyedService { ...@@ -28,7 +28,9 @@ class LorgnetteScannerManager : public KeyedService {
base::OnceCallback<void(std::vector<std::string> scanner_names)>; base::OnceCallback<void(std::vector<std::string> scanner_names)>;
using GetScannerCapabilitiesCallback = base::OnceCallback<void( using GetScannerCapabilitiesCallback = base::OnceCallback<void(
const base::Optional<lorgnette::ScannerCapabilities>& capabilities)>; 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, using PageCallback = base::RepeatingCallback<void(std::string scan_data,
uint32_t page_number)>; uint32_t page_number)>;
using CompletionCallback = base::OnceCallback<void(bool success)>; using CompletionCallback = base::OnceCallback<void(bool success)>;
......
...@@ -38,15 +38,16 @@ void FakeLorgnetteManagerClient::StartScan( ...@@ -38,15 +38,16 @@ void FakeLorgnetteManagerClient::StartScan(
const lorgnette::ScanSettings& settings, const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback, VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_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()) { if (scan_response_.has_value()) {
uint32_t page_number = 0; uint32_t page_number = 1;
for (const std::string& page_data : scan_response_.value()) { for (const std::string& page_data : scan_response_.value()) {
// Simulate progress reporting for the scan job. // Simulate progress reporting for the scan job.
if (progress_callback) { 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( 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 ...@@ -36,7 +36,8 @@ class COMPONENT_EXPORT(LORGNETTE_MANAGER) FakeLorgnetteManagerClient
const lorgnette::ScanSettings& settings, const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback, VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_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(). // Sets the response returned by ListScanners().
void SetListScannersResponse( void SetListScannersResponse(
......
...@@ -69,7 +69,8 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient { ...@@ -69,7 +69,8 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient {
const lorgnette::ScanSettings& settings, const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback, VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_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; lorgnette::StartScanRequest request;
request.set_device_name(device_name); request.set_device_name(device_name);
*request.mutable_settings() = settings; *request.mutable_settings() = settings;
...@@ -183,7 +184,7 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient { ...@@ -183,7 +184,7 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient {
// of data into a string. // of data into a string.
struct ScanJobState { struct ScanJobState {
VoidDBusMethodCallback completion_callback; 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; base::RepeatingCallback<void(std::string, uint32_t)> page_callback;
std::unique_ptr<ScanDataReader> scan_data_reader; std::unique_ptr<ScanDataReader> scan_data_reader;
}; };
...@@ -384,7 +385,7 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient { ...@@ -384,7 +385,7 @@ class LorgnetteManagerClientImpl : public LorgnetteManagerClient {
<< " completed successfully"; << " completed successfully";
} else if (signal_proto.state() == lorgnette::SCAN_STATE_IN_PROGRESS && } else if (signal_proto.state() == lorgnette::SCAN_STATE_IN_PROGRESS &&
!state.progress_callback.is_null()) { !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 ...@@ -55,7 +55,7 @@ class COMPONENT_EXPORT(LORGNETTE_MANAGER) LorgnetteManagerClient
const lorgnette::ScanSettings& settings, const lorgnette::ScanSettings& settings,
VoidDBusMethodCallback completion_callback, VoidDBusMethodCallback completion_callback,
base::RepeatingCallback<void(std::string, uint32_t)> page_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. // Factory function, creates a new instance and returns ownership.
// For normal usage, access the singleton via DBusThreadManager::Get(). // 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