Commit 8cda66d3 authored by Bailey Berro's avatar Bailey Berro Committed by Commit Bot

Introduce PrintersMap::Remove method

- Adds a Remove() method to remove a printer from a given class.

Change-Id: Ib229e42b472a0d9cf637c116d1f35ae50d5a9a6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1575863
Commit-Queue: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#657356}
parent ff9a88ad
...@@ -114,6 +114,16 @@ std::vector<Printer> PrintersMap::GetSecurePrinters( ...@@ -114,6 +114,16 @@ std::vector<Printer> PrintersMap::GetSecurePrinters(
return result; return result;
} }
void PrintersMap::Remove(PrinterClass printer_class,
const std::string& printer_id) {
if (!IsPrinterInClass(printer_class, printer_id)) {
return;
}
printers_[printer_class].erase(printer_id);
DCHECK(!IsExistingPrinter(printer_id));
}
bool PrintersMap::HasPrintersInClass(PrinterClass printer_class) const { bool PrintersMap::HasPrintersInClass(PrinterClass printer_class) const {
return base::ContainsKey(printers_, printer_class); return base::ContainsKey(printers_, printer_class);
} }
......
...@@ -52,6 +52,10 @@ class PrintersMap { ...@@ -52,6 +52,10 @@ class PrintersMap {
void ReplacePrintersInClass(PrinterClass printer_class, void ReplacePrintersInClass(PrinterClass printer_class,
const std::vector<Printer>& printers); const std::vector<Printer>& printers);
// Removes printer with |printer_id| from |printer_class|. This is a no-op if
// |printer_id| doesn't exist in printer_class.
void Remove(PrinterClass printer_class, const std::string& printer_id);
private: private:
// Returns true if |printer_class| exists and contains at least 1 printer. // Returns true if |printer_class| exists and contains at least 1 printer.
bool HasPrintersInClass(PrinterClass printer_class) const; bool HasPrintersInClass(PrinterClass printer_class) const;
......
...@@ -290,4 +290,57 @@ TEST_F(PrintersMapTest, ReplacePrintersInClassOverwritesPrinters) { ...@@ -290,4 +290,57 @@ TEST_F(PrintersMapTest, ReplacePrintersInClassOverwritesPrinters) {
EXPECT_EQ(2u, restored_printers.size()); EXPECT_EQ(2u, restored_printers.size());
} }
TEST_F(PrintersMapTest, RemoveSucceedsOnPrinterInClass) {
PrintersMap printers_map;
const std::string printer_id = "id1";
printers_map.Insert(PrinterClass::kEnterprise, Printer(printer_id));
auto printer = printers_map.Get(printer_id);
EXPECT_TRUE(printer);
EXPECT_EQ(printer_id, printer->id());
printers_map.Remove(PrinterClass::kEnterprise, printer_id);
printer = printers_map.Get(printer_id);
EXPECT_FALSE(printer);
}
TEST_F(PrintersMapTest, RemoveDoesNothingOnPrinterNotInClass) {
PrintersMap printers_map;
const std::string printer_id = "id1";
printers_map.Insert(PrinterClass::kEnterprise, Printer(printer_id));
auto printer = printers_map.Get(printer_id);
EXPECT_TRUE(printer);
EXPECT_EQ(printer_id, printer->id());
// Call remove using a different class, same printer_id and verify the printer
// is not rmemoved.
printers_map.Remove(PrinterClass::kDiscovered, printer_id);
printer = printers_map.Get(printer_id);
EXPECT_TRUE(printer);
EXPECT_EQ(printer_id, printer->id());
}
TEST_F(PrintersMapTest, RemoveDoesNothingOnUnknownPrinter) {
PrintersMap printers_map;
const std::string printer_id = "id";
printers_map.Insert(PrinterClass::kEnterprise, Printer(printer_id));
EXPECT_TRUE(printers_map.Get(printer_id));
// Call remove using a printer that does not exist in any class and verify the
// other printers are not changed.
printers_map.Remove(PrinterClass::kDiscovered, "random_id");
EXPECT_TRUE(printers_map.Get(printer_id));
}
} // namespace chromeos } // namespace chromeos
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