chromium/chromeos/printing/printer_translator.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_PRINTING_PRINTER_TRANSLATOR_H_
#define CHROMEOS_PRINTING_PRINTER_TRANSLATOR_H_

#include <memory>
#include <optional>

#include "base/component_export.h"
#include "base/values.h"
#include "chromeos/printing/printer_configuration.h"

namespace chromeos {

COMPONENT_EXPORT(CHROMEOS_PRINTING) extern const char kPrinterId[];

// Returns a new printer populated with the fields from `pref` or nullptr if
// `pref` does not represent a valid printer configuration from the `Printers`
// policy.
COMPONENT_EXPORT(CHROMEOS_PRINTING)
std::unique_ptr<Printer> RecommendedPrinterToPrinter(
    const base::Value::Dict& pref);

// Returns a JSON representation of |printer| as a CupsPrinterInfo. If the
// printer uri cannot be parsed, the relevant fields are populated with default
// values. CupsPrinterInfo is defined in cups_printers_browser_proxy.js.
COMPONENT_EXPORT(CHROMEOS_PRINTING)
base::Value::Dict GetCupsPrinterInfo(const Printer& printer);

}  // namespace chromeos

#endif  // CHROMEOS_PRINTING_PRINTER_TRANSLATOR_H_