1 // Copyright 2022 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "print_settings_conversion_chromeos.h"
7 #include "printing/print_job_constants.h"
13 // Assumes that `dict` contains valid data for client-info.
14 mojom::IppClientInfo GetClientInfoFromDict(const base::Value::Dict& dict) {
15 mojom::IppClientInfo client_info;
16 client_info.client_type = static_cast<mojom::IppClientInfo::ClientType>(
17 dict.FindInt(kSettingIppClientType).value());
18 client_info.client_name = *dict.FindString(kSettingIppClientName);
19 client_info.client_string_version =
20 *dict.FindString(kSettingIppClientStringVersion);
22 const std::string* client_patches = dict.FindString(kSettingIppClientPatches);
24 client_info.client_patches = *client_patches;
26 const std::string* client_version = dict.FindString(kSettingIppClientVersion);
28 client_info.client_version = *client_version;
34 base::Value::List ConvertClientInfoToJobSetting(
35 const std::vector<mojom::IppClientInfo>& client_infos) {
36 base::Value::List client_info_list;
37 client_info_list.reserve(client_infos.size());
38 for (const auto& client_info : client_infos) {
39 base::Value::Dict dict;
40 dict.Set(kSettingIppClientType, static_cast<int>(client_info.client_type));
41 dict.Set(kSettingIppClientName, client_info.client_name);
42 dict.Set(kSettingIppClientStringVersion, client_info.client_string_version);
43 if (client_info.client_patches.has_value()) {
44 dict.Set(kSettingIppClientPatches, client_info.client_patches.value());
46 if (client_info.client_version.has_value()) {
47 dict.Set(kSettingIppClientVersion, client_info.client_version.value());
49 client_info_list.Append(std::move(dict));
51 return client_info_list;
54 std::vector<mojom::IppClientInfo> ConvertJobSettingToClientInfo(
55 const base::Value::List& client_info) {
56 std::vector<mojom::IppClientInfo> result;
57 for (const base::Value& client_info_value : client_info) {
58 result.push_back(GetClientInfoFromDict(client_info_value.GetDict()));
63 } // namespace printing