# 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("//device/bluetooth/emulation/buildflags.gni")
import("//third_party/inspector_protocol/inspector_protocol.gni")
import("//third_party/protobuf/proto_library.gni")
import("//tools/grit/grit_rule.gni")
# Android and iOS don't support DevTools front-end.
if (!is_android && !is_ios) {
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/device_access.cc",
"protocol/device_access.h",
"protocol/device_orientation.cc",
"protocol/device_orientation.h",
"protocol/dom.cc",
"protocol/dom.h",
"protocol/emulation.cc",
"protocol/emulation.h",
"protocol/fed_cm.cc",
"protocol/fed_cm.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/preload.cc",
"protocol/preload.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",
]
}
if (enable_bluetooth_emulation) {
outputs += [
"protocol/bluetooth_emulation.cc",
"protocol/bluetooth_emulation.h",
]
}
}
proto_library("devtools_background_services_proto") {
sources = [ "devtools_background_services.proto" ]
}