// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PRINTING_BACKEND_XPS_UTILS_WIN_H_
#define PRINTING_BACKEND_XPS_UTILS_WIN_H_
#include "base/component_export.h"
#include "base/types/expected.h"
#include "printing/mojom/print.mojom-forward.h"
namespace base {
class Value;
} // namespace base
namespace printing {
struct PrinterSemanticCapsAndDefaults;
struct XpsCapabilities;
// Since parsing XML data to XpsCapabilities can not be done in the
// //printing/backend level, parse base::Value into XpsCapabilities data
// structure instead. Returns an XPS capabilities object on success with valid
// relevant features as fields, ignoring invalid relevant features, or
// mojom::ResultCode on failure.
COMPONENT_EXPORT(PRINT_BACKEND)
base::expected<XpsCapabilities, mojom::ResultCode>
ParseValueForXpsPrinterCapabilities(const base::Value& capabilities);
// Moves all data from `xps_capabilities` into `printer_capabilities`.
COMPONENT_EXPORT(PRINT_BACKEND)
void MergeXpsCapabilities(XpsCapabilities xps_capabilities,
PrinterSemanticCapsAndDefaults& printer_capabilities);
} // namespace printing
#endif // PRINTING_BACKEND_XPS_UTILS_WIN_H_