diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 9186c5ebe7a8e..2b54994e2f6f1 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn @@ -4759,6 +4759,12 @@ static_library("ui") { "//services/device/public/mojom:usb", ] + if (is_chromeos_lacros) { + sources += [ + "webui/print_preview/local_printer_handler_lacros.cc", + "webui/print_preview/local_printer_handler_lacros.h", + ] + } if (is_chromeos_ash) { sources += [ "webui/print_preview/local_printer_handler_chromeos.cc", diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.cc new file mode 100644 index 0000000000000..b399fbd7c452e --- /dev/null +++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.cc @@ -0,0 +1,152 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.h" + +#include <memory> +#include <string> +#include <utility> +#include <vector> + +#include "base/bind.h" +#include "base/logging.h" +#include "base/memory/scoped_refptr.h" +#include "base/metrics/histogram_functions.h" +#include "base/stl_util.h" +#include "base/values.h" +#include "chrome/browser/ui/webui/print_preview/print_preview_utils.h" +#include "chrome/common/printing/printer_capabilities.h" +#include "chromeos/crosapi/mojom/local_printer.mojom.h" +#include "chromeos/lacros/lacros_chrome_service_impl.h" +#include "content/public/browser/browser_thread.h" +#include "printing/backend/print_backend.h" +#include "printing/backend/print_backend_consts.h" +#include "printing/backend/printing_restrictions.h" +#include "printing/print_job_constants.h" + +namespace printing { + +namespace { + +base::Value PrinterToValue(const crosapi::mojom::LocalDestinationInfo& p) { + base::Value value(base::Value::Type::DICTIONARY); + value.SetStringKey(kSettingDeviceName, p.device_name); + value.SetStringKey(kSettingPrinterName, p.printer_name); + value.SetStringKey(kSettingPrinterDescription, p.printer_description); + value.SetBoolKey(kCUPSEnterprisePrinter, p.configured_via_policy); + return value; +} + +base::Value CapabilityToValue(crosapi::mojom::CapabilitiesResponsePtr ptr) { + if (!ptr) + return base::Value(); + base::Value dict = AssemblePrinterSettings( + ptr->basic_info->device_name, + PrinterBasicInfo( + ptr->basic_info->device_name, ptr->basic_info->printer_name, + ptr->basic_info->printer_description, 0, false, + PrinterBasicInfoOptions{ + {kCUPSEnterprisePrinter, ptr->basic_info->configured_via_policy + ? kValueTrue + : kValueFalse}}), + PrinterSemanticCapsAndDefaults::Papers(), ptr->has_secure_protocol, + base::OptionalOrNullptr(ptr->capabilities)); + base::Value policies(base::Value::Type::DICTIONARY); + policies.SetIntKey(kAllowedColorModes, ptr->allowed_color_modes); + policies.SetIntKey(kAllowedDuplexModes, ptr->allowed_duplex_modes); + policies.SetIntKey(kAllowedPinModes, ptr->allowed_pin_modes); + policies.SetIntKey(kDefaultColorMode, + static_cast<int>(ptr->default_color_mode)); + policies.SetIntKey(kDefaultDuplexMode, + static_cast<int>(ptr->default_duplex_mode)); + policies.SetIntKey(kDefaultPinMode, static_cast<int>(ptr->default_pin_mode)); + dict.FindKey(kPrinter)->SetKey(kSettingPolicies, std::move(policies)); + return dict; +} + +void GetPrinters( + LocalPrinterHandlerLacros::AddedPrintersCallback callback, + LocalPrinterHandlerLacros::GetPrintersDoneCallback done_callback, + std::vector<crosapi::mojom::LocalDestinationInfoPtr> printers) { + if (printers.size()) { + base::ListValue list; + for (const crosapi::mojom::LocalDestinationInfoPtr& p : printers) { + // There is an implicit DCHECK(p) here. + list.Append(PrinterToValue(*p)); + } + std::move(callback).Run(std::move(list)); + } + std::move(done_callback).Run(); +} + +} // namespace + +// static +std::unique_ptr<LocalPrinterHandlerLacros> +LocalPrinterHandlerLacros::CreateDefault( + content::WebContents* preview_web_contents) { + return base::WrapUnique(new LocalPrinterHandlerLacros(preview_web_contents)); +} + +LocalPrinterHandlerLacros::LocalPrinterHandlerLacros( + content::WebContents* preview_web_contents) + : preview_web_contents_(preview_web_contents), + service_(chromeos::LacrosChromeServiceImpl::Get()) {} + +LocalPrinterHandlerLacros::~LocalPrinterHandlerLacros() = default; + +void LocalPrinterHandlerLacros::Reset() {} + +void LocalPrinterHandlerLacros::GetDefaultPrinter( + DefaultPrinterCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + if (!service_->IsAvailable<crosapi::mojom::LocalPrinter>()) { + LOG(ERROR) << "Local printer not available"; + std::move(callback).Run(std::string()); + return; + } + // TODO(b/172229329): Add default printers to ChromeOS. + std::move(callback).Run(std::string()); +} + +void LocalPrinterHandlerLacros::StartGetPrinters( + AddedPrintersCallback callback, + GetPrintersDoneCallback done_callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + if (!service_->IsAvailable<crosapi::mojom::LocalPrinter>()) { + LOG(ERROR) << "Local printer not available"; + std::move(done_callback).Run(); + return; + } + service_->GetRemote<crosapi::mojom::LocalPrinter>()->GetPrinters( + base::BindOnce(GetPrinters, std::move(callback), + std::move(done_callback))); +} + +void LocalPrinterHandlerLacros::StartGetCapability( + const std::string& device_name, + GetCapabilityCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + if (!service_->IsAvailable<crosapi::mojom::LocalPrinter>()) { + LOG(ERROR) << "Local printer not available"; + std::move(callback).Run(base::Value()); + return; + } + service_->GetRemote<crosapi::mojom::LocalPrinter>()->GetCapability( + device_name, base::BindOnce(CapabilityToValue).Then(std::move(callback))); +} + +void LocalPrinterHandlerLacros::StartPrint( + const std::u16string& job_title, + base::Value settings, + scoped_refptr<base::RefCountedMemory> print_data, + PrintCallback callback) { + size_t size_in_kb = print_data->size() / 1024; + base::UmaHistogramMemoryKB("Printing.CUPS.PrintDocumentSize", size_in_kb); + // TOOD: add support for printing.send_username_and_filename_enabled flag. + StartLocalPrint(std::move(settings), std::move(print_data), + preview_web_contents_, std::move(callback)); +} + +} // namespace printing diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.h b/chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.h new file mode 100644 index 0000000000000..7acd587830663 --- /dev/null +++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.h @@ -0,0 +1,52 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_LOCAL_PRINTER_HANDLER_LACROS_H_ +#define CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_LOCAL_PRINTER_HANDLER_LACROS_H_ + +#include <memory> +#include <string> + +#include "base/memory/scoped_refptr.h" +#include "base/values.h" +#include "chrome/browser/ui/webui/print_preview/printer_handler.h" +#include "chromeos/lacros/lacros_chrome_service_impl.h" + +namespace content { +class WebContents; +} + +namespace printing { + +class LocalPrinterHandlerLacros : public PrinterHandler { + public: + static std::unique_ptr<LocalPrinterHandlerLacros> CreateDefault( + content::WebContents* preview_web_contents); + LocalPrinterHandlerLacros(const LocalPrinterHandlerLacros&) = delete; + LocalPrinterHandlerLacros& operator=(const LocalPrinterHandlerLacros&) = + delete; + ~LocalPrinterHandlerLacros() override; + + // PrinterHandler implementation. + void Reset() override; + void GetDefaultPrinter(DefaultPrinterCallback callback) override; + void StartGetPrinters(AddedPrintersCallback added_printers_callback, + GetPrintersDoneCallback done_callback) override; + void StartGetCapability(const std::string& destination_id, + GetCapabilityCallback callback) override; + void StartPrint(const std::u16string& job_title, + base::Value settings, + scoped_refptr<base::RefCountedMemory> print_data, + PrintCallback callback) override; + + private: + explicit LocalPrinterHandlerLacros( + content::WebContents* preview_web_contents); + content::WebContents* const preview_web_contents_; + chromeos::LacrosChromeServiceImpl* const service_; +}; + +} // namespace printing + +#endif // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_LOCAL_PRINTER_HANDLER_LACROS_H_ diff --git a/chrome/browser/ui/webui/print_preview/printer_handler.cc b/chrome/browser/ui/webui/print_preview/printer_handler.cc index e29f23e2e04a8..1d098bfe00087 100644 --- a/chrome/browser/ui/webui/print_preview/printer_handler.cc +++ b/chrome/browser/ui/webui/print_preview/printer_handler.cc @@ -16,6 +16,8 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.h" +#elif BUILDFLAG(IS_CHROMEOS_LACROS) +#include "chrome/browser/ui/webui/print_preview/local_printer_handler_lacros.h" #else #include "chrome/browser/ui/webui/print_preview/local_printer_handler_default.h" #endif @@ -35,6 +37,8 @@ std::unique_ptr<PrinterHandler> PrinterHandler::CreateForLocalPrinters( #if BUILDFLAG(IS_CHROMEOS_ASH) return LocalPrinterHandlerChromeos::CreateDefault(profile, preview_web_contents); +#elif BUILDFLAG(IS_CHROMEOS_LACROS) + return LocalPrinterHandlerLacros::CreateDefault(preview_web_contents); #else return std::make_unique<LocalPrinterHandlerDefault>(preview_web_contents); #endif diff --git a/printing/BUILD.gn b/printing/BUILD.gn index 02c0d924ac085..dee9ed888760b 100644 --- a/printing/BUILD.gn +++ b/printing/BUILD.gn @@ -40,7 +40,7 @@ component("printing_base") { "units.cc", "units.h", ] - if (use_cups_ipp || is_chromeos_ash) { + if (use_cups_ipp || is_chromeos) { sources += [ "printer_query_result.h", "printer_status.cc", @@ -146,7 +146,7 @@ component("printing") { ] } - if (is_chromeos_ash) { + if (is_chromeos) { sources += [ "printed_document_chromeos.cc", "printing_context_no_system_dialog.cc", @@ -154,7 +154,7 @@ component("printing") { ] } - if (is_linux || is_chromeos_lacros) { + if (is_linux) { sources += [ "printed_document_linux.cc", "printing_context_linux.cc", @@ -205,7 +205,7 @@ component("printing") { if (use_cups) { configs += [ ":cups" ] - if (is_chromeos_ash) { + if (is_chromeos) { sources += [ "printing_context_chromeos.cc", "printing_context_chromeos.h", @@ -319,9 +319,11 @@ test("printing_unittests") { sources += [ "backend/cups_ipp_helper_unittest.cc" ] } - if (is_chromeos_ash) { + if (is_chromeos) { sources += [ "printing_context_chromeos_unittest.cc" ] - } else { + } + + if (!is_chromeos_ash) { sources += [ "backend/cups_helper_unittest.cc", "backend/print_backend_cups_unittest.cc", diff --git a/printing/backend/BUILD.gn b/printing/backend/BUILD.gn index f0319407417d3..e0527df6a7e13 100644 --- a/printing/backend/BUILD.gn +++ b/printing/backend/BUILD.gn @@ -4,11 +4,9 @@ import("//build/config/chromeos/ui_mode.gni") import("//printing/buildflags/buildflags.gni") -if (use_cups && is_chromeos_ash) { +if (use_cups && is_chromeos) { import("//printing/backend/tools/code_generator.gni") -} -if (use_cups_ipp && is_chromeos_ash) { ipp_handler_map_path = "$target_gen_dir/backend/ipp_handler_map.cc" ipp_code_generate("ipp_handlers_generate") { @@ -48,7 +46,7 @@ component("backend") { "//url", ] - if (is_chromeos_ash) { + if (is_chromeos) { # PRINT_BACKEND_AVAILABLE disables the default dummy implementation # print backend and enables a custom implementation instead. defines += [ "PRINT_BACKEND_AVAILABLE" ] @@ -110,7 +108,7 @@ component("backend") { ] } - if (is_chromeos_ash) { + if (is_chromeos) { deps += [ ":ipp_handlers_generate" ] sources += [ @@ -119,7 +117,8 @@ component("backend") { "ipp_handlers.h", ipp_handler_map_path, ] - } else { + } + if (!is_chromeos_ash) { # TODO(crbug.com/1062136): Remove the original CUPS backend for macOS # when Cloud Print support is terminated. Follow up after Jan 1, 2021. sources += [ diff --git a/printing/backend/cups_ipp_constants.cc b/printing/backend/cups_ipp_constants.cc index 1473d483a63d2..7281f38248aec 100644 --- a/printing/backend/cups_ipp_constants.cc +++ b/printing/backend/cups_ipp_constants.cc @@ -24,7 +24,7 @@ constexpr char kIppPinEncryption[] = "job-password-encryption"; // PWG 5100.11 constexpr char kCollated[] = "separate-documents-collated-copies"; constexpr char kUncollated[] = "separate-documents-uncollated-copies"; -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) constexpr char kIppDocumentAttributes[] = "document-creation-attributes"; // PWG 5100.5 @@ -35,6 +35,6 @@ constexpr char kPinEncryptionNone[] = "none"; constexpr char kOptionFalse[] = "false"; constexpr char kOptionTrue[] = "true"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // defined(OS_CHROMEOS) } // namespace printing diff --git a/printing/backend/cups_ipp_constants.h b/printing/backend/cups_ipp_constants.h index f3e0e3ce4a98e..da690acf490ca 100644 --- a/printing/backend/cups_ipp_constants.h +++ b/printing/backend/cups_ipp_constants.h @@ -25,7 +25,7 @@ COMPONENT_EXPORT(PRINT_BACKEND) extern const char kIppPinEncryption[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kCollated[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kUncollated[]; -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) COMPONENT_EXPORT(PRINT_BACKEND) extern const char kIppDocumentAttributes[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kIppJobAttributes[]; @@ -35,7 +35,7 @@ COMPONENT_EXPORT(PRINT_BACKEND) extern const char kPinEncryptionNone[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kOptionFalse[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kOptionTrue[]; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // defined(OS_CHROMEOS) } // namespace printing diff --git a/printing/backend/print_backend_cups.cc b/printing/backend/print_backend_cups.cc index 1b8ae0564ba5f..3649def670b14 100644 --- a/printing/backend/print_backend_cups.cc +++ b/printing/backend/print_backend_cups.cc @@ -240,6 +240,7 @@ bool PrintBackendCUPS::IsValidPrinter(const std::string& printer_name) { return !!GetNamedDest(printer_name); } +#if !defined(OS_CHROMEOS) scoped_refptr<PrintBackend> PrintBackend::CreateInstanceImpl( const base::DictionaryValue* print_backend_settings, const std::string& locale, @@ -266,6 +267,7 @@ scoped_refptr<PrintBackend> PrintBackend::CreateInstanceImpl( print_server_url, static_cast<http_encryption_t>(encryption), cups_blocking == kValueTrue, locale); } +#endif // !defined(OS_CHROMEOS) int PrintBackendCUPS::GetDests(cups_dest_t** dests) { // Default to the local print server (CUPS scheduler) diff --git a/printing/backend/printing_restrictions.cc b/printing/backend/printing_restrictions.cc index b23f89f7eda17..0d73b8252b5a6 100644 --- a/printing/backend/printing_restrictions.cc +++ b/printing/backend/printing_restrictions.cc @@ -8,14 +8,14 @@ namespace printing { -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) const char kAllowedColorModes[] = "allowedColorModes"; const char kAllowedDuplexModes[] = "allowedDuplexModes"; const char kAllowedPinModes[] = "allowedPinModes"; const char kDefaultColorMode[] = "defaultColorMode"; const char kDefaultDuplexMode[] = "defaultDuplexMode"; const char kDefaultPinMode[] = "defaultPinMode"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // defined(OS_CHROMEOS) const char kPaperSizeName[] = "name"; const char kPaperSizeNameCustomOption[] = "custom"; diff --git a/printing/backend/printing_restrictions.h b/printing/backend/printing_restrictions.h index 0fba795f8ff6d..3406574852586 100644 --- a/printing/backend/printing_restrictions.h +++ b/printing/backend/printing_restrictions.h @@ -8,13 +8,13 @@ #include "base/component_export.h" #include "build/chromeos_buildflags.h" -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) #include "printing/mojom/print.mojom.h" #endif namespace printing { -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) // Allowed printing modes as a bitmask. // This is used in pref file and should never change. using ColorModeRestriction = mojom::ColorModeRestriction; @@ -36,7 +36,7 @@ COMPONENT_EXPORT(PRINT_BACKEND) extern const char kAllowedPinModes[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kDefaultColorMode[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kDefaultDuplexMode[]; COMPONENT_EXPORT(PRINT_BACKEND) extern const char kDefaultPinMode[]; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // defined(OS_CHROMEOS) // Allowed background graphics modes. // This is used in pref file and should never change. diff --git a/printing/buildflags/buildflags.gni b/printing/buildflags/buildflags.gni index 2fe0c2a61ed34..9f0746e6f3eb0 100644 --- a/printing/buildflags/buildflags.gni +++ b/printing/buildflags/buildflags.gni @@ -32,5 +32,5 @@ declare_args() { declare_args() { # Enable the CUPS IPP printing backend. # TODO(crbug.com/226176): Remove this after CUPS PPD API calls are removed. - use_cups_ipp = use_cups && !(is_linux || is_chromeos_lacros) + use_cups_ipp = use_cups && !is_linux } diff --git a/printing/print_settings.cc b/printing/print_settings.cc index 52ccd8db65433..708adb1311764 100644 --- a/printing/print_settings.cc +++ b/printing/print_settings.cc @@ -10,7 +10,7 @@ #include "build/chromeos_buildflags.h" #include "printing/units.h" -#if defined(USE_CUPS) && (defined(OS_MAC) || BUILDFLAG(IS_CHROMEOS_ASH)) +#if defined(USE_CUPS) && (defined(OS_MAC) || defined(OS_CHROMEOS)) #include <cups/cups.h> #endif @@ -183,7 +183,7 @@ void GetColorModelForModel(mojom::ColorModel color_model, // all ColorModel values are determinantly handled. } -#if defined(OS_MAC) || BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_MAC) || defined(OS_CHROMEOS) std::string GetIppColorModelForModel(mojom::ColorModel color_model) { // Accept `kUnknownColorModel` for consistency with GetColorModelForModel(). if (color_model == mojom::ColorModel::kUnknownColorModel) @@ -198,7 +198,7 @@ std::string GetIppColorModelForModel(mojom::ColorModel color_model) { return is_color.value() ? CUPS_PRINT_COLOR_MODE_COLOR : CUPS_PRINT_COLOR_MODE_MONOCHROME; } -#endif // defined(OS_MAC) || BUILDFLAG(IS_CHROMEOS_ASH) +#endif // defined(OS_MAC) || defined(OS_CHROMEOS) #endif // defined(USE_CUPS) base::Optional<bool> IsColorModelSelected(mojom::ColorModel color_model) { @@ -281,11 +281,11 @@ void PrintSettings::Clear() { #if defined(OS_LINUX) || defined(OS_CHROMEOS) advanced_settings_.clear(); #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) send_user_info_ = false; username_.clear(); pin_value_.clear(); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // defined(OS_CHROMEOS) } void PrintSettings::SetPrinterPrintableArea( diff --git a/printing/print_settings.h b/printing/print_settings.h index 703a720fef512..8b66745195337 100644 --- a/printing/print_settings.h +++ b/printing/print_settings.h @@ -45,7 +45,7 @@ void GetColorModelForModel(mojom::ColorModel color_model, std::string* color_setting_name, std::string* color_value); -#if defined(OS_MAC) || BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_MAC) || defined(OS_CHROMEOS) // Convert from `color_model` to a print-color-mode value from PWG 5100.13. COMPONENT_EXPORT(PRINTING) std::string GetIppColorModelForModel(mojom::ColorModel color_model); @@ -230,7 +230,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings { } #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) void set_send_user_info(bool send_user_info) { send_user_info_ = send_user_info; } @@ -327,7 +327,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings { AdvancedSettings advanced_settings_; #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) // Whether to send user info. bool send_user_info_; diff --git a/printing/printing_context.cc b/printing/printing_context.cc index 92561ff7c6bce..30fa5344771c7 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc @@ -146,7 +146,7 @@ PrintingContext::Result PrintingContext::UpdatePrintSettings( job_settings.FindIntKey(kSettingPreviewPageCount).value_or(0)); } -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) PrintingContext::Result PrintingContext::UpdatePrintSettingsFromPOD( std::unique_ptr<PrintSettings> job_settings) { ResetSettings(); diff --git a/printing/printing_context.h b/printing/printing_context.h index a45e0a7678151..5c300fa414fbb 100644 --- a/printing/printing_context.h +++ b/printing/printing_context.h @@ -86,7 +86,7 @@ class COMPONENT_EXPORT(PRINTING) PrintingContext { // settings information. Result UpdatePrintSettings(base::Value job_settings); -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_CHROMEOS) // Updates Print Settings. Result UpdatePrintSettingsFromPOD( std::unique_ptr<PrintSettings> job_settings);