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),