# 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/config/chromeos/ui_mode.gni") import("//extensions/buildflags/buildflags.gni") import("//printing/buildflags/buildflags.gni") if (!is_android) { import("//build/config/features.gni") import("//chrome/common/features.gni") import("//tools/grit/grit_rule.gni") } if (!is_android) { _inspector_protocol = "//third_party/inspector_protocol" import("$_inspector_protocol/inspector_protocol.gni") _protocol_generated = [ "protocol/browser.cc", "protocol/browser.h", "protocol/cast.cc", "protocol/cast.h", "protocol/emulation.cc", "protocol/emulation.h", "protocol/page.cc", "protocol/page.h", "protocol/protocol.h", "protocol/security.cc", "protocol/security.h", "protocol/target.cc", "protocol/target.h", ] if (is_chromeos_ash) { _protocol_generated += [ "protocol/window_manager.cc", "protocol/window_manager.h", ] } _concatenated_protocol_path = "$root_gen_dir/chrome/browser/devtools/protocol.json" action("concatenate_protocols") { script = _inspector_protocol + "/concatenate_protocols.py" deps = [ "//third_party/blink/public/devtools_protocol:protocol_version" ] _blink_protocol_path = "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json" inputs = [ _blink_protocol_path ] output_file = _concatenated_protocol_path outputs = [ output_file ] args = [ rebase_path(_blink_protocol_path, root_build_dir) ] if (is_chromeos_ash) { inputs += [ "cros_protocol.pdl" ] args += [ rebase_path("cros_protocol.pdl", root_build_dir) ] } args += [ rebase_path(output_file, root_build_dir) ] } inspector_protocol_generate("protocol_generated_sources") { inspector_protocol_dir = _inspector_protocol visibility = [ ":*" ] # Only targets in this file can depend on this. deps = [ ":concatenate_protocols" ] out_dir = target_gen_dir config_file = "inspector_protocol_config.json" use_embedder_types = true protocol_path = rebase_path(_concatenated_protocol_path, root_build_dir) config_values = [ "protocol.path=$protocol_path" ] inputs = [ _concatenated_protocol_path, "inspector_protocol_config.json", ] outputs = _protocol_generated } } static_library("devtools") { # Note: new sources and deps should be generally added in (!is_android) below. sources = [] configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", ] deps = [ "//base", # To prevent circular GN dependencies, this target does not depend on # //chrome/browser:browser, even though it has a real build dependency on # it. However, depending on the order in which this target and # //chrome/browser:browser are built it's possible that the connectors # proto header (which //chrome/browser:browser depends on) is not generated # yet causing devtools not to compile. Adding this indirect dependency to # the proto to fix that. "//components/enterprise/common/proto:connectors_proto", # Similar bandaid as the above. Since we cannot depend on # //chrome/browser:browser, we include indirect dependencies here. "//components/paint_preview/buildflags:buildflags", "//content/public/browser", "//net", "//services/viz/privileged/mojom/compositing", "//third_party/blink/public:buildflags", "//ui/events:dom_keycode_converter", ] if (!is_android && !is_qtwebengine) { deps += [ "//build:chromeos_buildflags", "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", "//chrome/app/theme:theme_resources", "//chrome/browser:browser_process", "//chrome/browser/media/router:media_router_feature", "//chrome/browser/profiles:profile", "//chrome/browser/web_applications", "//chrome/common", "//components/guest_view/browser", "//components/infobars/content", "//components/infobars/core", "//components/javascript_dialogs", "//components/keep_alive_registry", "//components/keyed_service/content", "//components/language/core/browser", "//components/pref_registry", "//components/prefs", "//components/sessions", "//components/signin/public/identity_manager:identity_manager", "//components/sync/driver:driver", "//components/sync_preferences", "//components/viz/host", "//components/web_modal", "//components/zoom", "//net/server:http_server", "//skia", "//third_party/icu", "//third_party/leveldatabase", "//ui/base/cursor", "//ui/base/cursor/mojom:cursor_type", "//ui/shell_dialogs", ] if (is_chromeos_ash) { deps += [ "//ash/constants" ] } sources += [ "chrome_devtools_manager_delegate.cc", "chrome_devtools_manager_delegate.h", "chrome_devtools_session.cc", "chrome_devtools_session.h", "device/adb/adb_client_socket.cc", "device/adb/adb_client_socket.h", "device/adb/adb_device_provider.cc", "device/adb/adb_device_provider.h", "device/android_device_info_query.cc", "device/android_device_manager.cc", "device/android_device_manager.h", "device/android_web_socket.cc", "device/devtools_android_bridge.cc", "device/devtools_android_bridge.h", "device/devtools_device_discovery.cc", "device/devtools_device_discovery.h", "device/port_forwarding_controller.cc", "device/port_forwarding_controller.h", "device/tcp_device_provider.cc", "device/tcp_device_provider.h", "device/usb/android_rsa.cc", "device/usb/android_rsa.h", "device/usb/android_usb_device.cc", "device/usb/android_usb_device.h", "device/usb/android_usb_socket.cc", "device/usb/android_usb_socket.h", "device/usb/usb_device_manager_helper.cc", "device/usb/usb_device_manager_helper.h", "device/usb/usb_device_provider.cc", "device/usb/usb_device_provider.h", "devtools_auto_opener.cc", "devtools_auto_opener.h", "devtools_browser_context_manager.cc", "devtools_browser_context_manager.h", "devtools_contents_resizing_strategy.cc", "devtools_contents_resizing_strategy.h", "devtools_dock_tile.h", "devtools_embedder_message_dispatcher.cc", "devtools_embedder_message_dispatcher.h", "devtools_eye_dropper.cc", "devtools_eye_dropper.h", "devtools_file_helper.cc", "devtools_file_helper.h", "devtools_file_system_indexer.cc", "devtools_file_system_indexer.h", "devtools_file_watcher.cc", "devtools_file_watcher.h", "devtools_infobar_delegate.cc", "devtools_infobar_delegate.h", "devtools_settings.cc", "devtools_settings.h", "devtools_targets_ui.cc", "devtools_targets_ui.h", "devtools_toggle_action.cc", "devtools_toggle_action.h", "devtools_ui_bindings.cc", "devtools_ui_bindings.h", "devtools_window.cc", "devtools_window.h", "global_confirm_info_bar.cc", "global_confirm_info_bar.h", "remote_debugging_server.cc", "remote_debugging_server.h", "serialize_host_descriptions.cc", "serialize_host_descriptions.h", "url_constants.cc", "url_constants.h", ] if (enable_service_discovery) { sources += [ "device/cast_device_provider.cc", "device/cast_device_provider.h", ] } } if (is_mac) { sources += [ "devtools_dock_tile_mac.mm" ] } else { sources += [ "devtools_dock_tile.cc" ] } if (!is_android) { deps += [ ":protocol_generated_sources", "//chrome/app:command_ids", "//components/media_router/browser", "//components/media_router/common/mojom:media_router", "//components/payments/content", "//components/security_state/content", "//components/subresource_filter/content/browser:browser", "//components/webapps/browser", "//third_party/inspector_protocol:crdtp", ] sources += [ "protocol/browser_handler.cc", "protocol/browser_handler.h", "protocol/cast_handler.cc", "protocol/cast_handler.h", "protocol/emulation_handler.cc", "protocol/emulation_handler.h", "protocol/page_handler.cc", "protocol/page_handler.h", "protocol/security_handler.cc", "protocol/security_handler.h", "protocol/target_handler.cc", "protocol/target_handler.h", ] if (is_chromeos_ash) { deps += [ "//ash" ] sources += [ "protocol/window_manager_handler.cc", "protocol/window_manager_handler.h", ] } if (enable_basic_printing) { deps += [ "//components/printing/browser/headless", "//components/printing/browser/print_to_pdf", ] } sources += rebase_path(_protocol_generated, ".", target_gen_dir) } if (enable_extensions) { deps += [ "//chrome/common/extensions/api", "//extensions/browser", ] } } static_library("test_support") { sources = [] deps = [] testonly = true if (!is_android) { deps += [ ":devtools", "//base", "//chrome/browser:browser_process", "//chrome/browser/ui", "//content/public/browser", "//content/test:test_support", ] sources += [ "devtools_window_testing.cc", "devtools_window_testing.h", ] } }