# Copyright 2014 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/jumbo.gni") import("//build/config/ozone.gni") import("//build/config/python.gni") import("//build/config/ui.gni") import("//gpu/vulkan/features.gni") import("//testing/test.gni") assert(use_ozone) visibility = [ ":*" ] # The list of platforms that will be built. ozone_platforms = ozone_external_platforms # Extra dependencies to pull into ui/ozone for built platforms. ozone_platform_deps = ozone_external_platform_deps # Extra dependencies to pull into ozone_unittests for built platforms. ozone_platform_test_deps = ozone_external_platform_test_deps # Extra dependencies to pull into ozone_integration_tests ozone_platform_integration_test_deps = ozone_external_platform_integration_test_deps # Extra dependencies to pull into ui_test_support for built platforms. ozone_platform_ui_test_support_deps = ozone_external_platform_ui_test_support_deps # Extra dependencies to pull into interactive_ui_tests for built platforms. ozone_platform_interactive_ui_tests_sources = ozone_external_interactive_ui_tests_deps if (ozone_platform_headless) { ozone_platforms += [ "headless" ] ozone_platform_deps += [ "platform/headless" ] } if (ozone_platform_drm) { ozone_platforms += [ "drm" ] ozone_platform_deps += [ "platform/drm:gbm" ] ozone_platform_test_deps += [ "platform/drm:gbm_unittests" ] ozone_platform_integration_test_deps += [ "platform/drm:drm_integration_tests" ] } if (ozone_platform_cast) { ozone_platforms += [ "cast" ] ozone_platform_deps += [ "platform/cast" ] } if (ozone_platform_wayland) { ozone_platforms += [ "wayland" ] ozone_platform_deps += [ "platform/wayland" ] ozone_platform_test_deps += [ "platform/wayland:wayland_unittests" ] ozone_platform_ui_test_support_deps += [ "platform/wayland:ui_test_support" ] } if (ozone_platform_x11 && !is_qtwebengine) { ozone_platforms += [ "x11" ] ozone_platform_deps += [ "platform/x11" ] ozone_platform_ui_test_support_deps += [ "platform/x11:test_support" ] } if (ozone_platform_flatland) { ozone_platforms += [ "flatland" ] ozone_platform_deps += [ "platform/flatland" ] ozone_platform_test_deps += [ "platform/flatland:flatland_unittests" ] } platform_list_cc_file = "$target_gen_dir/platform_list.cc" platform_list_h_file = "$target_gen_dir/platform_list.h" platform_list_txt_file = "$target_gen_dir/platform_list.txt" constructor_list_cc_file = "$target_gen_dir/constructor_list.cc" test_constructor_list_cc_file = "$target_gen_dir/test_constructor_list.cc" jumbo_component("ozone_base") { sources = [ "public/gl_ozone.h", "public/gpu_platform_support_host.cc", "public/gpu_platform_support_host.h", "public/hardware_capabilities.cc", "public/hardware_capabilities.h", "public/input_controller.h", "public/native_pixmap_gl_binding.cc", "public/native_pixmap_gl_binding.h", "public/overlay_candidates_ozone.cc", "public/overlay_candidates_ozone.h", "public/overlay_manager_ozone.h", "public/overlay_plane.cc", "public/overlay_plane.h", "public/overlay_surface.cc", "public/overlay_surface.h", "public/overlay_surface_candidate.cc", "public/overlay_surface_candidate.h", "public/platform_clipboard.h", "public/platform_gl_egl_utility.cc", "public/platform_gl_egl_utility.h", "public/platform_global_shortcut_listener.cc", "public/platform_global_shortcut_listener.h", "public/platform_keyboard_hook.cc", "public/platform_keyboard_hook.h", "public/platform_menu_utils.cc", "public/platform_menu_utils.h", "public/platform_screen.cc", "public/platform_screen.h", "public/platform_user_input_monitor.cc", "public/platform_user_input_monitor.h", "public/platform_utils.h", "public/platform_window_surface.h", "public/stub_input_controller.cc", "public/stub_input_controller.h", "public/surface_factory_ozone.cc", "public/surface_factory_ozone.h", "public/surface_ozone_canvas.cc", "public/surface_ozone_canvas.h", "public/swap_completion_callback.h", "public/system_input_injector.h", ] defines = [ "IS_OZONE_BASE_IMPL" ] public_deps = [ ":drm_modifiers_filter", ":ozone_switches", "//base", "//gpu/vulkan:buildflags", "//ipc", "//skia", "//ui/base:types", "//ui/base/clipboard:clipboard_types", "//ui/display", "//ui/display/types", "//ui/display/util", "//ui/events", "//ui/events:dom_keycode_converter", "//ui/events/devices:devices", "//ui/gfx", "//ui/gfx/geometry", "//ui/gfx/ipc", "//ui/gfx/ipc/buffer_types", "//ui/gfx/ipc/geometry", "//ui/gfx/ipc/skia", "//ui/gl", "//ui/ozone/public/mojom:gesture_properties_service", ] if (enable_vulkan) { public_deps += [ "//gpu/vulkan" ] } if (is_fuchsia) { public_deps += [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.images:fuchsia.images_hlcpp", ] } if (is_linux) { public_deps += [ "//ui/linux:linux_ui" ] } visibility += [ # Everyone should depend on //ui/ozone instead except a handful of # things that would otherwise create a cycle. "//ui/base/ime/ash/*", "//ui/events/ozone/*", "//ui/ozone/common/*", "//ui/ozone/platform/*", ] # Out of tree platforms can depend on this. visibility += ozone_external_platform_visibility } source_set("platform") { sources = [ "common/stub_client_native_pixmap_factory.cc", "common/stub_client_native_pixmap_factory.h", "platform_constructor_list.h", "platform_object_internal.h", "platform_selection.cc", "platform_selection.h", "public/client_native_pixmap_factory_ozone.cc", "public/ozone_platform.cc", constructor_list_cc_file, platform_list_cc_file, platform_list_h_file, ] public = [ "platform_object.h", "public/client_native_pixmap_factory_ozone.h", "public/ozone_platform.h", ] defines = [ "IS_OZONE_IMPL" ] public_deps = [ ":ozone_base", "//base", "//ipc", "//services/service_manager/public/cpp", "//skia", "//ui/base:data_exchange", "//ui/display/types", "//ui/events", "//ui/events/devices", "//ui/gfx", "//ui/gfx/geometry", "//ui/platform_window", ] deps = [ ":generate_constructor_list", ":generate_ozone_platform_list", ] deps += ozone_platform_deps # Platforms are always linked into //ui/ozone and can include our headers. allow_circular_includes_from = ozone_platform_deps # This is used for platform and clipboard tests. visibility += [ "//ui/base/clipboard:clipboard_test", "//ui/ozone/platform/*", ] # This can be used for out of tree platforms tests. visibility += ozone_external_platform_visibility } source_set("ozone_switches") { sources = [ "public/ozone_switches.cc", "public/ozone_switches.h", ] defines = [ "IS_OZONE_SWITCHES_IMPL" ] deps = [ "//base" ] visibility += [ "//chrome/test:browser_tests_runner", "//media/mojo/services", "//ui/base/clipboard:clipboard_test", "//ui/display:display_unittests", ] } jumbo_component("ozone") { visibility = [] visibility = [ "*" ] public_deps = [ ":platform" ] } source_set("drm_modifiers_filter") { sources = [ "public/drm_modifiers_filter.h" ] deps = [ "//base", "//ui/gfx/ipc/buffer_types", ] visibility += [ "//gpu/vulkan" ] } jumbo_source_set("test_support_internal") { testonly = true sources = [ "test/mock_platform_window_delegate.cc", "test/mock_platform_window_delegate.h", ] configs += [ "//build/config:precompiled_headers" ] deps = [ "//mojo/public/cpp/bindings", "//testing/gmock", "//testing/gtest", "//ui/base", "//ui/gfx:test_support", "//ui/gfx/geometry", "//ui/platform_window:platform_window", ] public_deps = [ "//base/test:test_support" ] } jumbo_static_library("ui_test_support") { visibility = [] visibility = [ "//ui/views:test_support" ] testonly = true sources = [ "common/test/stub_ozone_ui_controls_test_helper.cc", "common/test/stub_ozone_ui_controls_test_helper.h", "public/ozone_ui_controls_test_helper.cc", test_constructor_list_cc_file, ] public = [ "public/ozone_ui_controls_test_helper.h" ] deps = [ ":generate_test_support_constructor_list", ":ozone", "//ui/base:test_support", "//ui/events:events_base", ] deps += ozone_platform_ui_test_support_deps allow_circular_includes_from = ozone_platform_ui_test_support_deps } source_set("ozone_interactive_ui_tests") { visibility = [] visibility = [ "//chrome/test:interactive_ui_tests${exec_target_suffix}" ] testonly = true deps = ozone_platform_interactive_ui_tests_sources } jumbo_static_library("test_support") { visibility = [] visibility = [ ":*", "platform/flatland:flatland_unittests", "platform/wayland:test_support", "platform/wayland:wayland_unittests", "platform/x11:x11_unittests", ] testonly = true public_deps = [ ":test_support_internal" ] } action("generate_ozone_platform_list") { script = "generate_ozone_platform_list.py" outputs = [ platform_list_cc_file, platform_list_h_file, platform_list_txt_file, ] args = [ "--output_cc=" + rebase_path(platform_list_cc_file, root_build_dir), "--output_h=" + rebase_path(platform_list_h_file, root_build_dir), "--output_txt=" + rebase_path(platform_list_txt_file, root_build_dir), "--default=$ozone_platform", ] + ozone_platforms visibility += [ "//media:*" ] } source_set("ozone_gpu_test_support") { visibility = [] visibility = [ "//components/viz/demo:viz_demo" ] sources = [ "public/ozone_gpu_test_helper.cc" ] public = [ "public/ozone_gpu_test_helper.h" ] public_deps = [ ":platform", "//base", ] } action("generate_constructor_list") { script = "generate_constructor_list.py" inputs = [ platform_list_txt_file ] outputs = [ constructor_list_cc_file ] args = [ "--platform_list=" + rebase_path(platform_list_txt_file, root_build_dir), "--output_cc=" + rebase_path(constructor_list_cc_file, root_build_dir), "--namespace=ui", "--typename=OzonePlatform", "--typename=ClientNativePixmapFactory", "--using=gfx::ClientNativePixmapFactory", "--include=\"ui/gfx/client_native_pixmap_factory.h\"", "--include=\"ui/ozone/public/ozone_platform.h\"", ] deps = [ ":generate_ozone_platform_list" ] } action("generate_test_support_constructor_list") { script = "generate_constructor_list.py" inputs = [ platform_list_txt_file ] outputs = [ test_constructor_list_cc_file ] args = [ "--platform_list=" + rebase_path(platform_list_txt_file, root_build_dir), "--output_cc=" + rebase_path(test_constructor_list_cc_file, root_build_dir), "--namespace=ui", "--typename=OzoneUIControlsTestHelper", "--include=\"ui/ozone/public/ozone_ui_controls_test_helper.h\"", "--include=\"ui/ozone/public/ozone_platform.h\"", ] deps = [ ":generate_ozone_platform_list" ] } test("ozone_unittests") { deps = [ ":test_support", "//mojo/core/test:run_all_unittests", "//ui/ozone/common:unittests", ] # Add tests of platform internals. deps += ozone_platform_test_deps # Platform tests link ozone statically. Make sure we're not getting a # 2nd copy of any code via the component. assert_no_deps = [ "//ui/ozone" ] data_deps = [ "//testing/buildbot/filters:ozone_unittests_filters" ] if (is_fuchsia) { additional_manifest_fragments = [ "//build/config/fuchsia/test/test_ui_stack.shard.test-cml" ] } } # X11 backend has its own test suite only built when we are using the x11 # backend. if (ozone_platform_x11) { test("ozone_x11_unittests") { use_xvfb = true deps = [ ":test_support", "//mojo/core/test:run_all_unittests", ] deps += [ "platform/x11:x11_unittests" ] # Platform tests link ozone statically. Make sure we're not getting a # 2nd copy of any code via the component. assert_no_deps = [ "//ui/ozone" ] } } test("ozone_integration_tests") { testonly = true visibility += [ "*" ] sources = [ "test/ozone_integration_tests_main.cc" ] deps = [ "//base/test:test_support", "//mojo/core/embedder", ] deps += ozone_platform_integration_test_deps } group("unittests") { testonly = true visibility += [ "*" ] deps = [ ":ozone_unittests", "//ui/ozone/gl:ozone_gl_unittests", ] if (ozone_platform_x11) { deps += [ "//ui/ozone:ozone_x11_unittests" ] } }