import("//third_party/inspector_protocol/inspector_protocol.gni")
import("//v8/gni/v8.gni")

_inspector_protocol_dir = "//third_party/inspector_protocol"
_protocol_out_dir = "$root_gen_dir/third_party/blink/public/devtools_protocol"

domains = [
  "domains/Accessibility.pdl",
  "domains/Ads.pdl",
  "domains/Animation.pdl",
  "domains/Audits.pdl",
  "domains/Autofill.pdl",
  "domains/BackgroundService.pdl",
  "domains/BluetoothEmulation.pdl",
  "domains/Browser.pdl",
  "domains/CSS.pdl",
  "domains/CacheStorage.pdl",
  "domains/Cast.pdl",
  "domains/CrashReportContext.pdl",
  "domains/DOM.pdl",
  "domains/DOMDebugger.pdl",
  "domains/DOMSnapshot.pdl",
  "domains/DOMStorage.pdl",
  "domains/DeviceAccess.pdl",
  "domains/DeviceOrientation.pdl",
  "domains/DigitalCredentials.pdl",
  "domains/Emulation.pdl",
  "domains/EventBreakpoints.pdl",
  "domains/Extensions.pdl",
  "domains/FedCm.pdl",
  "domains/Fetch.pdl",
  "domains/FileSystem.pdl",
  "domains/HeadlessExperimental.pdl",
  "domains/IO.pdl",
  "domains/IndexedDB.pdl",
  "domains/Input.pdl",
  "domains/Inspector.pdl",
  "domains/LayerTree.pdl",
  "domains/Log.pdl",
  "domains/Media.pdl",
  "domains/Memory.pdl",
  "domains/Network.pdl",
  "domains/Overlay.pdl",
  "domains/PWA.pdl",
  "domains/Page.pdl",
  "domains/Performance.pdl",
  "domains/PerformanceTimeline.pdl",
  "domains/Preload.pdl",
  "domains/Security.pdl",
  "domains/ServiceWorker.pdl",
  "domains/SmartCardEmulation.pdl",
  "domains/Storage.pdl",
  "domains/SystemInfo.pdl",
  "domains/Target.pdl",
  "domains/Tethering.pdl",
  "domains/Tracing.pdl",
  "domains/WebAudio.pdl",
  "domains/WebAuthn.pdl",
  "domains/WebMCP.pdl",
]

action("protocol_compatibility_check") {
  script = _inspector_protocol_dir + "/check_protocol_compatibility.py"

  inputs = [
             "browser_protocol.pdl",
             "browser_protocol-1.3.json",
             v8_inspector_js_protocol,
           ] + domains
  _stamp = "$_protocol_out_dir/browser_protocol.stamp"
  outputs = [ _stamp ]

  args = [
    "--stamp",
    rebase_path(_stamp, root_build_dir),
    rebase_path("browser_protocol.pdl", root_build_dir),
    rebase_path(v8_inspector_js_protocol, root_build_dir),
  ]
}

action("protocol_version") {
  deps = [ ":protocol_compatibility_check" ]
  script = _inspector_protocol_dir + "/concatenate_protocols.py"

  inputs = [
             "$_inspector_protocol_dir/pdl.py",
             "browser_protocol.pdl",
             v8_inspector_js_protocol,
           ] + domains
  output_file = "$_protocol_out_dir/protocol.json"
  outputs = [ output_file ]

  args = [
    rebase_path("browser_protocol.pdl", root_build_dir),
    rebase_path(v8_inspector_js_protocol, root_build_dir),
    rebase_path(output_file, root_build_dir),
  ]
}
