blob: 1bde8abadacc8ca4e933264fe25e0cfec1c8682f [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/python.gni")
import("//build/config/ui.gni")
import("//build/util/lastchange.gni")
import("//testing/test.gni")
action("embed_js_in_cpp") {
script = "embed_js_in_cpp.py"
js_files = [
"js/call_function.js",
"js/dispatch_touch_event.js",
"js/execute_async_script.js",
"js/focus.js",
"js/get_element_region.js",
"js/is_option_element_toggleable.js",
]
inputs = [ "cpp_source.py" ] + js_files
outputs = [
"$target_gen_dir/chrome/js.cc",
"$target_gen_dir/chrome/js.h",
]
args = [
"--directory",
rebase_path("$target_gen_dir/chrome", root_build_dir),
]
args += rebase_path(js_files, root_build_dir)
}
action("embed_user_data_dir_in_cpp") {
script = "embed_user_data_dir_in_cpp.py"
files = [
"chrome/preferences.txt",
"chrome/local_state.txt",
]
inputs = [ "cpp_source.py" ] + files
outputs = [
"$target_gen_dir/chrome/user_data_dir.cc",
"$target_gen_dir/chrome/user_data_dir.h",
]
args = [
"--directory",
rebase_path("$target_gen_dir/chrome", root_build_dir),
]
args += rebase_path(files, root_build_dir)
}
action("embed_extension_in_cpp") {
script = "embed_extension_in_cpp.py"
files = [
"extension/background.js",
"extension/manifest.json",
]
inputs = [ "cpp_source.py" ] + files
outputs = [
"$target_gen_dir/chrome/embedded_automation_extension.cc",
"$target_gen_dir/chrome/embedded_automation_extension.h",
]
args = [
"--directory",
rebase_path("$target_gen_dir/chrome", root_build_dir),
]
args += rebase_path(files, root_build_dir)
}
source_set("automation_client_lib") {
sources = [
"chrome/adb.h",
"chrome/adb_impl.cc",
"chrome/adb_impl.h",
"chrome/automation_extension.cc",
"chrome/automation_extension.h",
"chrome/chrome.h",
"chrome/chrome_android_impl.cc",
"chrome/chrome_android_impl.h",
"chrome/chrome_desktop_impl.cc",
"chrome/chrome_desktop_impl.h",
"chrome/chrome_finder.cc",
"chrome/chrome_finder.h",
"chrome/chrome_finder_mac.mm",
"chrome/chrome_impl.cc",
"chrome/chrome_impl.h",
"chrome/chrome_remote_impl.cc",
"chrome/chrome_remote_impl.h",
"chrome/console_logger.cc",
"chrome/console_logger.h",
"chrome/debugger_tracker.cc",
"chrome/debugger_tracker.h",
"chrome/device_manager.cc",
"chrome/device_manager.h",
"chrome/device_metrics.cc",
"chrome/device_metrics.h",
"chrome/devtools_client.h",
"chrome/devtools_client_impl.cc",
"chrome/devtools_client_impl.h",
"chrome/devtools_event_listener.cc",
"chrome/devtools_event_listener.h",
"chrome/devtools_http_client.cc",
"chrome/devtools_http_client.h",
"chrome/dom_tracker.cc",
"chrome/dom_tracker.h",
"chrome/frame_tracker.cc",
"chrome/frame_tracker.h",
"chrome/geolocation_override_manager.cc",
"chrome/geolocation_override_manager.h",
"chrome/geoposition.h",
"chrome/heap_snapshot_taker.cc",
"chrome/heap_snapshot_taker.h",
"chrome/javascript_dialog_manager.cc",
"chrome/javascript_dialog_manager.h",
"chrome/log.cc",
"chrome/log.h",
"chrome/mobile_device.cc",
"chrome/mobile_device.h",
"chrome/mobile_device_list.cc",
"chrome/mobile_device_list.h",
"chrome/mobile_emulation_override_manager.cc",
"chrome/mobile_emulation_override_manager.h",
"chrome/navigation_tracker.cc",
"chrome/navigation_tracker.h",
"chrome/network_conditions.cc",
"chrome/network_conditions.h",
"chrome/network_conditions_override_manager.cc",
"chrome/network_conditions_override_manager.h",
"chrome/network_list.cc",
"chrome/network_list.h",
"chrome/non_blocking_navigation_tracker.cc",
"chrome/non_blocking_navigation_tracker.h",
"chrome/page_load_strategy.cc",
"chrome/page_load_strategy.h",
"chrome/status.cc",
"chrome/status.h",
"chrome/ui_events.cc",
"chrome/ui_events.h",
"chrome/util.cc",
"chrome/util.h",
"chrome/version.cc",
"chrome/version.h",
"chrome/web_view.h",
"chrome/web_view_impl.cc",
"chrome/web_view_impl.h",
"log_replay/chrome_replay_impl.cc",
"log_replay/chrome_replay_impl.h",
"log_replay/devtools_log_reader.cc",
"log_replay/devtools_log_reader.h",
"log_replay/log_replay_socket.cc",
"log_replay/log_replay_socket.h",
"log_replay/replay_http_client.cc",
"log_replay/replay_http_client.h",
"net/adb_client_socket.cc",
"net/adb_client_socket.h",
"net/net_util.cc",
"net/net_util.h",
"net/sync_websocket.h",
"net/sync_websocket_factory.cc",
"net/sync_websocket_factory.h",
"net/sync_websocket_impl.cc",
"net/sync_websocket_impl.h",
"net/timeout.cc",
"net/timeout.h",
"net/url_request_context_getter.cc",
"net/url_request_context_getter.h",
"net/websocket.cc",
"net/websocket.h",
]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
# Also compile the generated files.
sources += get_target_outputs(":embed_extension_in_cpp")
sources += get_target_outputs(":embed_js_in_cpp")
sources += get_target_outputs(":embed_user_data_dir_in_cpp")
deps = [
":embed_extension_in_cpp",
":embed_js_in_cpp",
":embed_user_data_dir_in_cpp",
"//base",
"//base/third_party/dynamic_annotations",
"//net",
"//services/network/public/cpp",
"//services/network/public/mojom",
"//third_party/blink/public:buildflags",
"//third_party/zlib:minizip",
"//third_party/zlib/google:zip",
"//ui/accessibility:ax_enums_mojo",
"//ui/base",
"//ui/gfx",
"//ui/gfx/geometry",
"//url",
]
}
action("embed_version_in_cpp") {
script = "embed_version_in_cpp.py"
inputs = [
"cpp_source.py",
"VERSION",
"//chrome/VERSION",
# We don't actually use LASTCHANGE as an input file. It is updated
# whenever a different Git revision is checked out, at which point
# version.cc needs to be updated with the new revision info.
lastchange_file,
]
outputs = [
"$target_gen_dir/version.cc",
"$target_gen_dir/version.h",
]
args = [
"--chromedriver-version-file",
rebase_path("VERSION", root_build_dir),
"--chrome-version-file",
rebase_path("//chrome/VERSION", root_build_dir),
"--directory",
rebase_path(target_gen_dir, root_build_dir),
]
}
source_set("lib") {
sources = [
"//third_party/webdriver/atoms.cc",
"//third_party/webdriver/atoms.h",
"alert_commands.cc",
"alert_commands.h",
"basic_types.cc",
"basic_types.h",
"capabilities.cc",
"capabilities.h",
"chrome/browser_info.cc",
"chrome/browser_info.h",
"chrome/scoped_temp_dir_with_retry.cc",
"chrome/scoped_temp_dir_with_retry.h",
"chrome_launcher.cc",
"chrome_launcher.h",
"command.h",
"command_listener.h",
"command_listener_proxy.cc",
"command_listener_proxy.h",
"commands.cc",
"commands.h",
"devtools_events_logger.cc",
"devtools_events_logger.h",
"element_commands.cc",
"element_commands.h",
"element_util.cc",
"element_util.h",
"key_converter.cc",
"key_converter.h",
"keycode_text_conversion.h",
"keycode_text_conversion_mac.mm",
"keycode_text_conversion_win.cc",
"logging.cc",
"logging.h",
"performance_logger.cc",
"performance_logger.h",
"server/http_handler.cc",
"server/http_handler.h",
"session.cc",
"session.h",
"session_commands.cc",
"session_commands.h",
"session_thread_map.h",
"util.cc",
"util.h",
"window_commands.cc",
"window_commands.h",
]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
# Also compile the generated version files.
sources += get_target_outputs(":embed_version_in_cpp")
if (use_x11) {
sources += [ "keycode_text_conversion_x.cc" ]
}
# The X11 implementation uses part of Ozone implementation.
if (use_ozone || use_x11) {
sources += [ "keycode_text_conversion_ozone.cc" ]
}
deps = [
":automation_client_lib",
":embed_version_in_cpp",
"//base",
"//base/third_party/dynamic_annotations",
"//chrome/common:constants",
"//chrome/common:version_header",
"//crypto",
"//net",
"//net/server:http_server",
"//services/network:network_service",
"//services/network/public/cpp",
"//services/network/public/mojom",
"//third_party/zlib",
"//ui/base",
"//ui/events:dom_keycode_converter",
"//ui/events:events_base",
"//ui/events/ozone:events_ozone_layout",
"//ui/gfx",
"//ui/gfx/geometry",
]
if (use_x11) {
configs += [ "//build/config/linux:x11" ]
deps += [ "//ui/gfx/x" ]
}
if (is_mac) {
libs = [ "Carbon.framework" ]
}
}
executable("chromedriver") {
sources = [
"server/chromedriver_server.cc",
]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":lib",
"//build/win:default_exe_manifest",
"//mojo/core/embedder",
"//services/network/public/mojom",
]
}
python_library("chromedriver_py_tests") {
testonly = true
deps = [
":chromedriver",
"//chrome:chrome",
]
pydeps_file = "test/run_py_tests.pydeps"
data = [
"//chrome/test/data/chromedriver/",
"//testing/scripts/run_chromedriver_tests.py",
"//testing/scripts/common.py",
"//testing/xvfb.py",
]
data_deps = [
"//chrome/test/chromedriver",
]
if (is_component_build && is_mac) {
data_deps += [ "//chrome:chrome_framework" ]
}
if (is_win) {
# On Windows, the following target produces the final chrome.exe
data_deps += [ "//chrome:reorder_imports" ]
}
}
python_library("chromedriver_replay_unittests") {
testonly = true
deps = [
":chromedriver",
]
pydeps_file = "log_replay/client_replay_unittest.pydeps"
}
test("chromedriver_unittests") {
sources = [
"capabilities_unittest.cc",
"chrome/browser_info_unittest.cc",
"chrome/chrome_finder_unittest.cc",
"chrome/console_logger_unittest.cc",
"chrome/device_manager_unittest.cc",
"chrome/devtools_client_impl_unittest.cc",
"chrome/devtools_http_client_unittest.cc",
"chrome/dom_tracker_unittest.cc",
"chrome/frame_tracker_unittest.cc",
"chrome/geolocation_override_manager_unittest.cc",
"chrome/heap_snapshot_taker_unittest.cc",
"chrome/javascript_dialog_manager_unittest.cc",
"chrome/mobile_emulation_override_manager_unittest.cc",
"chrome/navigation_tracker_unittest.cc",
"chrome/network_conditions_override_manager_unittest.cc",
"chrome/recorder_devtools_client.cc",
"chrome/recorder_devtools_client.h",
"chrome/status_unittest.cc",
"chrome/stub_chrome.cc",
"chrome/stub_chrome.h",
"chrome/stub_devtools_client.cc",
"chrome/stub_devtools_client.h",
"chrome/stub_web_view.cc",
"chrome/stub_web_view.h",
"chrome/web_view_impl_unittest.cc",
"chrome_launcher_unittest.cc",
"command_listener_proxy_unittest.cc",
"commands_unittest.cc",
"log_replay/devtools_log_reader_unittest.cc",
"logging_unittest.cc",
"net/adb_client_socket_unittest.cc",
"net/timeout_unittest.cc",
"performance_logger_unittest.cc",
"server/http_handler_unittest.cc",
"session_commands_unittest.cc",
"session_unittest.cc",
"util_unittest.cc",
"window_commands_unittest.cc",
]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
data = [
"//chrome/test/data/chromedriver/",
"//chrome/test/chromedriver/log_replay/test_data",
]
deps = [
":lib",
"//base",
"//base/test:run_all_unittests",
"//net",
"//net:test_support",
"//net/server:http_server",
"//services/network/public/mojom",
"//testing/gmock",
"//testing/gtest",
"//ui/base",
"//ui/gfx",
"//ui/gfx/geometry",
]
}
# ChromeDriver tests that aren't run on the main buildbot. Available as an
# optional test type on trybots.
test("chromedriver_tests") {
sources = [
"key_converter_unittest.cc",
"keycode_text_conversion_unittest.cc",
"net/net_util_unittest.cc",
"net/sync_websocket_impl_unittest.cc",
"net/test_http_server.cc",
"net/test_http_server.h",
"net/websocket_unittest.cc",
]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":lib",
"//base",
"//base/test:run_all_unittests",
"//mojo/core/embedder",
"//net",
"//net:test_support",
"//net/server:http_server",
"//services/network/public/cpp",
"//services/network/public/mojom",
"//testing/gtest",
"//ui/events:test_support",
"//url",
]
}