1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 import("//build/config/features.gni")
6 import("//build/config/sysroot.gni")
7 import("//build/config/ui.gni")
8 import("//pdf/features.gni")
9 import("//printing/buildflags/buildflags.gni")
10 import("//testing/test.gni")
12 import("//build/config/mac/mac_sdk.gni")
15 import("//build/config/android/rules.gni")
18 if ((enable_basic_printing && is_win) || enable_print_preview) {
19 # Windows basic printing or print preview requires pdf enabled.
21 "Windows basic printing or print preview needs pdf: " +
22 "set enable_pdf=true.")
25 component("printing") {
27 "backend/print_backend.cc",
28 "backend/print_backend.h",
29 "backend/print_backend_consts.cc",
30 "backend/print_backend_consts.h",
31 "backend/print_backend_dummy.cc",
32 "backend/printing_info_win.cc",
33 "backend/printing_info_win.h",
40 "metafile_skia_wrapper.cc",
41 "metafile_skia_wrapper.h",
42 "native_drawing_context.h",
51 "page_size_margins.h",
52 "pdf_metafile_cg_mac.cc",
53 "pdf_metafile_cg_mac.h",
54 "pdf_render_settings.h",
55 "print_dialog_gtk_interface.h",
56 "print_job_constants.cc",
57 "print_job_constants.h",
60 "print_settings_conversion.cc",
61 "print_settings_conversion.h",
62 "print_settings_initializer_mac.cc",
63 "print_settings_initializer_mac.h",
64 "print_settings_initializer_win.cc",
65 "print_settings_initializer_win.h",
66 "printed_document.cc",
68 "printed_document_mac.cc",
69 "printed_document_win.cc",
70 "printing_context.cc",
75 "pwg_raster_settings.h",
81 defines = [ "PRINTING_IMPLEMENTATION" ]
84 "//printing/buildflags",
89 "//base/third_party/dynamic_annotations",
100 deps += [ "//ui/aura" ]
104 # Mac-Aura does not support printing.
106 sources -= [ "printed_document_mac.cc" ]
109 "printing_context_mac.h",
110 "printing_context_mac.mm",
115 "QuartzCore.framework",
116 "ApplicationServices.framework",
117 "CoreFoundation.framework",
118 "CoreGraphics.framework",
123 # PRINT_BACKEND_AVAILABLE disables the default dummy implementation of the
124 # print backend and enables a custom implementation instead.
125 defines += [ "PRINT_BACKEND_AVAILABLE" ]
127 "backend/print_backend_win.cc",
128 "backend/win_helper.cc",
129 "backend/win_helper.h",
130 "printed_page_win.cc",
131 "printed_page_win.h",
132 "printing_context_system_dialog_win.cc",
133 "printing_context_system_dialog_win.h",
134 "printing_context_win.cc",
135 "printing_context_win.h",
140 configs += [ ":cups" ]
143 # rebase_path does not accept an empty string
145 cups_sysroot = rebase_path(sysroot)
149 cups_version = exec_script("cups_config_helper.py",
156 if (cups_version == "1.6" || cups_version == "1.7") {
158 # CUPS 1.6 deprecated the PPD APIs, but we will stay with this
159 # API for now as supported Linux and Mac OS'es are still using
160 # older versions of CUPS. More info: crbug.com/226176
161 "-Wno-deprecated-declarations",
162 # CUPS 1.7 deprecates httpConnectEncrypt(), see the mac section
169 # The 10.9 SDK includes cups 1.7, which deprecates
170 # httpConnectEncrypt() in favor of httpConnect2(). hhttpConnect2()
171 # is new in 1.7, so it doesn't exist on OS X 10.6-10.8 and we
172 # can't use it until 10.9 is our minimum system version.
173 # (cups_version isn't reliable on OS X, so key the check off of
175 # With a 10.8 deployment target, several other APIs are deprecated.
176 # We're still on CUPS 1.4 until Linux no longer needs to support it, see
178 cflags += [ "-Wno-deprecated-declarations" ]
181 # PRINT_BACKEND_AVAILABLE disables the default dummy implementation
182 # of the print backend and enables a custom implementation instead.
183 defines += [ "PRINT_BACKEND_AVAILABLE" ]
187 "backend/cups_connection.cc",
188 "backend/cups_connection.h",
189 "backend/cups_deleters.cc",
190 "backend/cups_deleters.h",
191 "backend/cups_ipp_util.cc",
192 "backend/cups_ipp_util.h",
193 "backend/cups_jobs.cc",
194 "backend/cups_jobs.h",
195 "backend/cups_printer.cc",
196 "backend/cups_printer.h",
197 "backend/print_backend_cups_ipp.cc",
198 "backend/print_backend_cups_ipp.h",
199 "printing_context_chromeos.cc",
200 "printing_context_chromeos.h",
204 "backend/cups_helper.cc",
205 "backend/cups_helper.h",
206 "backend/print_backend_cups.cc",
207 "backend/print_backend_cups.h",
213 defines += [ "PRINT_BACKEND_AVAILABLE" ]
216 "backend/print_backend_chromeos.cc",
217 "backend/printing_restrictions.cc",
218 "backend/printing_restrictions.h",
219 "printed_document_chromeos.cc",
220 "printing_context_no_system_dialog.cc",
221 "printing_context_no_system_dialog.h",
223 } else if (is_linux) { # Non-ChromeOS Linux.
225 "printed_document_linux.cc",
226 "printing_context_linux.cc",
227 "printing_context_linux.h",
229 } else if (is_tizen) {
230 set_sources_assignment_filter([])
233 "printing_context_linux.cc",
234 "printing_context_linux.h",
236 set_sources_assignment_filter(sources_assignment_filter)
237 } else if (is_android) {
239 "printed_document_android.cc",
240 "printing_context_android.cc",
241 "printing_context_android.h",
244 deps += [ ":printing_jni_headers" ]
245 } else if (is_linux) { # Desktop Linux.
247 "printed_document_linux.cc",
248 "printing_context_linux.cc",
249 "printing_context_linux.h",
254 static_library("test_support") {
257 "backend/test_print_backend.cc",
258 "backend/test_print_backend.h",
267 sources += [ "image_fuchsia.cc" ]
281 test("printing_unittests") {
283 "emf_win_unittest.cc",
284 "metafile_skia_unittest.cc",
285 "nup_parameters_unittest.cc",
286 "page_number_unittest.cc",
287 "page_range_unittest.cc",
288 "page_setup_unittest.cc",
289 "pdf_metafile_cg_mac_unittest.cc",
290 "printing_context_win_unittest.cc",
292 "printing_utils_unittest.cc",
298 "//base/test:run_all_unittests",
299 "//base/test:test_support",
305 "//ui/gfx:test_support",
309 if (is_win || is_mac) {
310 sources += [ "printed_document_unittest.cc" ]
314 sources += [ "printed_page_win_unittest.cc" ]
318 configs += [ ":cups" ]
321 sources += [ "backend/cups_ipp_util_unittest.cc" ]
323 sources += [ "backend/cups_helper_unittest.cc" ]
330 defines = [ "USE_CUPS" ]
334 lib_dirs = [ "$mac_sdk_path/usr/lib" ]
336 # rebase_path does not accept an empty string
338 cups_sysroot = rebase_path(sysroot)
342 libs = exec_script("cups_config_helper.py",
353 generate_jni("printing_jni_headers") {
355 "android/java/src/org/chromium/printing/PrintingContext.java",
357 jni_package = "printing"
360 android_library("printing_java") {
365 "android/java/src/org/chromium/printing/PrintDocumentAdapterWrapper.java",
366 "android/java/src/org/chromium/printing/PrintManagerDelegate.java",
367 "android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java",
368 "android/java/src/org/chromium/printing/Printable.java",
369 "android/java/src/org/chromium/printing/PrintingContext.java",
370 "android/java/src/org/chromium/printing/PrintingController.java",
371 "android/java/src/org/chromium/printing/PrintingControllerImpl.java",