1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ash/printing/fake_cups_printers_manager.h"
#include <string>
#include <utility>
#include "base/observer_list.h"
#include "chrome/browser/ash/printing/printer_configurer.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ash {
using ::chromeos::CupsPrinterStatus;
using ::chromeos::Printer;
using ::chromeos::PrinterClass;
FakeCupsPrintersManager::FakeCupsPrintersManager() = default;
FakeCupsPrintersManager::~FakeCupsPrintersManager() = default;
std::vector<Printer> FakeCupsPrintersManager::GetPrinters(
PrinterClass printer_class) const {
return printers_.Get(printer_class);
}
void FakeCupsPrintersManager::SavePrinter(const chromeos::Printer& printer) {
printers_.Insert(PrinterClass::kSaved, printer);
}
void FakeCupsPrintersManager::RemoveSavedPrinter(
const std::string& printer_id) {
installed_.erase(printer_id);
printers_.Remove(PrinterClass::kSaved, printer_id);
}
void FakeCupsPrintersManager::AddLocalPrintersObserver(
LocalPrintersObserver* observer) {
local_printers_observer_list_.AddObserver(observer);
}
void FakeCupsPrintersManager::RemoveLocalPrintersObserver(
LocalPrintersObserver* observer) {
local_printers_observer_list_.RemoveObserver(observer);
}
bool FakeCupsPrintersManager::IsPrinterInstalled(
const chromeos::Printer& printer) const {
return installed_.contains(printer.id());
}
void FakeCupsPrintersManager::SetUpPrinter(const chromeos::Printer& printer,
bool is_automatic_installation,
PrinterSetupCallback callback) {
auto it = assigned_results_.find(printer.id());
PrinterSetupResult result =
it != assigned_results_.end() ? it->second : PrinterSetupResult::kSuccess;
if (result == PrinterSetupResult::kSuccess) {
installed_.insert(printer.id());
}
std::move(callback).Run(result);
}
void FakeCupsPrintersManager::UninstallPrinter(const std::string& printer_id) {
installed_.erase(printer_id);
}
std::optional<Printer> FakeCupsPrintersManager::GetPrinter(
const std::string& id) const {
return printers_.Get(id);
}
void FakeCupsPrintersManager::FetchPrinterStatus(const std::string& printer_id,
PrinterStatusCallback cb) {
auto it = printer_status_map_.find(printer_id);
if (it == printer_status_map_.end()) {
FAIL() << "Printer status not found: " << printer_id;
}
std::move(cb).Run(std::move(it->second));
printer_status_map_.erase(it);
}
PrintServersManager* FakeCupsPrintersManager::GetPrintServersManager() const {
return nullptr;
}
void FakeCupsPrintersManager::AddPrinter(const chromeos::Printer& printer,
PrinterClass printer_class) {
printers_.Insert(printer_class, printer);
}
void FakeCupsPrintersManager::SetPrinterStatus(
const CupsPrinterStatus& status) {
printer_status_map_[status.GetPrinterId()] = status;
}
void FakeCupsPrintersManager::MarkInstalled(const std::string& printer_id) {
installed_.insert(printer_id);
}
void FakeCupsPrintersManager::MarkPrinterAsNotAutoconfigurable(
const std::string& printer_id) {
printers_marked_as_not_autoconf_.insert(printer_id);
}
void FakeCupsPrintersManager::SetPrinterSetupResult(
const std::string& printer_id,
PrinterSetupResult result) {
assigned_results_[printer_id] = result;
}
void FakeCupsPrintersManager::QueryPrinterForAutoConf(
const Printer& printer,
base::OnceCallback<void(bool, const chromeos::IppPrinterInfo&)> callback) {
std::move(callback).Run(
!printers_marked_as_not_autoconf_.contains(printer.id()),
chromeos::IppPrinterInfo{});
}
void FakeCupsPrintersManager::TriggerLocalPrintersObserver() {
for (auto& observer : local_printers_observer_list_) {
observer.OnLocalPrintersUpdated();
}
}
} // namespace ash
|