chromium/chrome/common/printing/BUILD.gn

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

import("//build/buildflag_header.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//printing/buildflags/buildflags.gni")
if (is_chromeos) {
  import("//printing/backend/tools/code_generator.gni")
}

declare_args() {
  # Enable print media localization only on the platforms that support CUPS IPP
  # (ChromeOS and macOS for now). The localization expects media vendor IDs
  # uniquely generated by CUPS IPP.
  enable_print_media_l10n = is_chromeos || is_mac
}

buildflag_header("printing_buildflags") {
  header = "printing_buildflags.h"

  flags = [ "PRINT_MEDIA_L10N_ENABLED=$enable_print_media_l10n" ]
}

if (is_chromeos) {
  localization_map_path = "$target_gen_dir/ipp_l10n.cc"

  ipp_code_generate("ipp_l10n_generate") {
    outputs = [ localization_map_path ]
    args = [ "--localization-map=" +
             rebase_path(localization_map_path, root_build_dir) ]
  }
}

source_set("printing") {
  sources = [
    "printing_init.cc",
    "printing_init.h",
  ]

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  public_deps = [
    ":printing_buildflags",
    "//printing/backend",
  ]

  deps = [
    "//base",
    "//build:chromeos_buildflags",
    "//components/crash/core/common",
    "//components/printing/common",
    "//components/strings:components_strings_grit",
    "//printing",
    "//printing/mojom",
    "//ui/base",
    "//ui/gfx/geometry",
  ]

  if (is_chromeos) {
    deps += [ ":ipp_l10n_generate" ]

    sources += [
      "ipp_l10n.h",
      localization_map_path,
    ]
  }

  if (enable_print_media_l10n) {
    deps += [
      "//base:i18n",
      "//components/device_event_log",
      "//third_party/re2",
    ]

    sources += [
      "print_media_l10n.cc",
      "print_media_l10n.h",
    ]
  }

  if (enable_print_preview) {
    sources += [
      "printer_capabilities.cc",
      "printer_capabilities.h",
    ]

    deps += [ "//components/device_event_log" ]

    if (is_mac) {
      sources += [
        "printer_capabilities_mac.h",
        "printer_capabilities_mac.mm",
      ]
    }
  }
}

source_set("unit_tests") {
  testonly = true
  sources = []

  deps = [
    "//base",
    "//build:chromeos_buildflags",
    "//chrome/common/printing",
    "//content/test:test_support",
    "//printing:test_support",
    "//testing/gtest",
  ]

  if (enable_print_media_l10n) {
    sources += [ "print_media_l10n_unittest.cc" ]
  }

  if (enable_print_preview) {
    sources += [ "printer_capabilities_unittest.cc" ]

    if (is_mac) {
      sources += [ "printer_capabilities_mac_unittest.mm" ]
    }
  }
}