# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")

grit("headless_command_resources") {
  source = "headless_command.grd"
  outputs = [
    "grit/headless_command_resources.h",
    "$root_gen_dir/components/headless/command_handler/headless_command_resources.pak",
  ]

  use_brotli = true
}

repack("headless_command_resources_pack") {
  sources = [ "$root_gen_dir/components/headless/command_handler/headless_command_resources.pak" ]

  output = "$root_out_dir/headless_command_resources.pak"

  deps = [ ":headless_command_resources" ]
}

source_set("switches") {
  sources = [
    "headless_command_switches.cc",
    "headless_command_switches.h",
  ]

  deps = [ "//base" ]
}

static_library("command_handler") {
  sources = [
    "headless_command_handler.cc",
    "headless_command_handler.h",
  ]

  deps = [
    ":switches",
    "//base",
    "//components/devtools/simple_devtools_protocol_client",
    "//content",
    "//content/public/app",
    "//content/public/browser",
    "//ui/base",
    "//url",
  ]

  public_deps = [
    ":headless_command_resources",
    ":headless_command_resources_pack",
  ]
}
