| # 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/compiler/pgo/pgo.gni") | 
 | import("//build/config/devtools.gni") | 
 | import("//components/viz/common/debugger/viz_debugger.gni") | 
 | import("//third_party/inspector_protocol/inspector_protocol.gni") | 
 | import("//third_party/protobuf/proto_library.gni") | 
 | import("//tools/grit/grit_rule.gni") | 
 |  | 
 | # Android does not support DevTools front-end. | 
 | if (!is_android) { | 
 |   source_set("devtools_resources_extern") { | 
 |     sources = [ "devtools_resources.cc" ] | 
 |  | 
 |     # This is to remove unnecessary dependency from compiles of targets depends | 
 |     # on this target to grit action. | 
 |     public = [] | 
 |  | 
 |     deps = [ ":devtools_resources" ] | 
 |   } | 
 |   grit("devtools_resources") { | 
 |     source = "$root_gen_dir/$devtools_grd_location" | 
 |  | 
 |     # Required because the .grd is generated. | 
 |     enable_input_discovery_for_gn_analyze = false | 
 |     use_brotli = true | 
 |  | 
 |     outputs = [ | 
 |       "grit/devtools_resources.h", | 
 |       "devtools_resources.pak", | 
 |       "grit/devtools_resources_map.cc", | 
 |       "grit/devtools_resources_map.h", | 
 |     ] | 
 |  | 
 |     grit_flags = [ | 
 |       "-E", | 
 |       "protocol_file=" + rebase_path( | 
 |               "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json", | 
 |               root_build_dir), | 
 |     ] | 
 |  | 
 |     deps = [ | 
 |       "//third_party/blink/public/devtools_protocol:protocol_version", | 
 |  | 
 |       # This is the action that generates out .grd input file. | 
 |       "//third_party/blink/public:blink_generate_devtools_grd", | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | # Here we concatenate the viz_debugger.pdl and native_profiling.pdl | 
 | # into our browser protocol. This technique is nearly identical to what is | 
 | # done for cros_protocol.pdl in chrome/browser/devtools | 
 | _concatenated_protocol_path = | 
 |     "$root_gen_dir/content/browser/devtools/protocol.json" | 
 | action("concatenate_protocols") { | 
 |   script = "//third_party/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 (use_viz_debugger) { | 
 |     _visual_debugger_pdl = "//components/viz/common/debugger/viz_debugger.pdl" | 
 |     inputs += [ _visual_debugger_pdl ] | 
 |     args += [ rebase_path(_visual_debugger_pdl, root_build_dir) ] | 
 |   } | 
 |  | 
 |   if (use_clang_profiling_inside_sandbox && chrome_pgo_phase == 1) { | 
 |     native_profiling_pdl = "//content/browser/native_profiling.pdl" | 
 |     inputs += [ native_profiling_pdl ] | 
 |     args += [ rebase_path(native_profiling_pdl, root_build_dir) ] | 
 |   } | 
 |  | 
 |   args += [ rebase_path(output_file, root_build_dir) ] | 
 | } | 
 |  | 
 | inspector_protocol_generate("protocol_sources") { | 
 |   visibility = [ "//content/browser" ] | 
 |   deps = [ ":concatenate_protocols" ] | 
 |   inspector_protocol_dir = "//third_party/inspector_protocol" | 
 |   out_dir = target_gen_dir | 
 |   config_file = "protocol_config.json" | 
 |   protocol_path = rebase_path(_concatenated_protocol_path, root_build_dir) | 
 |   config_values = [ "protocol.path=$protocol_path" ] | 
 |   use_embedder_types = true | 
 |  | 
 |   inputs = [ | 
 |     _concatenated_protocol_path, | 
 |     config_file, | 
 |   ] | 
 |  | 
 |   # These are relative to $target_gen_dir. | 
 |   outputs = [ | 
 |     "protocol/audits.cc", | 
 |     "protocol/audits.h", | 
 |     "protocol/background_service.cc", | 
 |     "protocol/background_service.h", | 
 |     "protocol/browser.cc", | 
 |     "protocol/browser.h", | 
 |     "protocol/dom.cc", | 
 |     "protocol/dom.h", | 
 |     "protocol/emulation.cc", | 
 |     "protocol/emulation.h", | 
 |     "protocol/fetch.cc", | 
 |     "protocol/fetch.h", | 
 |     "protocol/forward.h", | 
 |     "protocol/input.cc", | 
 |     "protocol/input.h", | 
 |     "protocol/inspector.cc", | 
 |     "protocol/inspector.h", | 
 |     "protocol/io.cc", | 
 |     "protocol/io.h", | 
 |     "protocol/log.cc", | 
 |     "protocol/log.h", | 
 |     "protocol/memory.cc", | 
 |     "protocol/memory.h", | 
 |     "protocol/network.cc", | 
 |     "protocol/network.h", | 
 |     "protocol/overlay.cc", | 
 |     "protocol/overlay.h", | 
 |     "protocol/page.cc", | 
 |     "protocol/page.h", | 
 |     "protocol/protocol.h", | 
 |     "protocol/runtime.cc", | 
 |     "protocol/runtime.h", | 
 |     "protocol/schema.cc", | 
 |     "protocol/schema.h", | 
 |     "protocol/security.cc", | 
 |     "protocol/security.h", | 
 |     "protocol/service_worker.cc", | 
 |     "protocol/service_worker.h", | 
 |     "protocol/storage.cc", | 
 |     "protocol/storage.h", | 
 |     "protocol/system_info.cc", | 
 |     "protocol/system_info.h", | 
 |     "protocol/target.cc", | 
 |     "protocol/target.h", | 
 |     "protocol/tethering.cc", | 
 |     "protocol/tethering.h", | 
 |     "protocol/tracing.cc", | 
 |     "protocol/tracing.h", | 
 |     "protocol/web_authn.cc", | 
 |     "protocol/web_authn.h", | 
 |   ] | 
 |  | 
 |   if (use_viz_debugger) { | 
 |     outputs += [ | 
 |       "protocol/visual_debugger.cc", | 
 |       "protocol/visual_debugger.h", | 
 |     ] | 
 |   } | 
 |  | 
 |   if (chrome_pgo_phase == 1) { | 
 |     outputs += [ | 
 |       "protocol/native_profiling.cc", | 
 |       "protocol/native_profiling.h", | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | proto_library("devtools_background_services_proto") { | 
 |   sources = [ "devtools_background_services.proto" ] | 
 | } |