| # Copyright 2014 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/chromeos/ui_mode.gni") | 
 | import("//extensions/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/base_string_adapter.cc", | 
 |     "protocol/base_string_adapter.h", | 
 |     "protocol/browser.cc", | 
 |     "protocol/browser.h", | 
 |     "protocol/cast.cc", | 
 |     "protocol/cast.h", | 
 |     "protocol/forward.h", | 
 |     "protocol/page.cc", | 
 |     "protocol/page.h", | 
 |     "protocol/protocol.cc", | 
 |     "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" | 
 |  | 
 |     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:no_size_t_to_int_warning", | 
 |     "//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) { | 
 |     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/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/sync_preferences", | 
 |       "//components/viz/host", | 
 |       "//components/web_modal", | 
 |       "//components/zoom", | 
 |       "//extensions/browser", | 
 |       "//net/server:http_server", | 
 |       "//skia", | 
 |       "//third_party/icu", | 
 |       "//third_party/leveldatabase", | 
 |       "//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_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/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/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", | 
 |       ] | 
 |     } | 
 |     sources += rebase_path(_protocol_generated, ".", target_gen_dir) | 
 |   } | 
 |  | 
 |   if (enable_extensions) { | 
 |     deps += [ "//chrome/common/extensions/api" ] | 
 |   } | 
 | } | 
 |  | 
 | 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", | 
 |     ] | 
 |   } | 
 | } |