Enable chrome with aura for tizen
[platform/framework/web/chromium-efl.git] / printing / BUILD.gn
1 # Copyright 2014 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.
4
5 import("//build/config/chromeos/ui_mode.gni")
6 import("//build/config/features.gni")
7 import("//build/config/sysroot.gni")
8 import("//build/config/ui.gni")
9 import("//pdf/features.gni")
10 import("//printing/buildflags/buildflags.gni")
11 import("//testing/test.gni")
12 if (is_mac) {
13   import("//build/config/mac/mac_sdk.gni")
14 }
15 if (is_android) {
16   import("//build/config/android/rules.gni")
17 }
18
19 assert(enable_basic_printing)
20
21 if (is_win || enable_print_preview) {
22   # Windows basic printing or print preview requires pdf enabled.
23   assert(enable_pdf,
24          "Windows basic printing or print preview needs pdf: " +
25              "set enable_pdf=true.")
26 }
27
28 # Lower-dependency base printing files which are needed by both :printing and
29 # //printing/backend without incurring deeper UI dependencies (e.g.,
30 # //ui/accessibility).  New files should normally be added to :printing, and
31 # only be moved here if they are also required by //printing/backend.
32 component("printing_base") {
33   sources = [
34     "print_job_constants.cc",
35     "print_job_constants.h",
36     "printing_features.cc",
37     "printing_features.h",
38     "printing_utils.cc",
39     "printing_utils.h",
40     "units.cc",
41     "units.h",
42   ]
43   if (use_cups_ipp || is_chromeos) {
44     sources += [
45       "printer_query_result.h",
46       "printer_status.cc",
47       "printer_status.h",
48     ]
49   }
50
51   if (use_cups) {
52     public_configs = [ ":cups" ]
53   }
54
55   cflags = []
56   defines = [ "IS_PRINTING_BASE_IMPL" ]
57
58   public_deps = [
59     "//build:chromeos_buildflags",
60     "//printing/buildflags",
61   ]
62   deps = [
63     "//base",
64     "//third_party/icu",
65     "//ui/gfx",
66     "//ui/gfx/geometry",
67   ]
68 }
69
70 if (enable_oop_printing && (is_linux || is_chromeos || is_tizen)) {
71   source_set("printing_sandbox_hook") {
72     sources = [
73       "sandbox/print_backend_sandbox_hook_linux.cc",
74       "sandbox/print_backend_sandbox_hook_linux.h",
75     ]
76     deps = [
77       "//base",
78       "//sandbox/linux:sandbox_services",
79       "//sandbox/policy",
80       "//services/network:network_sandbox_hook",
81     ]
82
83     if (use_cups) {
84       configs += [ ":cups" ]
85     }
86
87     if (is_chromeos && use_cups) {
88       deps += [ "//printing/backend" ]
89     }
90   }
91 }
92
93 source_set("native_drawing_context") {
94   sources = [ "native_drawing_context.h" ]
95
96   deps = [ "//base" ]
97 }
98
99 component("metafile") {
100   sources = [
101     "metafile.cc",
102     "metafile.h",
103     "metafile_agent.cc",
104     "metafile_agent.h",
105     "metafile_skia.cc",
106     "metafile_skia.h",
107   ]
108
109   defines = [ "IS_PRINTING_METAFILE_IMPL" ]
110   public_deps = [
111     ":native_drawing_context",
112     "//printing/mojom",
113   ]
114   deps = [
115     "//cc/paint",
116     "//printing/common",
117     "//ui/accessibility",
118   ]
119
120   if (is_mac) {
121     sources += [
122       "pdf_metafile_cg_mac.cc",
123       "pdf_metafile_cg_mac.h",
124     ]
125
126     frameworks = [
127       "ApplicationServices.framework",
128       "CoreFoundation.framework",
129     ]
130   }
131
132   if (is_win) {
133     sources += [
134       "emf_win.cc",
135       "emf_win.h",
136     ]
137   }
138 }
139
140 component("printing") {
141   sources = [
142     "nup_parameters.cc",
143     "nup_parameters.h",
144     "page_number.cc",
145     "page_number.h",
146     "page_range.cc",
147     "page_range.h",
148     "page_setup.cc",
149     "page_setup.h",
150     "pdf_render_settings.h",
151     "print_dialog_linux_interface.h",
152     "print_settings.cc",
153     "print_settings.h",
154     "print_settings_conversion.cc",
155     "print_settings_conversion.h",
156     "printed_document.cc",
157     "printed_document.h",
158     "printing_context.cc",
159     "printing_context.h",
160     "printing_context_factory_for_test.h",
161     "pwg_raster_settings.h",
162   ]
163
164   cflags = []
165   defines = [ "IS_PRINTING_IMPL" ]
166
167   public_deps = [
168     ":metafile",
169     ":native_drawing_context",
170     ":printing_base",
171   ]
172   deps = [
173     "//base",
174     "//base:i18n",
175     "//base/third_party/dynamic_annotations",
176     "//build:chromeos_buildflags",
177     "//printing/mojom",
178     "//skia",
179     "//third_party/icu",
180     "//ui/gfx",
181     "//ui/gfx/geometry",
182     "//url",
183   ]
184
185   if (is_android) {
186     sources += [
187       "printing_context_android.cc",
188       "printing_context_android.h",
189     ]
190
191     deps += [
192       ":printing_jni_headers",
193       "//ui/android",
194     ]
195   }
196
197   if (is_chromeos) {
198     sources += [
199       "printing_context_no_system_dialog.cc",
200       "printing_context_no_system_dialog.h",
201     ]
202   }
203
204   # TODO(crbug.com/1272828): Determine need for Fuchsia-specific implementation.
205   if (is_linux || is_fuchsia || is_tizen) {
206     sources += [
207       "printing_context_linux.cc",
208       "printing_context_linux.h",
209     ]
210   }
211
212   if (is_linux) {
213     deps += [ "//ui/linux:linux_ui" ]
214   }
215
216   if (is_mac) {
217     sources += [
218       "print_settings_initializer_mac.cc",
219       "print_settings_initializer_mac.h",
220       "printing_context_mac.h",
221       "printing_context_mac.mm",
222     ]
223
224     frameworks = [
225       "AppKit.framework",
226       "QuartzCore.framework",
227       "ApplicationServices.framework",
228       "CoreFoundation.framework",
229       "CoreGraphics.framework",
230     ]
231   }
232
233   if (is_win) {
234     sources += [
235       "print_settings_initializer_win.cc",
236       "print_settings_initializer_win.h",
237       "printed_document_win.cc",
238       "printed_page_win.cc",
239       "printed_page_win.h",
240       "printing_context_system_dialog_win.cc",
241       "printing_context_system_dialog_win.h",
242       "printing_context_win.cc",
243       "printing_context_win.h",
244     ]
245
246     deps += [ "//printing/backend" ]
247   }
248
249   if (use_aura) {
250     deps += [ "//ui/aura" ]
251   }
252
253   if (use_cups) {
254     if (is_chromeos) {
255       sources += [
256         "printing_context_chromeos.cc",
257         "printing_context_chromeos.h",
258       ]
259
260       deps += [ "//printing/backend" ]
261     }
262   }
263
264   if (enable_oop_printing && (is_linux || is_chromeos)) {
265     deps += [ ":printing_sandbox_hook" ]
266   }
267 }
268
269 static_library("test_support") {
270   testonly = true
271   sources = [
272     "image.cc",
273     "image.h",
274     "test_printing_context.cc",
275     "test_printing_context.h",
276   ]
277
278   public_deps = [
279     "//printing",
280     "//printing/backend:test_support",
281     "//printing/mojom",
282     "//ui/gfx/geometry",
283   ]
284   deps = [
285     "//base",
286     "//build:chromeos_buildflags",
287     "//printing/backend",
288     "//skia",
289     "//ui/gfx",
290   ]
291
292   if (is_android) {
293     sources += [ "image_android.cc" ]
294   }
295
296   if (is_linux || is_chromeos || is_fuchsia) {
297     sources += [ "image_linux.cc" ]
298   }
299   if (is_mac) {
300     sources += [ "image_mac.cc" ]
301   }
302   if (is_win) {
303     sources += [ "image_win.cc" ]
304   }
305 }
306
307 test("printing_unittests") {
308   sources = [
309     "backend/print_backend_unittest.cc",
310     "backend/print_backend_utils_unittest.cc",
311     "metafile_skia_unittest.cc",
312     "nup_parameters_unittest.cc",
313     "page_number_unittest.cc",
314     "page_range_unittest.cc",
315     "page_setup_unittest.cc",
316     "print_settings_conversion_unittest.cc",
317     "print_settings_unittest.cc",
318     "printing_test.h",
319     "printing_utils_unittest.cc",
320     "units_unittest.cc",
321   ]
322
323   deps = [
324     ":printing",
325     ":test_support",
326     "//base/test:test_support",
327     "//build:chromeos_buildflags",
328     "//mojo/core/test:run_all_unittests",
329     "//mojo/public/cpp/test_support:test_utils",
330     "//printing/backend",
331     "//printing/backend:test_support",
332     "//printing/common",
333     "//printing/mojom",
334     "//testing/gmock",
335     "//testing/gtest",
336     "//ui/base",
337     "//ui/gfx",
338     "//ui/gfx:test_support",
339     "//ui/gfx/geometry",
340   ]
341
342   if (enable_oop_printing) {
343     sources += [
344       "backend/mojom/print_backend_mojom_traits_unittest.cc",
345       "backend/test_print_backend_unittest.cc",
346       "mojom/printing_context_mojom_traits_unittest.cc",
347     ]
348     deps += [
349       "//printing/backend/mojom",
350       "//printing/mojom:printing_context",
351     ]
352   }
353
354   if (is_mac) {
355     sources += [ "pdf_metafile_cg_mac_unittest.cc" ]
356
357     data = [
358       "test/data/pdf_cg/",
359       "../pdf/test/data/",
360     ]
361   }
362
363   if (is_win) {
364     sources += [
365       "backend/xps_utils_win_unittest.cc",
366       "emf_win_unittest.cc",
367       "printed_page_win_unittest.cc",
368       "printing_context_win_unittest.cc",
369     ]
370
371     data = [ "test/data/emf/" ]
372   }
373
374   if (use_cups) {
375     if (use_cups_ipp) {
376       sources += [ "backend/cups_ipp_helper_unittest.cc" ]
377     }
378
379     if (is_chromeos) {
380       sources += [ "printing_context_chromeos_unittest.cc" ]
381     }
382
383     if (!is_chromeos_ash) {
384       sources += [
385         "backend/cups_helper_unittest.cc",
386         "backend/print_backend_cups_unittest.cc",
387       ]
388     }
389   }
390 }
391
392 if (use_cups) {
393   config("cups") {
394     defines = [ "USE_CUPS" ]
395
396     if (is_mac) {
397       libs = [ "cups" ]
398       lib_dirs = [ "$mac_sdk_path/usr/lib" ]
399     } else {
400       # rebase_path does not accept an empty string
401       if (use_sysroot) {
402         cups_sysroot = rebase_path(sysroot)
403       } else {
404         cups_sysroot = ""
405       }
406       libs = exec_script("cups_config_helper.py",
407                          [
408                            "--libs-for-gn",
409                            cups_sysroot,
410                          ],
411                          "value")
412     }
413   }
414 }
415
416 if (is_android) {
417   generate_jni("printing_jni_headers") {
418     sources = [ "android/java/src/org/chromium/printing/PrintingContext.java" ]
419   }
420
421   android_library("printing_java") {
422     deps = [
423       "//base:base_java",
424       "//base:jni_java",
425       "//build/android:build_java",
426       "//third_party/androidx:androidx_annotation_annotation_java",
427       "//ui/android:ui_java",
428     ]
429     sources = [
430       "android/java/src/org/chromium/printing/PrintDocumentAdapterWrapper.java",
431       "android/java/src/org/chromium/printing/PrintManagerDelegate.java",
432       "android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java",
433       "android/java/src/org/chromium/printing/Printable.java",
434       "android/java/src/org/chromium/printing/PrintingContext.java",
435       "android/java/src/org/chromium/printing/PrintingController.java",
436       "android/java/src/org/chromium/printing/PrintingControllerImpl.java",
437     ]
438     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
439   }
440 }