chromium/components/ui_devtools/BUILD.gn

# Copyright 2016 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/buildflag_header.gni")

_inspector_protocol = "//third_party/inspector_protocol"
import("$_inspector_protocol/inspector_protocol.gni")

_protocol_generated = [
  "css.cc",
  "css.h",
  "dom.cc",
  "dom.h",
  "forward.h",
  "overlay.cc",
  "overlay.h",
  "page.cc",
  "page.h",
  "protocol.h",
  "tracing.h",
  "tracing.cc",
]

action("protocol_compatibility") {
  visibility = [ ":*" ]  # Only targets in this file can depend on this.
  script = "$_inspector_protocol/check_protocol_compatibility.py"
  inputs = [ "protocol.json" ]

  _stamp = "$target_gen_dir/protocol.stamp"
  outputs = [ _stamp ]

  args = [
    "--stamp",
    rebase_path(_stamp, root_build_dir),
    rebase_path("protocol.json", 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 = [ ":protocol_compatibility" ]

  out_dir = target_gen_dir
  config_file = "inspector_protocol_config.json"
  inputs = [
    "protocol.json",
    "inspector_protocol_config.json",
  ]
  use_embedder_types = true

  outputs = _protocol_generated
}

component("ui_devtools") {
  sources = rebase_path(_protocol_generated, ".", target_gen_dir)
  sources += [
    "agent_util.cc",
    "agent_util.h",
    "connector_delegate.h",
    "css_agent.cc",
    "css_agent.h",
    "devtools_base_agent.h",
    "devtools_client.cc",
    "devtools_client.h",
    "devtools_export.h",
    "devtools_server.cc",
    "devtools_server.h",
    "dom_agent.cc",
    "dom_agent.h",
    "overlay_agent.cc",
    "overlay_agent.h",
    "page_agent.cc",
    "page_agent.h",
    "root_element.cc",
    "root_element.h",
    "switches.cc",
    "switches.h",
    "tracing_agent.cc",
    "tracing_agent.h",
    "ui_element.cc",
    "ui_element.h",
    "ui_element_delegate.h",
  ]

  defines = [ "UI_DEVTOOLS_IMPLEMENTATION" ]

  deps = [
    ":features",
    ":protocol_generated_sources",
    "//base",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//net",
    "//third_party/inspector_protocol:crdtp",
    "//ui/base:base",
    "//ui/gfx",
  ]

  public_deps = [
    "//services/service_manager/public/cpp",
    "//services/tracing/public/cpp",
    "//services/tracing/public/mojom",
  ]
}

component("features") {
  output_name = "ui_devtools_features"

  defines = [ "IS_UI_DEVTOOLS_FEATURES_IMPL" ]

  sources = [
    "ui_devtools_features.cc",
    "ui_devtools_features.h",
  ]

  deps = [ "//base" ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "ui_devtools_unittest_utils.cc",
    "ui_devtools_unittest_utils.h",
  ]
  public_deps = [
    ":ui_devtools",
    "//testing/gmock",
    "//third_party/inspector_protocol:crdtp",
  ]
}

source_set("unit_tests") {
  testonly = true

  cflags = []
  if (is_win) {
    cflags += [ "/wd4800" ]  # Value forced to bool.
  }

  sources = [
    "css_agent_unittest.cc",
    "devtools_server_unittest.cc",
    "ui_element_unittest.cc",
  ]

  data = [ "//components/test/data/ui_devtools/test_file.cc" ]

  deps = [
    ":test_support",
    "//base/test:test_support",
    "//net",
    "//net:test_support",
    "//testing/gtest",
  ]

  configs += [ "//build/config:precompiled_headers" ]
}