1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
|
# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//chrome/common/extensions/api/api_sources.gni")
import("//chrome/common/features.gni")
import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")
import("//tools/json_schema_compiler/json_schema_api.gni")
assert(enable_extensions_core,
"Cannot depend on extensions because enable_extensions_core=false.")
# This should be:
# The set of all targets needed to build out the extension API implementations
# and any necessary steps to register or instantiate them.
# Embedders should usually depend on this.
# Right now, there's currently a number of other targets that are (not ideally)
# sharded out. See https://crbug.com/883570.
group("api") {
public_deps = [ "//chrome/browser/extensions/api:api_implementations" ]
}
# The collection of API implementations.
group("api_implementations") {
# APIs supported on Win/Mac/Linux and desktop Android go here.
# TODO(https://crbug.com/356905053): Add more APIs here.
public_deps = [
"//chrome/browser/extensions/api/activity_log_private",
"//chrome/browser/extensions/api/browsing_data",
"//chrome/browser/extensions/api/cookies",
"//chrome/browser/extensions/api/extension_action",
"//chrome/browser/extensions/api/module",
"//chrome/browser/extensions/api/notifications",
"//chrome/browser/extensions/api/runtime",
"//chrome/browser/extensions/api/scripting",
]
if (enable_extensions) {
# APIs supported on Win/Mac/Linux but NOT desktop Android go here.
# TODO(crbug.com/40245282): Add more API implementations here.
public_deps += [
"//chrome/browser/extensions/api/autofill_private",
"//chrome/browser/extensions/api/braille_display_private",
"//chrome/browser/extensions/api/command_line_private",
"//chrome/browser/extensions/api/content_settings",
"//chrome/browser/extensions/api/context_menus",
"//chrome/browser/extensions/api/debugger",
"//chrome/browser/extensions/api/desktop_capture",
"//chrome/browser/extensions/api/downloads_internal",
"//chrome/browser/extensions/api/enterprise_hardware_platform",
"//chrome/browser/extensions/api/experimental_actor",
"//chrome/browser/extensions/api/experimental_ai_data",
"//chrome/browser/extensions/api/font_settings",
"//chrome/browser/extensions/api/idltest",
"//chrome/browser/extensions/api/networking_private",
"//chrome/browser/extensions/api/omnibox",
"//chrome/browser/extensions/api/page_capture",
"//chrome/browser/extensions/api/permissions",
"//chrome/browser/extensions/api/preference",
"//chrome/browser/extensions/api/processes",
"//chrome/browser/extensions/api/proxy",
"//chrome/browser/extensions/api/reading_list",
"//chrome/browser/extensions/api/resources_private",
"//chrome/browser/extensions/api/safe_browsing_private",
"//chrome/browser/extensions/api/search",
"//chrome/browser/extensions/api/settings_overrides",
"//chrome/browser/extensions/api/side_panel",
"//chrome/browser/extensions/api/tab_capture",
"//chrome/browser/extensions/api/tab_groups",
"//chrome/browser/extensions/api/web_authentication_proxy",
"//chrome/browser/extensions/api/web_navigation",
"//chrome/browser/extensions/api/web_view",
"//chrome/browser/extensions/api/webrtc_audio_private",
"//chrome/browser/extensions/api/webrtc_desktop_capture_private",
"//chrome/browser/extensions/api/webrtc_logging_private",
]
if (enable_pdf) {
public_deps += [ "//chrome/browser/extensions/api/pdf_viewer_private" ]
}
if (enable_service_discovery) {
public_deps += [ "//chrome/browser/extensions/api/mdns" ]
}
if (is_chromeos) {
public_deps += [
"//chrome/browser/chromeos/extensions/smart_card_provider_private",
"//chrome/browser/extensions/api/crash_report_private",
"//chrome/browser/extensions/api/document_scan",
"//chrome/browser/extensions/api/enterprise_device_attributes",
"//chrome/browser/extensions/api/enterprise_kiosk_input",
"//chrome/browser/extensions/api/enterprise_networking_attributes",
"//chrome/browser/extensions/api/enterprise_platform_keys",
"//chrome/browser/extensions/api/enterprise_platform_keys_private",
"//chrome/browser/extensions/api/input_ime",
"//chrome/browser/extensions/api/platform_keys",
"//chrome/browser/extensions/api/quick_unlock_private",
"//chrome/browser/extensions/api/terminal",
]
}
} # if (enable_extensions)
}
# The step necessary to generate the code to register the corresponding
# ExtensionFunctions in order to map the function string name with their
# implementation.
function_registration("api_registration") {
sources = chrome_extensions_api_schema_sources +
chrome_extensions_api_uncompiled_sources
impl_dir = "//chrome/browser/extensions/api"
configs = [ "//build/config:precompiled_headers" ]
bundle_name = "Chrome"
root_namespace = chrome_extensions_api_root_namespace
schema_include_rules = chrome_extensions_api_schema_include_rules
deps = [
# This is not directly included by the target, but specified here
# to avoid cyclic dependency chain related to private_membership
# protos.
"//components/policy/proto",
# Different APIs include headers from these targets.
"//chrome/browser/ai",
"//chrome/common",
"//chrome/common:mojo_bindings",
"//components/autofill/core/common/mojom:mojo_types",
"//components/omnibox/browser",
"//components/translate/core/browser",
"//components/zoom",
"//content/public/browser",
"//extensions/browser",
"//extensions/browser/api:api_implementations",
"//extensions/common/api",
# Different APIs include some headers from chrome/common that in turn
# include generated headers from these targets.
# TODO(brettw) this should be made unnecessary if possible.
"//chrome/common/extensions/api",
"//components/sync",
"//skia",
"//third_party/metrics_proto",
"//ui/accessibility:ax_enums_mojo",
]
if (is_chromeos) {
deps += [
"//chrome/browser/ash/extensions/autotest_private",
"//chrome/browser/ash/extensions/file_manager",
# TODO: We should pull these out into a separate build and function
# generation step so that //chrome/browser/extensions has fewer
# dependencies on //chrome/browser/chromeos.
"//chrome/browser/chromeos/extensions/accessibility_service_private",
"//chrome/browser/chromeos/extensions/info_private",
"//chrome/browser/chromeos/extensions/login_screen/login_screen_storage",
"//chrome/browser/chromeos/extensions/system_log",
"//chrome/browser/chromeos/extensions/wallpaper",
]
}
}
# KeyedService factories initialization.
source_set("keyed_service_factories") {
sources = [
"api_browser_context_keyed_service_factories.cc",
"api_browser_context_keyed_service_factories.h",
]
deps = [
":api_implementations",
"//chrome/browser/extensions",
"//chrome/common:buildflags",
"//components/safe_browsing:buildflags",
"//extensions/buildflags",
"//pdf:buildflags",
"//printing/buildflags",
]
if (is_chromeos) {
deps += [
"//chrome/browser/chromeos/extensions/login_screen/login_state",
"//chrome/browser/chromeos/extensions/wm",
]
}
}
if (is_win) {
# The files below are required to exercise the code that properly launches
# Native Hosts with paths containing characters that are problematic for
# cmd.exe. crbug.com/335558
executable("native_messaging_test_echo_host") {
testonly = true
sources = [ "messaging/native_messaging_test_echo_host.cc" ]
deps = [ "//base" ]
}
copy("native_messaging_test_echo_&_host") {
testonly = true
src_tool = ":native_messaging_test_echo_host"
sources = [ get_label_info(src_tool, "root_out_dir") +
"/native_messaging_test_echo_host.exe" ]
outputs = [ "$root_build_dir/native_messaging_test_echo_&_host.exe" ]
deps = [ src_tool ]
}
copy("native_messaging_test_echo_space_host") {
testonly = true
src_tool = ":native_messaging_test_echo_host"
sources = [ get_label_info(src_tool, "root_out_dir") +
"/native_messaging_test_echo_host.exe" ]
outputs = [ "$root_build_dir/native_messaging_test_echo_ _host.exe" ]
deps = [ src_tool ]
}
}
|