lorgnette: filter supported resolutions
Limit the resolutions returned from GetScannerCapabilities to those on
our supported resolutions list.
BUG=b:170864156
TEST=unit test, check scan UI for scanners with many supported resolutions
Change-Id: I6ba155ecd053aae46ef9de28e4d229405ea41aec
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2487902
Tested-by: Fletcher Woodruff <fletcherw@chromium.org>
Reviewed-by: Jesse Schettler <jschettler@chromium.org>
Commit-Queue: Fletcher Woodruff <fletcherw@chromium.org>
diff --git a/lorgnette/manager.cc b/lorgnette/manager.cc
index db43697..5311e81 100644
--- a/lorgnette/manager.cc
+++ b/lorgnette/manager.cc
@@ -377,9 +377,13 @@
if (!device->GetValidOptionValues(error, &options))
return false;
+ const std::vector<uint32_t> supported_resolutions = {75, 100, 150,
+ 200, 300, 600};
+
ScannerCapabilities capabilities;
for (const uint32_t resolution : options.resolutions) {
- capabilities.add_resolutions(resolution);
+ if (base::Contains(supported_resolutions, resolution))
+ capabilities.add_resolutions(resolution);
}
for (const DocumentSource& source : options.sources) {
diff --git a/lorgnette/manager_test.cc b/lorgnette/manager_test.cc
index b680bbb..8422c6e 100644
--- a/lorgnette/manager_test.cc
+++ b/lorgnette/manager_test.cc
@@ -206,7 +206,7 @@
TEST_F(ManagerTest, GetScannerCapabilitiesSuccess) {
std::unique_ptr<SaneDeviceFake> device = std::make_unique<SaneDeviceFake>();
ValidOptionValues opts;
- opts.resolutions = {100, 200, 300, 600};
+ opts.resolutions = {50, 100, 200, 300, 500, 600};
opts.sources = {
CreateDocumentSource("FB", SOURCE_PLATEN, 355.2, 417.9),
CreateDocumentSource("Negative", SOURCE_UNSPECIFIED, 355.2, 204.0),