scheduler: Increase work batch size to 4
[chromium-blink-merge.git] / ui / gfx / BUILD.gn
bloba5f095e469f0eb2952eb1bc1d69211278b90fb04
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/ui.gni")
6 import("//testing/test.gni")
8 if (is_android) {
9   import("//build/config/android/config.gni")
10   import("//build/config/android/rules.gni")
13 # Several targets want to include this header file, and some of them are
14 # child dependencies of "gfx". Therefore, we separate it out here so multiple
15 # targets can all have a dependency for header checking purposes without
16 # creating circular dependencies.
17 source_set("gfx_export") {
18   sources = [
19     "gfx_export.h",
20   ]
23 vector_icons_cc_file = "$target_gen_dir/vector_icons.cc"
24 vector_icons_h_file = "$target_gen_dir/vector_icons2.h"
26 component("gfx") {
27   sources = [
28     "android/device_display_info.cc",
29     "android/device_display_info.h",
30     "android/gfx_jni_registrar.cc",
31     "android/gfx_jni_registrar.h",
32     "android/java_bitmap.cc",
33     "android/java_bitmap.h",
34     "android/shared_device_display_info.cc",
35     "android/shared_device_display_info.h",
36     "android/view_configuration.cc",
37     "android/view_configuration.h",
38     "animation/animation.cc",
39     "animation/animation.h",
40     "animation/animation_container.cc",
41     "animation/animation_container.h",
42     "animation/animation_container_element.h",
43     "animation/animation_container_observer.h",
44     "animation/animation_delegate.h",
45     "animation/linear_animation.cc",
46     "animation/linear_animation.h",
47     "animation/multi_animation.cc",
48     "animation/multi_animation.h",
49     "animation/slide_animation.cc",
50     "animation/slide_animation.h",
51     "animation/throb_animation.cc",
52     "animation/throb_animation.h",
53     "animation/tween.cc",
54     "animation/tween.h",
55     "blit.cc",
56     "blit.h",
57     "break_list.h",
58     "canvas.cc",
59     "canvas.h",
60     "canvas_notimplemented.cc",
61     "canvas_paint_mac.h",
62     "canvas_paint_mac.mm",
63     "canvas_skia.cc",
64     "canvas_skia_paint.h",
65     "codec/jpeg_codec.cc",
66     "codec/jpeg_codec.h",
67     "codec/png_codec.cc",
68     "codec/png_codec.h",
69     "color_analysis.cc",
70     "color_analysis.h",
71     "color_profile.cc",
72     "color_profile.h",
73     "color_profile_mac.mm",
74     "color_profile_win.cc",
75     "color_utils.cc",
76     "color_utils.h",
77     "display.cc",
78     "display.h",
79     "display_change_notifier.cc",
80     "display_change_notifier.h",
81     "display_observer.cc",
82     "display_observer.h",
83     "favicon_size.cc",
84     "favicon_size.h",
85     "font.cc",
86     "font.h",
87     "font_fallback.h",
88     "font_fallback_linux.cc",
89     "font_fallback_mac.mm",
90     "font_fallback_win.cc",
91     "font_fallback_win.h",
92     "font_list.cc",
93     "font_list.h",
94     "font_list_impl.cc",
95     "font_list_impl.h",
96     "font_render_params.cc",
97     "font_render_params.h",
98     "font_render_params_android.cc",
99     "font_render_params_linux.cc",
100     "font_render_params_mac.cc",
101     "font_render_params_win.cc",
102     "gdi_util.cc",
103     "gdi_util.h",
104     "gfx_paths.cc",
105     "gfx_paths.h",
106     "gpu_memory_buffer.cc",
107     "gpu_memory_buffer.h",
108     "hud_font.cc",
109     "hud_font.h",
110     "icon_util.cc",
111     "icon_util.h",
112     "image/canvas_image_source.cc",
113     "image/canvas_image_source.h",
114     "image/image.cc",
115     "image/image.h",
116     "image/image_family.cc",
117     "image/image_family.h",
118     "image/image_ios.mm",
119     "image/image_mac.mm",
120     "image/image_png_rep.cc",
121     "image/image_png_rep.h",
122     "image/image_skia.cc",
123     "image/image_skia.h",
124     "image/image_skia_operations.cc",
125     "image/image_skia_operations.h",
126     "image/image_skia_rep.cc",
127     "image/image_skia_rep.h",
128     "image/image_skia_source.h",
129     "image/image_skia_util_ios.h",
130     "image/image_skia_util_ios.mm",
131     "image/image_skia_util_mac.h",
132     "image/image_skia_util_mac.mm",
133     "image/image_util.cc",
134     "image/image_util.h",
135     "image/image_util_ios.mm",
136     "interpolated_transform.cc",
137     "interpolated_transform.h",
138     "linux_font_delegate.cc",
139     "linux_font_delegate.h",
140     "mac/coordinate_conversion.h",
141     "mac/coordinate_conversion.mm",
142     "mac/nswindow_frame_controls.h",
143     "mac/nswindow_frame_controls.mm",
144     "mac/scoped_ns_disable_screen_updates.h",
145     "native_widget_types.h",
146     "nine_image_painter.cc",
147     "nine_image_painter.h",
148     "paint_throbber.cc",
149     "paint_throbber.h",
150     "path.cc",
151     "path.h",
152     "path_win.cc",
153     "path_win.h",
154     "path_x11.cc",
155     "path_x11.h",
156     "platform_font.h",
157     "platform_font_android.cc",
158     "platform_font_ios.h",
159     "platform_font_ios.mm",
160     "platform_font_linux.cc",
161     "platform_font_linux.h",
162     "platform_font_mac.h",
163     "platform_font_mac.mm",
164     "platform_font_win.cc",
165     "platform_font_win.h",
166     "range/range.cc",
167     "range/range.h",
168     "range/range_f.cc",
169     "range/range_f.h",
170     "range/range_mac.mm",
171     "range/range_win.cc",
172     "scoped_canvas.h",
173     "scoped_cg_context_save_gstate_mac.h",
174     "scoped_ns_graphics_context_save_gstate_mac.h",
175     "scoped_ns_graphics_context_save_gstate_mac.mm",
176     "scoped_ui_graphics_push_context_ios.h",
177     "scoped_ui_graphics_push_context_ios.mm",
178     "screen.cc",
179     "screen.h",
180     "screen_android.cc",
181     "screen_aura.cc",
182     "screen_ios.mm",
183     "screen_mac.mm",
184     "screen_win.cc",
185     "screen_win.h",
186     "scrollbar_size.cc",
187     "scrollbar_size.h",
188     "selection_model.cc",
189     "selection_model.h",
190     "sequential_id_generator.cc",
191     "sequential_id_generator.h",
192     "shadow_value.cc",
193     "shadow_value.h",
194     "skbitmap_operations.cc",
195     "skbitmap_operations.h",
196     "skia_util.cc",
197     "skia_util.h",
198     "switches.cc",
199     "switches.h",
200     "sys_color_change_listener.cc",
201     "sys_color_change_listener.h",
202     "text_constants.h",
203     "text_elider.cc",
204     "text_elider.h",
205     "text_utils.cc",
206     "text_utils.h",
207     "text_utils_android.cc",
208     "text_utils_ios.mm",
209     "transform.cc",
210     "transform.h",
211     "transform_util.cc",
212     "transform_util.h",
213     "ui_gfx_exports.cc",
214     "utf16_indexing.cc",
215     "utf16_indexing.h",
216     "vector_icons_public.h",
217     "vsync_provider.h",
218     "win/direct_write.cc",
219     "win/direct_write.h",
220     "win/dpi.cc",
221     "win/dpi.h",
222     "win/hwnd_util.cc",
223     "win/hwnd_util.h",
224     "win/scoped_set_map_mode.h",
225     "win/singleton_hwnd.cc",
226     "win/singleton_hwnd.h",
227     "win/singleton_hwnd_observer.cc",
228     "win/singleton_hwnd_observer.h",
229     "win/window_impl.cc",
230     "win/window_impl.h",
231   ]
233   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
234   configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
236   defines = [ "GFX_IMPLEMENTATION" ]
238   deps = [
239     ":gfx_export",
240     "//base",
241     "//base:i18n",
242     "//base:base_static",
243     "//base/third_party/dynamic_annotations",
244     "//skia",
245     "//third_party/harfbuzz-ng",
246     "//third_party/libpng",
247     "//third_party/zlib",
248     "//ui/gfx/geometry",
249   ]
250   public_deps = [
251     "//base",
252     "//skia",
253     "//third_party/icu",
254   ]
256   # Text rendering conditions (complicated so separated out).
257   if (use_aura || is_mac) {
258     # Mac doesn't use RenderTextHarfBuzz by default yet.
259     sources += [
260       "harfbuzz_font_skia.cc",
261       "harfbuzz_font_skia.h",
262       "render_text.cc",
263       "render_text.h",
264       "render_text_harfbuzz.cc",
265       "render_text_harfbuzz.h",
266       "render_text_mac.cc",
267       "render_text_mac.h",
268       "text_utils_skia.cc",
269     ]
270   } else {
271     # We don't support RenderText on these platforms.
272   }
274   if (is_android && use_aura) {
275     sources -= [
276       "platform_font_android.cc",
277       "text_utils_android.cc",
278     ]
279     set_sources_assignment_filter([])
280     sources += [ "platform_font_linux.cc" ]
281     set_sources_assignment_filter(sources_assignment_filter)
282   }
284   # iOS.
285   if (is_ios) {
286     sources -= [
287       "codec/jpeg_codec.cc",
288       "codec/jpeg_codec.h",
289     ]
290   } else {
291     deps += [ "//third_party:jpeg" ]
292   }
294   # Android.
295   if (is_android) {
296     if (use_aura) {
297       sources -= [
298         "canvas_notimplemented.cc",
299         "screen_android.cc",
300       ]
301       sources += [ "font_fallback_android.cc" ]
302     } else {
303       sources -= [
304         "animation/throb_animation.cc",
305         "canvas_skia.cc",
306         "path.cc",
307         "selection_model.cc",
308       ]
309     }
311     if (!is_debug) {
312       configs -= [ "//build/config/compiler:optimize" ]
313       configs += [ "//build/config/compiler:optimize_max" ]
314     }
316     deps += [
317       ":gfx_jni_headers",
318       "//base:base_java",
319     ]
320     libs = [
321       "android",
322       "jnigraphics",
323     ]
324   } else {
325     sources -= [ "canvas_notimplemented.cc" ]
326   }
328   # Desktop only.
329   if (use_aura || (!is_ios && !is_android)) {
330     sources += [
331       "paint_vector_icon.cc",
332       "paint_vector_icon.h",
333       "vector_icons_public.h",
334       vector_icons_cc_file,
335       vector_icons_h_file,
336     ]
337     deps += [ ":aggregate_vector_icons" ]
338   }
340   # Windows.
341   if (is_win) {
342     cflags = [ "/wd4324" ]  # Structure was padded due to __declspec(align()), which is
343                             # uninteresting.
344   } else {
345     sources -= [
346       "gdi_util.cc",
347       "gdi_util.h",
348       "icon_util.cc",
349       "icon_util.h",
350       "sys_color_change_listener.cc",
351       "sys_color_change_listener.h",
352     ]
353   }
355   # Linux.
356   if (is_linux) {
357     configs += [ "//build/config/linux:fontconfig" ]
358   }
360   # Chrome OS
361   if (is_chromeos) {
362     # Robust JPEG decoding for the login screen.
363     sources += [
364       "chromeos/codec/jpeg_codec_robust_slow.cc",
365       "chromeos/codec/jpeg_codec_robust_slow.h",
366     ]
367     deps += [ "//third_party/libjpeg" ]
368   }
370   if (!use_aura) {
371     sources -= [ "screen_aura.cc" ]
372     if (!toolkit_views) {
373       sources -= [
374         "nine_image_painter.cc",
375         "nine_image_painter.h",
376       ]
377     }
378   }
380   if (use_x11) {
381     deps += [ "//ui/gfx/x" ]
382     configs += [ "//build/config/linux:x11" ]
383   } else {
384     sources -= [ "path_x11.cc" ]
385   }
387   if (use_cairo) {
388     configs += [ "//build/config/linux:pangocairo" ]
389   }
392 # GYP version: ui/gfx/gfx.gyp:aggregate_vector_icons
393 action("aggregate_vector_icons") {
394   script = "vector_icons/aggregate_vector_icons.py"
395   sources = [
396     "vector_icons",
397   ]
398   outputs = [
399     vector_icons_cc_file,
400     vector_icons_h_file,
401   ]
403   args = [
404     "--working_directory=" + rebase_path("vector_icons/"),
405     "--output_cc=" + rebase_path(vector_icons_cc_file, root_build_dir),
406     "--output_h=" + rebase_path(vector_icons_h_file, root_build_dir),
407   ]
410 # Looking for gfx_geometry? It's //ui/gfx/geometry:geometry
412 source_set("test_support") {
413   testonly = true
414   sources = [
415     "image/image_unittest_util.cc",
416     "image/image_unittest_util.h",
417     "image/image_unittest_util_ios.mm",
418     "image/image_unittest_util_mac.mm",
419     "test/fontconfig_util_linux.cc",
420     "test/fontconfig_util_linux.h",
421     "test/gfx_util.cc",
422     "test/gfx_util.h",
423     "test/test_screen.cc",
424     "test/test_screen.h",
425     "test/ui_cocoa_test_helper.h",
426     "test/ui_cocoa_test_helper.mm",
427   ]
429   public_deps = [
430     ":gfx",
431   ]
433   deps = [
434     "//base",
435     "//base/test:test_support",
436     "//skia",
437     "//testing/gtest",
438     "//ui/gfx/geometry",
439   ]
441   if (is_ios) {
442     # The cocoa files don't apply to iOS.
443     sources -= [
444       "test/ui_cocoa_test_helper.h",
445       "test/ui_cocoa_test_helper.mm",
446     ]
447   }
448   if (is_linux) {
449     configs += [ "//build/config/linux:fontconfig" ]
450   }
453 test("gfx_unittests") {
454   sources = [
455     "font_render_params_linux_unittest.cc",
456     "font_unittest.cc",
457     "image/image_family_unittest.cc",
458     "image/image_ios_unittest.mm",
459     "image/image_skia_unittest.cc",
460     "image/image_unittest.cc",
461     "platform_font_linux_unittest.cc",
462     "screen_unittest.cc",
463     "test/run_all_unittests.cc",
464     "text_elider_unittest.cc",
465     "text_utils_unittest.cc",
466   ]
468   if (!is_ios) {
469     sources += [
470       "animation/animation_container_unittest.cc",
471       "animation/animation_unittest.cc",
472       "animation/multi_animation_unittest.cc",
473       "animation/slide_animation_unittest.cc",
474       "animation/tween_unittest.cc",
475       "blit_unittest.cc",
476       "break_list_unittest.cc",
477       "canvas_unittest.cc",
478       "canvas_unittest_mac.mm",
479       "codec/jpeg_codec_unittest.cc",
480       "codec/png_codec_unittest.cc",
481       "color_analysis_unittest.cc",
482       "color_profile_mac_unittest.mm",
483       "color_utils_unittest.cc",
484       "display_change_notifier_unittest.cc",
485       "display_unittest.cc",
486       "font_fallback_mac_unittest.cc",
487       "font_list_unittest.cc",
488       "geometry/box_unittest.cc",
489       "geometry/cubic_bezier_unittest.cc",
490       "geometry/insets_unittest.cc",
491       "geometry/matrix3_unittest.cc",
492       "geometry/point3_unittest.cc",
493       "geometry/point_unittest.cc",
494       "geometry/quad_unittest.cc",
495       "geometry/rect_unittest.cc",
496       "geometry/safe_integer_conversions_unittest.cc",
497       "geometry/scroll_offset_unittest.cc",
498       "geometry/size_unittest.cc",
499       "geometry/vector2d_unittest.cc",
500       "geometry/vector3d_unittest.cc",
501       "image/image_mac_unittest.mm",
502       "image/image_util_unittest.cc",
503       "mac/coordinate_conversion_unittest.mm",
504       "nine_image_painter_unittest.cc",
505       "platform_font_mac_unittest.mm",
506       "range/range_mac_unittest.mm",
507       "range/range_unittest.cc",
508       "range/range_win_unittest.cc",
509       "render_text_unittest.cc",
510       "sequential_id_generator_unittest.cc",
511       "shadow_value_unittest.cc",
512       "skbitmap_operations_unittest.cc",
513       "skrect_conversion_unittest.cc",
514       "transform_util_unittest.cc",
515       "utf16_indexing_unittest.cc",
516     ]
517   }
519   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
520   configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
522   deps = [
523     ":gfx",
524     ":test_support",
525     "//base",
526     "//base/test:test_support",
527     "//skia",
528     "//third_party/icu:icuuc",
529     "//third_party/libpng",
530     "//third_party/zlib",
531     "//testing/gtest",
532     "//ui/base",
533     "//ui/gfx/geometry",
534     "//ui/resources:ui_test_pak",
535   ]
537   if (!is_mac && !is_ios) {
538     sources += [
539       "interpolated_transform_unittest.cc",
540       "transform_unittest.cc",
541     ]
542   }
544   if (is_android) {
545     sources -= [
546       # Do not run display_change_notifier_unittest.cc on Android because it
547       # does not compile display_observer.cc
548       "display_change_notifier_unittest.cc",
549     ]
550   }
552   if (is_android || is_ios) {
553     sources -= [ "render_text_unittest.cc" ]
554   }
556   if (use_aura) {
557     sources -= [ "screen_unittest.cc" ]
558   } else {
559     sources -= [ "nine_image_painter_unittest.cc" ]
560   }
562   if (is_chromeos) {
563     sources += [ "chromeos/codec/jpeg_codec_robust_slow_unittest.cc" ]
564   }
566   if (is_win) {
567     sources += [
568       "color_profile_win_unittest.cc",
569       "font_fallback_win_unittest.cc",
570       "icon_util_unittest.cc",
571       "icon_util_unittests.rc",
572       "path_win_unittest.cc",
573       "platform_font_win_unittest.cc",
574     ]
576     ldflags = [
577       "/DELAYLOAD:d2d1.dll",
578       "/DELAYLOAD:d3d10_1.dll",
579     ]
581     libs = [
582       "d2d1.lib",
583       "d3d10_1.lib",
584       "imm32.lib",
585       "oleacc.lib",
586     ]
587   }
590 if (is_android) {
591   generate_jni("gfx_jni_headers") {
592     sources = [
593       "../android/java/src/org/chromium/ui/gfx/BitmapHelper.java",
594       "../android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java",
595       "../android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java",
596     ]
597     jni_package = "gfx"
598   }