chromium/chrome/renderer/extensions/BUILD.gn

# Copyright 2024 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/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//extensions/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")

assert(enable_extensions_core)

source_set("extensions") {
  # The files that can be included from other modules.
  public = [
    "chrome_extensions_renderer_client.h",
    "renderer_permissions_policy_delegate.h",
  ]

  # Files that can only be included from here.
  sources = [
    "chrome_extensions_renderer_client.cc",
    "chrome_resource_request_policy_delegate.cc",
    "chrome_resource_request_policy_delegate.h",
    "renderer_permissions_policy_delegate.cc",
  ]

  public_deps = [
    "//base",
    "//extensions/common",
    "//extensions/renderer",
  ]

  deps = [
    "//chrome/common",
    "//chrome/common:non_code_constants",
    "//chrome/common/extensions",
    "//chrome/renderer:process_state",
    "//content/public/renderer",
    "//extensions/common:common_constants",
    "//net",
    "//services/metrics/public/cpp:gen_ukm_builders",
    "//services/metrics/public/cpp:metrics_cpp",
    "//services/metrics/public/cpp:ukm_builders",
    "//third_party/blink/public:blink_headers",
    "//url",
  ]

  # TODO(https://crbug.com/356905053): These sources are not currently included
  # in the experimental desktop-android configuration. Gradually include more
  # of them, or omit them behind more targeted GN flags.
  if (enable_extensions) {
    public += [
      "api/accessibility_private_hooks_delegate.h",
      "api/chrome_extensions_renderer_api_provider.h",
      "api/extension_hooks_delegate.h",
      "api/identity_hooks_delegate.h",
      "api/tabs_hooks_delegate.h",
    ]

    sources += [
      "api/accessibility_private_hooks_delegate.cc",
      "api/accessibility_private_hooks_delegate.h",
      "api/app_hooks_delegate.cc",
      "api/app_hooks_delegate.h",
      "api/chrome_extensions_renderer_api_provider.cc",
      "api/extension_hooks_delegate.cc",
      "api/identity_hooks_delegate.cc",
      "api/media_galleries_custom_bindings.cc",
      "api/media_galleries_custom_bindings.h",
      "api/notifications_native_handler.cc",
      "api/notifications_native_handler.h",
      "api/page_capture_custom_bindings.cc",
      "api/page_capture_custom_bindings.h",
      "api/sync_file_system_custom_bindings.cc",
      "api/sync_file_system_custom_bindings.h",
      "api/tabs_hooks_delegate.cc",
    ]

    public_deps += [ "//v8:v8_headers" ]
    deps += [
      "//base:i18n",
      "//build:chromeos_buildflags",
      "//chrome/renderer:resources",
      "//chrome/renderer:resources_grit",
      "//extensions/common:mojom",
      "//gin",
      "//net",
      "//printing/buildflags",
      "//storage/common",
      "//ui/base",
    ]

    if (is_chromeos) {
      sources += [
        "api/file_browser_handler_custom_bindings.cc",
        "api/file_browser_handler_custom_bindings.h",
        "api/platform_keys_natives.cc",
        "api/platform_keys_natives.h",
      ]
      if (use_cups) {
        sources += [
          "api/printing_hooks_delegate.cc",
          "api/printing_hooks_delegate.h",
        ]
      }
    }

    if (is_chromeos_ash) {
      sources += [
        "api/file_manager_private_custom_bindings.cc",
        "api/file_manager_private_custom_bindings.h",
      ]
    }
  }
}