blob: db86f133bc2b19c82d1b670cabd3e0784a208fea [file] [log] [blame]
# 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 (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/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",
]
}