# Copyright 2015 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. import("//build/config/chrome_build.gni") import("//build/config/features.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//tools/grit/repack.gni") import("//tools/grit/grit_rule.gni") repack("pak") { sources = [ "$root_gen_dir/blimp/engine/blimp_browser_resources.pak", "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak", "$root_gen_dir/blink/public/resources/blink_resources.pak", "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", "$root_gen_dir/content/app/strings/content_strings_en-US.pak", "$root_gen_dir/content/browser/tracing/tracing_resources.pak", "$root_gen_dir/content/content_resources.pak", "$root_gen_dir/net/net_resources.pak", "$root_gen_dir/ui/resources/ui_resources_100_percent.pak", "$root_gen_dir/ui/resources/webui_resources.pak", "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak", "$root_gen_dir/ui/strings/ui_strings_en-US.pak", ] deps = [ ":resources", "//content:resources", "//content/app/resources", "//content/app/strings", "//content/browser/tracing:resources", "//net:net_resources", "//third_party/WebKit/public:image_resources", "//third_party/WebKit/public:resources", "//ui/resources", "//ui/strings", ] if (use_qt) { sources -= [ "$root_gen_dir/content/browser/tracing/tracing_resources.pak", ] deps -= [ "//content/browser/tracing:resources", ] } if (toolkit_views) { deps += [ "//ui/views/resources" ] sources += [ "$root_gen_dir/ui/views/resources/views_resources_100_percent.pak" ] } output = "$root_out_dir/blimp_engine.pak" } grit("resources") { visibility = [ ":*" ] source = "app/blimp_browser_resources.grd" use_qualified_include = true output_dir = "$root_gen_dir/blimp/engine" outputs = [ "grit/blimp_browser_resources.h", "blimp_browser_resources.pak", ] } source_set("app") { sources = [ "app/blimp_browser_main_parts.cc", "app/blimp_browser_main_parts.h", "app/blimp_content_browser_client.cc", "app/blimp_content_browser_client.h", "app/blimp_content_main_delegate.cc", "app/blimp_content_main_delegate.h", ] public_deps = [ ":app_metrics", "//device/geolocation", "//device/geolocation/public/interfaces", ] deps = [ ":app_config", ":app_net", ":app_permissions", ":app_settings", ":app_ui", ":blob_channel_service", ":common", ":crash", ":feature", ":font_data_fetcher", ":font_fetcher_mojo_impl", ":renderer", ":resources", ":session", "//base", "//blimp/common", "//blimp/common/proto", "//blimp/engine:blob_channel_mojo_cpp_sources", "//blimp/net", "//components/crash/content/app:app_breakpad_mac_win_to_be_deleted", "//components/crash/content/app:lib", "//content/public/app:both", "//content/public/browser", "//content/public/common", "//content/public/common:service_names", "//content/public/renderer", "//content/public/utility", "//device/geolocation", "//net", "//ui/base:base", ] } source_set("app_config") { sources = [ "app/blimp_engine_config.cc", "app/blimp_engine_config.h", ] deps = [ "//base", "//blimp/common", "//cc", "//content/public/common", "//ui/gl", "//ui/native_theme", ] } source_set("app_metrics") { sources = [ "app/blimp_metrics_service_client.cc", "app/blimp_metrics_service_client.h", "app/blimp_stability_metrics_provider.cc", "app/blimp_stability_metrics_provider.h", ] public_deps = [ "//components/metrics", "//content/public/browser", ] deps = [ "//base", "//base:i18n", "//components/metrics:gpu", "//components/metrics:net", "//components/metrics:profiler", "//components/metrics:ui", "//components/prefs", "//components/version_info", "//net", ] } source_set("app_net") { sources = [ "app/blimp_network_delegate.cc", "app/blimp_network_delegate.h", "app/blimp_system_url_request_context_getter.cc", "app/blimp_system_url_request_context_getter.h", "app/blimp_url_request_context_getter.cc", "app/blimp_url_request_context_getter.h", ] deps = [ ":common_user_agent", "//base", "//content/public/browser", "//net", ] } source_set("app_permissions") { sources = [ "app/blimp_permission_manager.cc", "app/blimp_permission_manager.h", ] deps = [ "//base", "//content/public/browser", ] } source_set("app_settings") { sources = [ "app/engine_settings.h", "app/settings_manager.cc", "app/settings_manager.h", ] deps = [ "//blimp/net", "//content/public/browser", "//content/public/common", ] } source_set("app_switches") { sources = [ "app/switches.cc", "app/switches.h", ] } source_set("app_ui") { sources = [ "app/ui/blimp_layout_manager.cc", "app/ui/blimp_layout_manager.h", "app/ui/blimp_screen.cc", "app/ui/blimp_screen.h", "app/ui/blimp_window_parenting_client.cc", "app/ui/blimp_window_parenting_client.h", "app/ui/blimp_window_tree_host.cc", "app/ui/blimp_window_tree_host.h", ] deps = [ "//blimp/common", "//cc", "//cc/surfaces", "//ui/aura", "//ui/compositor", "//ui/display", "//ui/events", "//ui/gfx", "//ui/platform_window", "//ui/platform_window/stub/", ] } source_set("font_data_fetcher") { sources = [ "browser/font_data_fetcher.h", "browser/font_data_fetcher_impl.cc", "browser/font_data_fetcher_impl.h", ] deps = [ "//base", "//skia", ] } source_set("crash") { sources = [ "app/blimp_engine_crash_keys.cc", "app/blimp_engine_crash_keys.h", "app/blimp_engine_crash_reporter_client.cc", "app/blimp_engine_crash_reporter_client.h", ] deps = [ "//base", "//components/crash/content/app:app_breakpad_mac_win_to_be_deleted", "//components/crash/content/app:lib", "//components/crash/core/common", "//components/version_info", "//components/version_info:generate_version_info", "//content/public/common", ] } source_set("common") { sources = [ "common/blimp_browser_context.cc", "common/blimp_browser_context.h", "common/blimp_content_client.cc", "common/blimp_content_client.h", ] deps = [ ":app_metrics", ":app_net", ":app_permissions", ":common_user_agent", "//base", "//components/metrics", "//components/pref_registry", "//components/prefs", "//components/version_info", "//content/public/common", "//net", "//ui/base", ] } source_set("common_user_agent") { sources = [ "common/blimp_user_agent.cc", "common/blimp_user_agent.h", ] deps = [ "//components/version_info", "//content/public/common", ] } source_set("feature") { sources = [ "feature/engine_render_widget_feature.cc", "feature/engine_render_widget_feature.h", "feature/engine_settings_feature.cc", "feature/engine_settings_feature.h", "feature/geolocation/blimp_location_provider.cc", "feature/geolocation/blimp_location_provider.h", "feature/geolocation/engine_geolocation_feature.cc", "feature/geolocation/engine_geolocation_feature.h", ] deps = [ "//base", "//blimp/common", "//blimp/common/proto", "//blimp/engine:app_settings", "//blimp/engine:common", "//blimp/helium", "//blimp/net", "//content/public/browser", "//content/public/common", "//device/geolocation", "//net", "//ui/base", "//ui/base/ime", "//ui/resources", "//ui/wm", ] } source_set("renderer") { sources = [ "renderer/blimp_content_renderer_client.cc", "renderer/blimp_content_renderer_client.h", "renderer/blimp_engine_picture_cache.cc", "renderer/blimp_engine_picture_cache.h", "renderer/blimp_remote_compositor_bridge.cc", "renderer/blimp_remote_compositor_bridge.h", "renderer/blob_channel_sender_proxy.cc", "renderer/blob_channel_sender_proxy.h", "renderer/engine_image_serialization_processor.cc", "renderer/engine_image_serialization_processor.h", "renderer/frame_scheduler.cc", "renderer/frame_scheduler.h", ] deps = [ ":blob_channel_service", "//base", "//blimp/common", "//blimp/common/proto", "//blimp/net", "//cc", "//cc/proto", "//components/web_cache/renderer", "//content/public/common", "//content/public/renderer", "//services/service_manager/public/cpp", "//skia", "//third_party/libwebp", "//ui/gfx/geometry", "//ui/gl", ] } source_set("session") { sources = [ "session/blimp_engine_session.cc", "session/blimp_engine_session.h", "session/page_load_tracker.cc", "session/page_load_tracker.h", "session/tab.cc", "session/tab.h", ] deps = [ ":app_config", ":app_settings", ":app_switches", ":app_ui", ":blob_channel_service", ":common", ":common_user_agent", ":feature", "//base", "//blimp/common", "//blimp/common/proto", "//blimp/net", "//content/public/browser", "//content/public/common", "//device/geolocation", "//net", "//ui/aura", "//ui/base/ime", "//ui/gfx/geometry", "//ui/wm", ] } # Implements the browser portions of the Mojo bridge to BlobChannel. source_set("blob_channel_service") { sources = [ "mojo/blob_channel_service.cc", "mojo/blob_channel_service.h", ] deps = [ "//blimp/net", ] public_deps = [ ":blob_channel_mojo", ] } mojom("blob_channel_mojo") { sources = [ "mojo/blob_channel.mojom", ] } # Implements the browser portion of the FontAccess. source_set("font_fetcher_mojo_impl") { sources = [ "mojo/font_fetcher_mojo_impl.cc", "mojo/font_fetcher_mojo_impl.h", ] public_deps = [ ":font_fetcher_mojo", "//skia", ] deps = [ ":font_data_fetcher", ] } mojom("font_fetcher_mojo") { sources = [ "mojo/font_fetcher.mojom", ] } source_set("mojo_unit_tests") { testonly = true sources = [ "mojo/font_fetcher_mojo_impl_unittest.cc", ] deps = [ ":font_data_fetcher", ":font_fetcher_mojo", ":font_fetcher_mojo_impl", "//skia", "//testing/gmock", "//testing/gtest:gtest", ] } source_set("test_support") { testonly = true sources = [ "app/test_content_main_delegate.cc", "app/test_content_main_delegate.h", "feature/geolocation/mock_blimp_location_provider_delegate.cc", "feature/geolocation/mock_blimp_location_provider_delegate.h", ] deps = [ ":app", ":feature", "//base", "//testing/gmock", ] } source_set("app_unit_tests") { testonly = true sources = [ "app/blimp_engine_config_unittest.cc", "app/blimp_metrics_service_client_unittest.cc", "app/blimp_stability_metrics_provider_unittest.cc", "app/blimp_system_url_request_context_getter_unittest.cc", "app/settings_manager_unittest.cc", "app/ui/blimp_screen_unittest.cc", ] deps = [ ":app", ":app_config", ":app_metrics", ":app_net", ":app_settings", "//base", "//base/test:test_support", "//blimp/common", "//blimp/common:test_support", "//blimp/engine:app_ui", "//components/metrics:metrics", "//components/pref_registry:pref_registry", "//components/prefs:prefs", "//components/prefs:test_support", "//content/test:test_support", "//net:test_support", "//testing/gmock", "//testing/gtest", "//ui/display", "//ui/gfx:test_support", ] } source_set("common_unit_tests") { testonly = true sources = [ "common/blimp_browser_context_unittest.cc", ] deps = [ ":common", "//base", "//base/test:test_support", "//components/metrics:metrics", "//content/public/browser", "//content/test:test_support", "//net:test_support", "//testing/gmock", "//testing/gtest", ] } source_set("feature_unit_tests") { testonly = true sources = [ "feature/engine_render_widget_feature_unittest.cc", "feature/engine_settings_feature_unittest.cc", "feature/geolocation/blimp_location_provider_unittest.cc", "feature/geolocation/engine_geolocation_feature_unittest.cc", ] deps = [ ":feature", ":test_support", "//base", "//base/test:test_support", "//blimp/common", "//blimp/common/proto", "//blimp/engine:app_settings", "//blimp/net", "//blimp/net:test_support", "//content", "//content/public/browser", "//device/geolocation", "//net", "//net:test_support", "//testing/gmock", "//testing/gtest", "//third_party/WebKit/public:blink_headers", "//ui/base:test_support", ] } source_set("font_data_fetcher_unit_tests") { testonly = true sources = [ "browser/font_data_fetcher_impl_unittest.cc", ] deps = [ ":font_data_fetcher", "//base", "//base/test:test_support", "//net:test_support", "//skia", "//testing/gmock", "//testing/gtest", ] } source_set("renderer_unit_tests") { testonly = true sources = [ "renderer/blimp_engine_picture_cache_unittest.cc", "renderer/blimp_remote_compositor_bridge_unittest.cc", "renderer/blob_channel_sender_proxy_unittest.cc", "renderer/frame_scheduler_unittest.cc", ] deps = [ ":renderer", "//base", "//blimp/common", "//blimp/common:test_support", "//blimp/engine:blob_channel_mojo_cpp_sources", "//blimp/engine:blob_channel_service", "//blimp/net:test_support", "//blimp/test:support", "//cc/proto", "//mojo/public", "//skia", "//testing/gmock", "//testing/gtest", ] } source_set("unit_tests") { testonly = true deps = [ ":app_unit_tests", ":common_unit_tests", ":feature_unit_tests", ":font_data_fetcher_unit_tests", ":mojo_unit_tests", ":renderer_unit_tests", ] } if (is_linux) { _runtime_deps = "$root_gen_dir/blimp-engine.runtime_deps" _rebased_runtime_deps = rebase_path(_runtime_deps, root_out_dir) executable("blimp_engine_app") { sources = [ "app/blimp_main.cc", ] deps = [ ":app", ":app_config", ":pak", "//base", "//blimp/net", "//content/public/app:both", ] data_deps = [ ":pak", "//sandbox/linux:chrome_sandbox", "//third_party/blimp_fonts", ] # Setting this causes GN to write the list of runtime dependencies # for this target to the specified location. We use this list of # files to generate the tarball below in :blimp_engine_bundle, # so that it will contain everything we need to run the engine. write_runtime_deps = _runtime_deps } group("engine") { public_deps = [ ":blimp_engine_app", ] } _manifest = "$root_gen_dir/engine-manifest.txt" _rebased_manifest = rebase_path(_manifest, root_out_dir) _rebased_blacklist = rebase_path("//blimp/tools/engine-manifest-blacklist.txt") action("generate_manifest") { script = "//blimp/tools/generate-target-manifest.py" args = [ "--blacklist", _rebased_blacklist, "--runtime-deps-file", _rebased_runtime_deps, "--output", _rebased_manifest, ] inputs = [ _runtime_deps, ] outputs = [ _manifest, ] # By specifying a dependency (not a data_dependency) on :engine, # we can be sure that everything is built before the action is # complete (though not necessarily before we generate the manifest # itself). deps = [ ":engine", ] } # Builds and bundles the engine into a tarball that can be used to build a # Docker image. action("blimp_engine_bundle") { script = "//blimp/tools/create-bundle.py" # These form the arguments to the script. _rebased_out_dir = rebase_path(root_out_dir) _rebased_dockerfile = rebase_path("//blimp/engine/Dockerfile") _rebased_dockerfile_base = rebase_path("//blimp/tools/Dockerfile.base") _rebased_startup_script = rebase_path("//blimp/engine/start_engine.sh") _bundle = "$root_out_dir/blimp_engine_bundle.tar.gz" # Depending on this ensures that both the manifest is generated # and everything in the manifest has been built. deps = [ ":generate_manifest", ] sources = [ _manifest, _rebased_dockerfile, _rebased_dockerfile_base, _rebased_startup_script, ] outputs = [ _bundle, ] # Manually specify the actual arguments to the script. args = [ "--build-dir", _rebased_out_dir, "--filelist", _rebased_dockerfile, _rebased_dockerfile_base, _rebased_startup_script, "--manifest", _rebased_manifest, "--output", rebase_path(_bundle), ] } # Crash symbols should only be created and uploaded from official builders. if (is_official_build) { # Action to create a Breakpad symbol file for the Engine. This can take # a long time. action("blimp_symbols") { script = "//build/linux/dump_app_syms.py" dump_syms_label = "//breakpad:dump_syms" dump_syms_binary = get_label_info(dump_syms_label, "root_out_dir") + "/" + "dump_syms" engine_binary = "$root_out_dir/blimp_engine_app" symbol_file = "$root_out_dir/blimp_engine_app.breakpad.x64" inputs = [ engine_binary, dump_syms_binary, ] outputs = [ symbol_file, ] args = [ "./" + rebase_path(dump_syms_binary, root_build_dir), "0", # strip_binary = false rebase_path(engine_binary, root_build_dir), rebase_path(symbol_file, root_build_dir), ] # Include symupload target here as it is needed by the buildbots to upload # the symbol file created by dump_syms. deps = [ ":blimp_engine_app", "//breakpad:symupload", dump_syms_label, ] } } } source_set("browser_tests") { testonly = true sources = [ "browser_tests/blimp_browser_test.cc", "browser_tests/blimp_browser_test.h", "browser_tests/blimp_contents_view_readback_helper.cc", "browser_tests/blimp_contents_view_readback_helper.h", "browser_tests/blimp_test_launcher.cc", "browser_tests/input_browsertest.cc", "browser_tests/integration_test.cc", "browser_tests/navigation_browsertest.cc", "browser_tests/waitable_content_pump.cc", "browser_tests/waitable_content_pump.h", ] defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] deps = [ "//base", "//blimp/client/app:session", "//blimp/client/app:test_support", "//blimp/client/core/contents:test_support", "//blimp/client/core/context", "//blimp/client/core/render_widget:test_support", "//blimp/client/core/session", "//blimp/client/core/switches", "//blimp/client/test", "//blimp/common", "//blimp/engine:app", "//blimp/engine:app_config", "//blimp/engine:app_switches", "//blimp/engine:pak", "//blimp/engine:session", "//blimp/engine:test_support", "//blimp/net", "//components/prefs:test_support", "//content/public/app:both", "//content/test:test_support", "//testing/gmock", "//testing/gtest", ] data = [ "//blimp/test/data/", "$root_out_dir/blimp_engine.pak", ] }