|  | # Copyright 2013 The Flutter Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | import("//build/fuchsia/sdk.gni") | 
|  | import("//flutter/common/config.gni") | 
|  | import("//flutter/impeller/tools/impeller.gni") | 
|  | import("//flutter/shell/config.gni") | 
|  | import("//flutter/testing/testing.gni") | 
|  |  | 
|  | source_set("ui") { | 
|  | cflags = [ | 
|  | # Dart gives us doubles. Skia and Impeller work in floats. | 
|  | # If Dart gives us a double > FLT_MAX or < -FLT_MAX, implicit conversion | 
|  | # will convert it to either inf/-inf or FLT_MAX/-FLT_MAX (undefined | 
|  | # behavior). This can result in surprising and difficult to debug behavior | 
|  | # for Flutter application developers, so it should be explicitly handled | 
|  | # via SafeNarrow. | 
|  | "-Wimplicit-float-conversion", | 
|  | ] | 
|  |  | 
|  | if (is_win) { | 
|  | # This causes build failures in third_party dependencies on Windows. | 
|  | cflags += [ "-Wno-implicit-int-float-conversion" ] | 
|  | } | 
|  |  | 
|  | sources = [ | 
|  | "compositing/scene.cc", | 
|  | "compositing/scene.h", | 
|  | "compositing/scene_builder.cc", | 
|  | "compositing/scene_builder.h", | 
|  | "dart_runtime_hooks.cc", | 
|  | "dart_runtime_hooks.h", | 
|  | "dart_ui.cc", | 
|  | "dart_ui.h", | 
|  | "dart_wrapper.h", | 
|  | "floating_point.h", | 
|  | "io_manager.cc", | 
|  | "io_manager.h", | 
|  | "isolate_name_server/isolate_name_server.cc", | 
|  | "isolate_name_server/isolate_name_server.h", | 
|  | "isolate_name_server/isolate_name_server_natives.cc", | 
|  | "isolate_name_server/isolate_name_server_natives.h", | 
|  | "painting/canvas.cc", | 
|  | "painting/canvas.h", | 
|  | "painting/codec.cc", | 
|  | "painting/codec.h", | 
|  | "painting/color_filter.cc", | 
|  | "painting/color_filter.h", | 
|  | "painting/display_list_deferred_image_gpu_skia.cc", | 
|  | "painting/display_list_deferred_image_gpu_skia.h", | 
|  | "painting/display_list_image_gpu.cc", | 
|  | "painting/display_list_image_gpu.h", | 
|  | "painting/engine_layer.cc", | 
|  | "painting/engine_layer.h", | 
|  | "painting/fragment_program.cc", | 
|  | "painting/fragment_program.h", | 
|  | "painting/fragment_shader.cc", | 
|  | "painting/fragment_shader.h", | 
|  | "painting/gradient.cc", | 
|  | "painting/gradient.h", | 
|  | "painting/image.cc", | 
|  | "painting/image.h", | 
|  | "painting/image_decoder.cc", | 
|  | "painting/image_decoder.h", | 
|  | "painting/image_decoder_skia.cc", | 
|  | "painting/image_decoder_skia.h", | 
|  | "painting/image_descriptor.cc", | 
|  | "painting/image_descriptor.h", | 
|  | "painting/image_encoding.cc", | 
|  | "painting/image_encoding.h", | 
|  | "painting/image_encoding_impl.h", | 
|  | "painting/image_encoding_skia.cc", | 
|  | "painting/image_encoding_skia.h", | 
|  | "painting/image_filter.cc", | 
|  | "painting/image_filter.h", | 
|  | "painting/image_generator.cc", | 
|  | "painting/image_generator.h", | 
|  | "painting/image_generator_apng.cc", | 
|  | "painting/image_generator_apng.h", | 
|  | "painting/image_generator_registry.cc", | 
|  | "painting/image_generator_registry.h", | 
|  | "painting/image_shader.cc", | 
|  | "painting/image_shader.h", | 
|  | "painting/immutable_buffer.cc", | 
|  | "painting/immutable_buffer.h", | 
|  | "painting/matrix.cc", | 
|  | "painting/matrix.h", | 
|  | "painting/multi_frame_codec.cc", | 
|  | "painting/multi_frame_codec.h", | 
|  | "painting/paint.cc", | 
|  | "painting/paint.h", | 
|  | "painting/path.cc", | 
|  | "painting/path.h", | 
|  | "painting/path_measure.cc", | 
|  | "painting/path_measure.h", | 
|  | "painting/picture.cc", | 
|  | "painting/picture.h", | 
|  | "painting/picture_recorder.cc", | 
|  | "painting/picture_recorder.h", | 
|  | "painting/rrect.cc", | 
|  | "painting/rrect.h", | 
|  | "painting/shader.cc", | 
|  | "painting/shader.h", | 
|  | "painting/single_frame_codec.cc", | 
|  | "painting/single_frame_codec.h", | 
|  | "painting/vertices.cc", | 
|  | "painting/vertices.h", | 
|  | "plugins/callback_cache.cc", | 
|  | "plugins/callback_cache.h", | 
|  | "semantics/custom_accessibility_action.cc", | 
|  | "semantics/custom_accessibility_action.h", | 
|  | "semantics/semantics_node.cc", | 
|  | "semantics/semantics_node.h", | 
|  | "semantics/semantics_update.cc", | 
|  | "semantics/semantics_update.h", | 
|  | "semantics/semantics_update_builder.cc", | 
|  | "semantics/semantics_update_builder.h", | 
|  | "semantics/string_attribute.cc", | 
|  | "semantics/string_attribute.h", | 
|  | "snapshot_delegate.h", | 
|  | "text/asset_manager_font_provider.cc", | 
|  | "text/asset_manager_font_provider.h", | 
|  | "text/font_collection.cc", | 
|  | "text/font_collection.h", | 
|  | "text/line_metrics.h", | 
|  | "text/paragraph.cc", | 
|  | "text/paragraph.h", | 
|  | "text/paragraph_builder.cc", | 
|  | "text/paragraph_builder.h", | 
|  | "ui_dart_state.cc", | 
|  | "ui_dart_state.h", | 
|  | "volatile_path_tracker.cc", | 
|  | "volatile_path_tracker.h", | 
|  | "window/key_data.cc", | 
|  | "window/key_data.h", | 
|  | "window/key_data_packet.cc", | 
|  | "window/key_data_packet.h", | 
|  | "window/platform_configuration.cc", | 
|  | "window/platform_configuration.h", | 
|  | "window/platform_message.cc", | 
|  | "window/platform_message.h", | 
|  | "window/platform_message_response.cc", | 
|  | "window/platform_message_response.h", | 
|  | "window/platform_message_response_dart.cc", | 
|  | "window/platform_message_response_dart.h", | 
|  | "window/platform_message_response_dart_port.cc", | 
|  | "window/platform_message_response_dart_port.h", | 
|  | "window/pointer_data.cc", | 
|  | "window/pointer_data.h", | 
|  | "window/pointer_data_packet.cc", | 
|  | "window/pointer_data_packet.h", | 
|  | "window/pointer_data_packet_converter.cc", | 
|  | "window/pointer_data_packet_converter.h", | 
|  | "window/viewport_metrics.cc", | 
|  | "window/viewport_metrics.h", | 
|  | ] | 
|  |  | 
|  | public_configs = [ "//flutter:config" ] | 
|  |  | 
|  | public_deps = [ | 
|  | "//flutter/flow", | 
|  | "//flutter/shell/common:display", | 
|  | "//flutter/shell/common:platform_message_handler", | 
|  | "//flutter/skia/modules/skparagraph", | 
|  | "//flutter/third_party/txt", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | "//flutter/assets", | 
|  | "//flutter/common", | 
|  | "//flutter/common/graphics", | 
|  | "//flutter/display_list", | 
|  | "//flutter/fml", | 
|  | "//flutter/impeller/runtime_stage", | 
|  | "//flutter/runtime:dart_plugin_registrant", | 
|  | "//flutter/runtime:test_font", | 
|  | "//flutter/skia", | 
|  | "//flutter/third_party/rapidjson", | 
|  | "//flutter/third_party/tonic", | 
|  | "//third_party/dart/runtime/bin:dart_io_api", | 
|  | "//third_party/zlib:zlib", | 
|  | ] | 
|  |  | 
|  | if (impeller_supports_rendering) { | 
|  | sources += [ | 
|  | "painting/display_list_deferred_image_gpu_impeller.cc", | 
|  | "painting/display_list_deferred_image_gpu_impeller.h", | 
|  | "painting/image_decoder_impeller.cc", | 
|  | "painting/image_decoder_impeller.h", | 
|  | "painting/image_encoding_impeller.cc", | 
|  | "painting/image_encoding_impeller.h", | 
|  | ] | 
|  |  | 
|  | deps += [ | 
|  | "//flutter/impeller", | 
|  | "//flutter/impeller/display_list:skia_conversions", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (!defined(defines)) { | 
|  | defines = [] | 
|  | } | 
|  | if (is_win) { | 
|  | # Required for M_PI and others. | 
|  | defines += [ "_USE_MATH_DEFINES" ] | 
|  | } | 
|  | if (impeller_enable_3d) { | 
|  | defines += [ "IMPELLER_ENABLE_3D" ] | 
|  | sources += [ | 
|  | "painting/scene/scene_node.cc", | 
|  | "painting/scene/scene_node.h", | 
|  | "painting/scene/scene_shader.cc", | 
|  | "painting/scene/scene_shader.h", | 
|  | ] | 
|  |  | 
|  | deps += [ "//flutter/impeller/scene" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | if (enable_unittests) { | 
|  | test_fixtures("ui_unittests_fixtures") { | 
|  | deps = [ "fixtures/shaders" ] | 
|  | dart_main = "fixtures/ui_test.dart" | 
|  | fixtures = [ | 
|  | "fixtures/DashInNooglerHat.jpg", | 
|  | "fixtures/DashInNooglerHat%20WithSpace.jpg", | 
|  | "fixtures/DisplayP3Logo.jpg", | 
|  | "fixtures/DisplayP3Logo.png", | 
|  | "fixtures/Horizontal.jpg", | 
|  | "fixtures/Horizontal.png", | 
|  | "fixtures/heart_end.png", | 
|  | "fixtures/hello_loop_2.gif", | 
|  | "fixtures/hello_loop_2.webp", | 
|  | "fixtures/FontManifest.json", | 
|  | "fixtures/WideGamutIndexed.png", | 
|  | "//flutter/third_party/txt/third_party/fonts/Roboto-Medium.ttf", | 
|  | ] | 
|  | } | 
|  |  | 
|  | executable("ui_benchmarks") { | 
|  | testonly = true | 
|  |  | 
|  | public_configs = [ "//flutter:export_dynamic_symbols" ] | 
|  |  | 
|  | sources = [ "ui_benchmarks.cc" ] | 
|  |  | 
|  | deps = [ | 
|  | ":ui", | 
|  | ":ui_unittests_fixtures", | 
|  | "//flutter/benchmarking", | 
|  | "//flutter/lib/snapshot", | 
|  | "//flutter/shell/common", | 
|  | "//flutter/testing:fixture_test", | 
|  | ] | 
|  | } | 
|  |  | 
|  | executable("ui_unittests") { | 
|  | testonly = true | 
|  |  | 
|  | public_configs = [ "//flutter:export_dynamic_symbols" ] | 
|  |  | 
|  | sources = [ | 
|  | "compositing/scene_builder_unittests.cc", | 
|  | "hooks_unittests.cc", | 
|  | "painting/image_decoder_no_gl_unittests.cc", | 
|  | "painting/image_decoder_no_gl_unittests.h", | 
|  | "painting/image_dispose_unittests.cc", | 
|  | "painting/image_encoding_unittests.cc", | 
|  | "painting/image_generator_registry_unittests.cc", | 
|  | "painting/paint_unittests.cc", | 
|  | "painting/path_unittests.cc", | 
|  | "painting/single_frame_codec_unittests.cc", | 
|  | "semantics/semantics_update_builder_unittests.cc", | 
|  | "window/platform_configuration_unittests.cc", | 
|  | "window/platform_message_response_dart_port_unittests.cc", | 
|  | "window/platform_message_response_dart_unittests.cc", | 
|  | "window/pointer_data_packet_converter_unittests.cc", | 
|  | "window/pointer_data_packet_unittests.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":ui", | 
|  | ":ui_unittests_fixtures", | 
|  | "//flutter/common", | 
|  | "//flutter/impeller", | 
|  | "//flutter/lib/snapshot", | 
|  | "//flutter/shell/common:shell_test_fixture_sources", | 
|  | "//flutter/testing", | 
|  | "//flutter/testing:dart", | 
|  | "//flutter/testing:fixture_test", | 
|  | "//flutter/third_party/tonic", | 
|  | "//third_party/dart/runtime/bin:elf_loader", | 
|  | ] | 
|  |  | 
|  | # TODO(https://github.com/flutter/flutter/issues/63837): This test is hard-coded to use a TestGLSurface so it cannot run on fuchsia. | 
|  | if (shell_enable_gl) { | 
|  | sources += [ "painting/image_decoder_unittests.cc" ] | 
|  |  | 
|  | deps += [ "//flutter/testing:opengl" ] | 
|  | } | 
|  | } | 
|  | } |