| # Copyright 2019 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| assert(is_fuchsia) |
| |
| import("//build/config/fuchsia/generate_runner_scripts.gni") |
| import("//build/config/fuchsia/symbol_archive.gni") |
| import("//build/config/locales.gni") |
| import("//mojo/public/tools/bindings/mojom.gni") |
| import("//testing/test.gni") |
| import("//tools/grit/repack.gni") |
| |
| config("web_engine_implementation") { |
| defines = [ "WEB_ENGINE_IMPLEMENTATION" ] |
| } |
| |
| mojom("mojom") { |
| sources = [ |
| "cast_streaming_session.mojom", |
| "url_request_rewrite.mojom", |
| ] |
| public_deps = [ |
| "//media/mojo/mojom", |
| "//mojo/public/mojom/base", |
| "//services/network/public/mojom", |
| ] |
| visibility = [ ":*" ] |
| } |
| |
| repack("web_engine_pak") { |
| sources = [ |
| "$root_gen_dir/components/components_resources.pak", |
| "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", |
| "$root_gen_dir/content/browser/tracing/tracing_resources.pak", |
| "$root_gen_dir/content/content_resources.pak", |
| "$root_gen_dir/content/dev_ui_content_resources.pak", |
| "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", |
| "$root_gen_dir/net/net_resources.pak", |
| "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak", |
| "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak", |
| "$root_gen_dir/ui/resources/ui_resources_100_percent.pak", |
| ] |
| |
| deps = [ |
| "//components/resources:components_resources", |
| "//content:content_resources", |
| "//content:dev_ui_content_resources", |
| "//content/app/resources", |
| "//content/browser/tracing:resources", |
| "//gpu/command_buffer/service", |
| "//mojo/public/js:resources", |
| "//net:net_resources", |
| "//third_party/blink/public:resources", |
| "//third_party/blink/public:scaled_resources_100_percent", |
| "//ui/resources", |
| ] |
| |
| # TODO(crbug.com/1092804): Move this into ${target_gen_dir} and have a |
| # GN SDK fuchsia_resource() rule map it into place in the web_engine package. |
| output = "$root_gen_dir/common_resources.pak" |
| visibility = [ ":*" ] |
| } |
| |
| foreach(locale, locales_with_pseudolocales) { |
| repack("web_engine_locale_${locale}_pak") { |
| # WebEngine requires the following locale-specific resources: |
| # 1. Locale settings (e.g. default encoding, accept-languages per locale). |
| # 2. Blink strings for UI elements, e.g. drop-down lists. |
| # 3. //ui strings used to configure e.g. preferred font family. |
| |
| sources = [ |
| "$root_gen_dir/components/strings/components_locale_settings_${locale}.pak", |
| "$root_gen_dir/third_party/blink/public/strings/blink_strings_${locale}.pak", |
| "$root_gen_dir/ui/strings/app_locale_settings_${locale}.pak", |
| ] |
| |
| deps = [ |
| "//components/strings:components_locale_settings", |
| "//third_party/blink/public/strings", |
| "//ui/strings:app_locale_settings", |
| ] |
| |
| output = "$root_gen_dir/locales/${locale}.pak" |
| visibility = [ ":*" ] |
| } |
| } |
| |
| component("web_engine_core") { |
| deps = [ |
| ":mojom", |
| ":switches", |
| "//base", |
| "//base:base_static", |
| "//base/util/memory_pressure", |
| "//components/cdm/renderer", |
| "//components/keyed_service/content", |
| "//components/media_control/browser", |
| "//components/media_control/renderer", |
| "//components/on_load_script_injector/browser", |
| "//components/on_load_script_injector/renderer", |
| "//components/policy/content:safe_sites_navigation_throttle", |
| "//components/site_isolation", |
| "//components/strings:components_locale_settings", |
| "//components/version_info", |
| "//content/public/app", |
| "//content/public/browser", |
| "//content/public/child", |
| "//content/public/common", |
| "//content/public/renderer", |
| "//fuchsia/base", |
| "//fuchsia/base:legacymetrics", |
| "//fuchsia/base:message_port", |
| "//fuchsia/base:modular", |
| "//fuchsia/cast_streaming", |
| "//google_apis", |
| "//gpu/command_buffer/service", |
| "//media", |
| "//media/fuchsia/cdm/service", |
| "//media/fuchsia/mojom", |
| "//media/mojo/common", |
| "//media/mojo/services", |
| "//mojo/public/cpp/bindings", |
| "//sandbox/policy", |
| "//services/media_session/public/mojom", |
| "//services/network/public/cpp", |
| "//services/network/public/mojom", |
| "//skia/public/mojom", |
| "//third_party/blink/public/common", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.accessibility.semantics", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.feedback", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.math", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.sessions2", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.settings", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.gfx", |
| "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp", |
| "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp", |
| "//third_party/widevine/cdm:headers", |
| "//ui/accessibility", |
| "//ui/aura", |
| "//ui/base", |
| "//ui/base/ime", |
| "//ui/display", |
| "//ui/gfx", |
| "//ui/ozone", |
| "//ui/platform_window", |
| "//ui/wm", |
| "//ui/wm/public", |
| ] |
| |
| # Technically the PAK files are only data dependencies, but specifying them |
| # as |data_deps| causes metadata (.info) files to also be pulled-in to the |
| # package. |
| deps += [ ":web_engine_pak" ] |
| data = [ "$root_gen_dir/common_resources.pak" ] |
| foreach(locale, locales_with_pseudolocales) { |
| deps += [ ":web_engine_locale_${locale}_pak" ] |
| data += [ "$root_gen_dir/locales/${locale}.pak" ] |
| } |
| |
| public_deps = [ |
| "//content/public/browser", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", |
| ] |
| |
| configs += [ ":web_engine_implementation" ] |
| |
| sources = [ |
| "browser/accessibility_bridge.cc", |
| "browser/accessibility_bridge.h", |
| "browser/ax_tree_converter.cc", |
| "browser/ax_tree_converter.h", |
| "browser/cast_streaming_session_client.cc", |
| "browser/cast_streaming_session_client.h", |
| "browser/content_directory_loader_factory.cc", |
| "browser/content_directory_loader_factory.h", |
| "browser/context_impl.cc", |
| "browser/context_impl.h", |
| "browser/cookie_manager_impl.cc", |
| "browser/cookie_manager_impl.h", |
| "browser/event_filter.cc", |
| "browser/event_filter.h", |
| "browser/frame_impl.cc", |
| "browser/frame_impl.h", |
| "browser/frame_layout_manager.cc", |
| "browser/frame_layout_manager.h", |
| "browser/frame_permission_controller.cc", |
| "browser/frame_permission_controller.h", |
| "browser/frame_window_tree_host.cc", |
| "browser/frame_window_tree_host.h", |
| "browser/media_player_impl.cc", |
| "browser/media_player_impl.h", |
| "browser/media_resource_provider_service.cc", |
| "browser/media_resource_provider_service.h", |
| "browser/navigation_controller_impl.cc", |
| "browser/navigation_controller_impl.h", |
| "browser/navigation_policy_handler.cc", |
| "browser/navigation_policy_handler.h", |
| "browser/navigation_policy_throttle.cc", |
| "browser/navigation_policy_throttle.h", |
| "browser/theme_manager.cc", |
| "browser/theme_manager.h", |
| "browser/url_request_rewrite_rules_manager.cc", |
| "browser/url_request_rewrite_rules_manager.h", |
| "browser/web_engine_browser_context.cc", |
| "browser/web_engine_browser_context.h", |
| "browser/web_engine_browser_interface_binders.cc", |
| "browser/web_engine_browser_interface_binders.h", |
| "browser/web_engine_browser_main.cc", |
| "browser/web_engine_browser_main.h", |
| "browser/web_engine_browser_main_parts.cc", |
| "browser/web_engine_browser_main_parts.h", |
| "browser/web_engine_content_browser_client.cc", |
| "browser/web_engine_content_browser_client.h", |
| "browser/web_engine_devtools_controller.cc", |
| "browser/web_engine_devtools_controller.h", |
| "browser/web_engine_net_log_observer.cc", |
| "browser/web_engine_net_log_observer.h", |
| "browser/web_engine_permission_delegate.cc", |
| "browser/web_engine_permission_delegate.h", |
| "common/cast_streaming.cc", |
| "common/cast_streaming.h", |
| "common/cors_exempt_headers.cc", |
| "common/cors_exempt_headers.h", |
| "common/web_engine_content_client.cc", |
| "common/web_engine_content_client.h", |
| "common/web_engine_url_loader_throttle.cc", |
| "common/web_engine_url_loader_throttle.h", |
| "context_provider_impl.cc", |
| "context_provider_impl.h", |
| "context_provider_main.cc", |
| "context_provider_main.h", |
| "features.h", |
| "renderer/cast_streaming_demuxer.cc", |
| "renderer/cast_streaming_demuxer.h", |
| "renderer/cast_streaming_receiver.cc", |
| "renderer/cast_streaming_receiver.h", |
| "renderer/url_request_rules_receiver.cc", |
| "renderer/url_request_rules_receiver.h", |
| "renderer/web_engine_content_renderer_client.cc", |
| "renderer/web_engine_content_renderer_client.h", |
| "renderer/web_engine_render_frame_observer.cc", |
| "renderer/web_engine_render_frame_observer.h", |
| "renderer/web_engine_url_loader_throttle_provider.cc", |
| "renderer/web_engine_url_loader_throttle_provider.h", |
| "url_request_rewrite_type_converters.cc", |
| "url_request_rewrite_type_converters.h", |
| "web_engine_export.h", |
| "web_engine_main_delegate.cc", |
| "web_engine_main_delegate.h", |
| ] |
| visibility = [ ":*" ] |
| } |
| |
| source_set("switches") { |
| sources = [ |
| "switches.cc", |
| "switches.h", |
| ] |
| } |
| |
| executable("web_engine_exe") { |
| deps = [ |
| ":web_engine_core", |
| "//base", |
| "//content/public/app", |
| ] |
| sources = [ "web_engine_main.cc" ] |
| visibility = [ ":*" ] |
| } |
| |
| source_set("webui_resources") { |
| data = [ |
| "$root_gen_dir/ui/resources/webui_generated_resources.pak", |
| "$root_gen_dir/ui/resources/webui_resources.pak", |
| ] |
| deps = [ "//ui/resources" ] |
| } |
| |
| _web_engine_excluded_files = [ |
| # TODO(1022542): Swiftshader is never used under Fuchsia. |
| "lib/libswiftshader_libEGL.so", |
| "lib/libswiftshader_libGLESv2.so", |
| ] |
| |
| # Definitions for the main web_engine package. The package contains the |
| # context_provider component definition, and its dependencies. An installer |
| # script is declared for the package, for ease of development. |
| |
| fuchsia_component("context_provider_component") { |
| manifest = "context_provider.cmx" |
| data_deps = [ ":web_engine_exe" ] |
| visibility = [ ":*" ] |
| } |
| |
| fuchsia_package("web_engine") { |
| deps = [ ":context_provider_component" ] |
| excluded_files = _web_engine_excluded_files |
| } |
| |
| fuchsia_package_runner("web_engine_installer") { |
| package = ":web_engine" |
| install_only = true |
| } |
| |
| # Definitions for a variant of the web_engine package that bundles the WebUI |
| # resources, to allow e.g. chrome://gpu to be used. An installer script is |
| # defined, for ease of development. |
| |
| fuchsia_package("web_engine_with_webui") { |
| deps = [ |
| ":context_provider_component", |
| ":webui_resources", |
| ] |
| excluded_files = _web_engine_excluded_files |
| } |
| |
| fuchsia_package_runner("web_engine_with_webui_installer") { |
| package = ":web_engine_with_webui" |
| install_only = true |
| } |
| |
| source_set("browsertest_core") { |
| testonly = true |
| sources = [ |
| "test/test_data.cc", |
| "test/test_data.h", |
| "test/web_engine_browser_test.cc", |
| "test/web_engine_browser_test.h", |
| "test/web_engine_test_launcher.cc", |
| ] |
| data = [ "test/data" ] |
| deps = [ |
| ":switches", |
| ":web_engine_core", |
| "//content/public/browser", |
| "//content/test:test_support", |
| "//net:test_support", |
| "//testing/gtest", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", |
| "//ui/ozone", |
| ] |
| } |
| |
| test("web_engine_browsertests") { |
| sources = [ |
| "browser/accessibility_bridge_browsertest.cc", |
| "browser/autoplay_browsertest.cc", |
| "browser/cast_streaming_browsertest.cc", |
| "browser/content_directory_browsertest.cc", |
| "browser/context_impl_browsertest.cc", |
| "browser/fake_navigation_policy_provider.cc", |
| "browser/fake_navigation_policy_provider.h", |
| "browser/fake_semantic_tree.cc", |
| "browser/fake_semantic_tree.h", |
| "browser/fake_semantics_manager.cc", |
| "browser/fake_semantics_manager.h", |
| "browser/frame_impl_browser_test_base.cc", |
| "browser/frame_impl_browser_test_base.h", |
| "browser/frame_impl_browsertest.cc", |
| "browser/headless_browsertest.cc", |
| "browser/media_browsertest.cc", |
| "browser/navigation_policy_browsertest.cc", |
| "browser/permissions_browsertest.cc", |
| "browser/theme_manager_browsertest.cc", |
| "browser/virtual_keyboard_browsertest.cc", |
| ] |
| |
| # TODO(crbug.com/1157909): Move to the list above when the bug is fixed. |
| if (!is_component_build) { |
| sources += [ "browser/explicit_sites_filter_browsertest.cc" ] |
| } |
| defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| deps = [ |
| ":browsertest_core", |
| ":switches", |
| ":web_engine_core", |
| "//base/test:test_support", |
| "//components/cast/message_port:message_port", |
| "//components/policy/content:safe_sites_navigation_throttle", |
| "//components/safe_search_api:safe_search_api", |
| "//components/safe_search_api:test_support", |
| "//content/public/browser", |
| "//content/test:test_support", |
| "//fuchsia/base", |
| "//fuchsia/base:test_support", |
| "//fuchsia/cast_streaming", |
| "//fuchsia/cast_streaming:cast_streaming_test_sender", |
| "//net:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.accessibility.semantics", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.input.virtualkeyboard", |
| "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp", |
| "//ui/gfx", |
| "//ui/ozone", |
| ] |
| additional_manifest_fragments = [ |
| "//build/config/fuchsia/test/jit_capabilities.test-cmx", |
| "//build/config/fuchsia/test/network_capabilities.test-cmx", |
| "//build/config/fuchsia/test/present_view_capabilities.test-cmx", |
| "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", |
| "//build/config/fuchsia/test/web_engine_required_capabilities.test-cmx", |
| ] |
| } |
| |
| test("web_engine_unittests") { |
| sources = [ |
| "browser/ax_tree_converter_unittest.cc", |
| "browser/cookie_manager_impl_unittest.cc", |
| "browser/event_filter_unittest.cc", |
| "browser/fake_navigation_policy_provider.cc", |
| "browser/fake_navigation_policy_provider.h", |
| "browser/frame_impl_unittest.cc", |
| "browser/media_player_impl_unittest.cc", |
| "browser/navigation_policy_throttle_unittest.cc", |
| "browser/url_request_rewrite_rules_manager_unittest.cc", |
| "common/web_engine_url_loader_throttle_unittest.cc", |
| "context_provider_impl_unittest.cc", |
| "fake_context.cc", |
| "fake_context.h", |
| "test/run_all_unittests.cc", |
| ] |
| deps = [ |
| ":mojom", |
| ":switches", |
| ":web_engine_core", |
| "//base/test:test_support", |
| "//content/test:test_support", |
| "//fuchsia/base:test_support", |
| "//mojo/core/embedder", |
| "//services/media_session/public/mojom", |
| "//services/network:network_service", |
| "//services/network:test_support", |
| "//services/network/public/mojom", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.accessibility.semantics", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", |
| "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp", |
| ] |
| additional_manifest_fragments = [ |
| "//build/config/fuchsia/test/access_test_data_dir.test-cmx", |
| |
| # TODO(crbug.com/1185811): Figure out why jit_capabilities is needed. |
| "//build/config/fuchsia/test/jit_capabilities.test-cmx", |
| |
| "//build/config/fuchsia/test/network_capabilities.test-cmx", |
| "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", |
| ] |
| } |
| |
| test("web_engine_integration_tests") { |
| sources = [ |
| "test_debug_listener.cc", |
| "test_debug_listener.h", |
| "web_engine_debug_integration_test.cc", |
| "web_engine_integration_logging_test.cc", |
| "web_engine_integration_test.cc", |
| "web_engine_integration_test_base.cc", |
| "web_engine_integration_test_base.h", |
| ] |
| data = [ "test/data" ] |
| deps = [ |
| "//base", |
| "//base:test_log_listener_safe", |
| "//base/test:run_all_unittests", |
| "//fuchsia/base", |
| "//fuchsia/base:test_support", |
| "//media", |
| "//media/fuchsia/audio:test_support", |
| "//media/fuchsia/camera:test_support", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.mediacodec", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sys", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", |
| ] |
| package_deps = [ [ |
| ":web_engine", |
| "web_engine", |
| ] ] |
| additional_manifest_fragments = [ |
| "//build/config/fuchsia/test/network_capabilities.test-cmx", |
| "//build/config/fuchsia/test/read_debug_data.test-cmx", |
| "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", |
| "//build/config/fuchsia/test/web_engine_required_capabilities.test-cmx", |
| ] |
| } |
| |
| cr_fuchsia_package("web_engine_shell_pkg") { |
| testonly = true |
| manifest = "test/web_engine_shell.cmx" |
| binary = ":web_engine_shell_exec" |
| package_name_override = "web_engine_shell" |
| } |
| |
| fuchsia_package_runner("web_engine_shell") { |
| testonly = true |
| package = ":web_engine_shell_pkg" |
| package_name_override = "web_engine_shell" |
| package_deps = [ |
| [ |
| ":web_engine", |
| "web_engine", |
| ], |
| [ |
| ":web_engine_with_webui", |
| "web_engine_with_webui", |
| ], |
| ] |
| } |
| |
| executable("web_engine_shell_exec") { |
| sources = [ "test/web_engine_shell.cc" ] |
| |
| data = [ "test/shell_data" ] |
| |
| deps = [ |
| "//base", |
| "//fuchsia/base", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.policy", |
| "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", |
| "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp", |
| "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp", |
| "//url", |
| ] |
| } |
| |
| if (is_official_build) { |
| symbol_archive("symbol_archive") { |
| deps = [ ":web_engine" ] |
| ids_txt = "$root_gen_dir/fuchsia/engine/web_engine/ids.txt" |
| archive_name = |
| "$root_gen_dir/fuchsia/engine/web_engine/web_engine.symbols.tar.bz2" |
| } |
| } # is_official_build |