blob: f3f3c0af52005a794d5ec671cfec8b970130c516 [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "printscanmgr/daemon/dbus_adaptor.h"
#include <utility>
#include <base/check.h>
#include <base/notreached.h>
#include <dbus/object_path.h>
#include <dbus/printscanmgr/dbus-constants.h>
#include <lorgnette/proto_bindings/lorgnette_service.pb.h>
#include <lorgnette-client/lorgnette/dbus-proxies.h>
namespace printscanmgr {
DbusAdaptor::DbusAdaptor(mojo::PendingRemote<mojom::Executor> remote)
: org::chromium::printscanmgrAdaptor(this) {
remote_.Bind(std::move(remote));
cups_tool_ = std::make_unique<CupsTool>(remote_.get());
printscan_tool_ = std::make_unique<PrintscanTool>(remote_.get());
}
DbusAdaptor::~DbusAdaptor() = default;
void DbusAdaptor::RegisterAsync(
scoped_refptr<dbus::Bus> bus,
brillo::dbus_utils::AsyncEventSequencer::CompletionAction
completion_action) {
DCHECK(bus);
printscan_tool_->Init(
std::make_unique<org::chromium::lorgnette::ManagerProxy>(bus));
dbus_object_ = std::make_unique<brillo::dbus_utils::DBusObject>(
/*object_manager=*/nullptr, bus,
dbus::ObjectPath(kPrintscanmgrServicePath));
dbus_object_->AddOrGetInterface(kPrintscanmgrInterface);
RegisterWithDBusObject(dbus_object_.get());
dbus_object_->RegisterAsync(std::move(completion_action));
}
CupsAddAutoConfiguredPrinterResponse DbusAdaptor::CupsAddAutoConfiguredPrinter(
const CupsAddAutoConfiguredPrinterRequest& request) {
return cups_tool_->AddAutoConfiguredPrinter(request);
}
CupsAddManuallyConfiguredPrinterResponse
DbusAdaptor::CupsAddManuallyConfiguredPrinter(
const CupsAddManuallyConfiguredPrinterRequest& request) {
return cups_tool_->AddManuallyConfiguredPrinter(request);
}
CupsRemovePrinterResponse DbusAdaptor::CupsRemovePrinter(
const CupsRemovePrinterRequest& request) {
return cups_tool_->RemovePrinter(request);
}
CupsRetrievePpdResponse DbusAdaptor::CupsRetrievePpd(
const CupsRetrievePpdRequest& request) {
return cups_tool_->RetrievePpd(request);
}
PrintscanDebugSetCategoriesResponse DbusAdaptor::PrintscanDebugSetCategories(
const PrintscanDebugSetCategoriesRequest& request) {
return printscan_tool_->DebugSetCategories(request);
}
} // namespace printscanmgr