blob: 2f3b9289edf203980e8ae8dfa73398935c7b1f71 [file] [log] [blame]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//third_party/blink/renderer/bindings/bindings.gni")
import("//third_party/blink/renderer/config.gni")
# The paths in this file are absolute since this file is imported and the
# file lists must be valid from multiple "current directories".
# IDL files for a module are defined by idls.gni in the module's corresponding
# directory. idls.gni can define certain variables to add additional IDL files
# to the build.
#
# modules_idl_files = [
# # IDL files that don't fit in one of the below categories. Typically
# # (but not required to) defines interfaces.
# # Spec reference: https://heycam.github.io/webidl/#idl-interfaces
# ]
#
# modules_callback_function_idl_files = [
# # IDL files that only define callback functions (note: these are distinct
# # from callback interfaces).
# # Spec reference: https://heycam.github.io/webidl/#dfn-callback-function).
# # TODO(dcheng): Figure out why this is its own category.
# ]
#
# modules_dictionary_idl_files = [
# # IDL files that define dictionaries and any supporting types (such as
# # enums) for the dictionaries.
# # Spec reference: https://heycam.github.io/webidl/#idl-dictionaries
# ]
#
# modules_dependency_idl_files = [
# # IDL files that either define partial interfaces or target (right side
# # of) `includes`.
# # Spec reference: https://heycam.github.io/webidl/#dfn-partial-interface
# # Spec reference: https://heycam.github.io/webidl/#idl-interface-mixins
# ]
#
# modules_testing_dependency_idl_files = [
# # Similar to |modules_dependency_idl_files| but limited to things that are
# # exposed only for testing.
# ]
#
# modules_typedefs_enums_only_idl_files = [
# # IDL files that only have typedefs/enums.
# ]
_idl_imports = [
"//third_party/blink/renderer/modules/accessibility/idls.gni",
"//third_party/blink/renderer/modules/animationworklet/idls.gni",
"//third_party/blink/renderer/modules/app_banner/idls.gni",
"//third_party/blink/renderer/modules/audio_output_devices/idls.gni",
"//third_party/blink/renderer/modules/background_fetch/idls.gni",
"//third_party/blink/renderer/modules/background_sync/idls.gni",
"//third_party/blink/renderer/modules/badging/idls.gni",
"//third_party/blink/renderer/modules/battery/idls.gni",
"//third_party/blink/renderer/modules/beacon/idls.gni",
"//third_party/blink/renderer/modules/bluetooth/idls.gni",
"//third_party/blink/renderer/modules/broadcastchannel/idls.gni",
"//third_party/blink/renderer/modules/buckets/idls.gni",
"//third_party/blink/renderer/modules/cache_storage/idls.gni",
"//third_party/blink/renderer/modules/canvas/idls.gni",
"//third_party/blink/renderer/modules/clipboard/idls.gni",
"//third_party/blink/renderer/modules/compression/idls.gni",
"//third_party/blink/renderer/modules/contacts_picker/idls.gni",
"//third_party/blink/renderer/modules/content_index/idls.gni",
"//third_party/blink/renderer/modules/cookie_store/idls.gni",
"//third_party/blink/renderer/modules/credentialmanager/idls.gni",
"//third_party/blink/renderer/modules/crypto/idls.gni",
"//third_party/blink/renderer/modules/csspaint/idls.gni",
"//third_party/blink/renderer/modules/delegated_ink/idls.gni",
"//third_party/blink/renderer/modules/device/idls.gni",
"//third_party/blink/renderer/modules/device_orientation/idls.gni",
"//third_party/blink/renderer/modules/donottrack/idls.gni",
"//third_party/blink/renderer/modules/encoding/idls.gni",
"//third_party/blink/renderer/modules/encryptedmedia/idls.gni",
"//third_party/blink/renderer/modules/eventsource/idls.gni",
"//third_party/blink/renderer/modules/eyedropper/idls.gni",
"//third_party/blink/renderer/modules/filesystem/idls.gni",
"//third_party/blink/renderer/modules/file_system_access/idls.gni",
"//third_party/blink/renderer/modules/font_access/idls.gni",
"//third_party/blink/renderer/modules/gamepad/idls.gni",
"//third_party/blink/renderer/modules/geolocation/idls.gni",
"//third_party/blink/renderer/modules/handwriting/idls.gni",
"//third_party/blink/renderer/modules/hid/idls.gni",
"//third_party/blink/renderer/modules/idle/idls.gni",
"//third_party/blink/renderer/modules/imagecapture/idls.gni",
"//third_party/blink/renderer/modules/indexeddb/idls.gni",
"//third_party/blink/renderer/modules/installedapp/idls.gni",
"//third_party/blink/renderer/modules/keyboard/idls.gni",
"//third_party/blink/renderer/modules/launch/idls.gni",
"//third_party/blink/renderer/modules/locks/idls.gni",
"//third_party/blink/renderer/modules/manifest/idls.gni",
"//third_party/blink/renderer/modules/media_capabilities/idls.gni",
"//third_party/blink/renderer/modules/mediacapturefromelement/idls.gni",
"//third_party/blink/renderer/modules/mediarecorder/idls.gni",
"//third_party/blink/renderer/modules/mediasession/idls.gni",
"//third_party/blink/renderer/modules/mediasource/idls.gni",
"//third_party/blink/renderer/modules/mediastream/idls.gni",
"//third_party/blink/renderer/modules/modalclosewatcher/idls.gni",
"//third_party/blink/renderer/modules/native_io/idls.gni",
"//third_party/blink/renderer/modules/navigatorcontentutils/idls.gni",
"//third_party/blink/renderer/modules/netinfo/idls.gni",
"//third_party/blink/renderer/modules/nfc/idls.gni",
"//third_party/blink/renderer/modules/notifications/idls.gni",
"//third_party/blink/renderer/modules/payments/idls.gni",
"//third_party/blink/renderer/modules/payments/goods/idls.gni",
"//third_party/blink/renderer/modules/peerconnection/idls.gni",
"//third_party/blink/renderer/modules/permissions/idls.gni",
"//third_party/blink/renderer/modules/picture_in_picture/idls.gni",
"//third_party/blink/renderer/modules/plugins/idls.gni",
"//third_party/blink/renderer/modules/presentation/idls.gni",
"//third_party/blink/renderer/modules/push_messaging/idls.gni",
"//third_party/blink/renderer/modules/quota/idls.gni",
"//third_party/blink/renderer/modules/remoteplayback/idls.gni",
"//third_party/blink/renderer/modules/sanitizer_api/idls.gni",
"//third_party/blink/renderer/modules/scheduler/idls.gni",
"//third_party/blink/renderer/modules/screen_enumeration/idls.gni",
"//third_party/blink/renderer/modules/screen_orientation/idls.gni",
"//third_party/blink/renderer/modules/sensor/idls.gni",
"//third_party/blink/renderer/modules/service_worker/idls.gni",
"//third_party/blink/renderer/modules/shapedetection/idls.gni",
"//third_party/blink/renderer/modules/speech/idls.gni",
"//third_party/blink/renderer/modules/srcobject/idls.gni",
"//third_party/blink/renderer/modules/storage/idls.gni",
"//third_party/blink/renderer/modules/url_pattern/idls.gni",
"//third_party/blink/renderer/modules/vibration/idls.gni",
"//third_party/blink/renderer/modules/video_rvfc/idls.gni",
"//third_party/blink/renderer/modules/virtualkeyboard/idls.gni",
"//third_party/blink/renderer/modules/wake_lock/idls.gni",
"//third_party/blink/renderer/modules/webaudio/idls.gni",
"//third_party/blink/renderer/modules/webcodecs/idls.gni",
"//third_party/blink/renderer/modules/webdatabase/idls.gni",
"//third_party/blink/renderer/modules/webgl/idls.gni",
"//third_party/blink/renderer/modules/webgpu/idls.gni",
"//third_party/blink/renderer/modules/webid/idls.gni",
"//third_party/blink/renderer/modules/webmidi/idls.gni",
"//third_party/blink/renderer/modules/webshare/idls.gni",
"//third_party/blink/renderer/modules/websockets/idls.gni",
"//third_party/blink/renderer/modules/webtransport/idls.gni",
"//third_party/blink/renderer/modules/webusb/idls.gni",
"//third_party/blink/renderer/modules/xr/idls.gni",
]
# TODO(dcheng): For whatever reason, is_android doesn't seem to be defined, even
# if using import() instead of read_file() in the foreach() loop below...
if (!is_android) {
_idl_imports += [
"//third_party/blink/renderer/modules/direct_sockets/idls.gni",
"//third_party/blink/renderer/modules/serial/idls.gni",
]
}
# Do not add IDL files directly to these lists. See _idl_imports above instead
# on how to add IDL files for a module.
modules_idl_files = []
modules_callback_function_idl_files = []
modules_dictionary_idl_files = []
modules_dependency_idl_files = []
modules_testing_dependency_idl_files = []
modules_typedefs_enums_only_idl_files = []
foreach(idl_import, _idl_imports) {
# Avoid reassignment error by assigning to empty scope first.
_imported = {
}
_imported = read_file(idl_import, "scope")
# Paths are potentially relative to the location of the .gni. Rebase them
# relative to "." so get_path_info() works as expected.
gni_dir = get_path_info(idl_import, "dir")
if (defined(_imported.modules_idl_files)) {
modules_idl_files +=
get_path_info(rebase_path(_imported.modules_idl_files, ".", gni_dir),
"abspath")
}
if (defined(_imported.modules_callback_function_idl_files)) {
modules_callback_function_idl_files +=
get_path_info(rebase_path(_imported.modules_callback_function_idl_files,
".",
gni_dir),
"abspath")
}
if (defined(_imported.modules_dictionary_idl_files)) {
modules_dictionary_idl_files +=
get_path_info(
rebase_path(_imported.modules_dictionary_idl_files, ".", gni_dir),
"abspath")
}
if (defined(_imported.modules_dependency_idl_files)) {
modules_dependency_idl_files +=
get_path_info(
rebase_path(_imported.modules_dependency_idl_files, ".", gni_dir),
"abspath")
}
if (defined(_imported.modules_testing_dependency_idl_files)) {
modules_testing_dependency_idl_files +=
get_path_info(
rebase_path(_imported.modules_testing_dependency_idl_files,
".",
gni_dir),
"abspath")
}
if (defined(_imported.modules_typedefs_enums_only_idl_files)) {
modules_typedefs_enums_only_idl_files +=
get_path_info(
rebase_path(_imported.modules_typedefs_enums_only_idl_files,
".",
gni_dir),
"abspath")
}
}
bindings_modules_output_dir = "$bindings_output_dir/modules"
blink_modules_output_dir = "$root_gen_dir/third_party/blink/renderer/modules"
modules_core_global_constructors_original_interfaces = [
"AnimationWorkletGlobalScope",
"AudioWorkletGlobalScope",
"PaintWorkletGlobalScope",
"ServiceWorkerGlobalScope",
]
# The size and the order in the following list must match to the previous one.
modules_core_global_constructors_original_interface_basenames = [
"animation_worklet_global_scope",
"audio_worklet_global_scope",
"paint_worklet_global_scope",
"service_worker_global_scope",
]
modules_global_constructors_original_interfaces = [
"AnimationWorkletGlobalScope",
"AudioWorkletGlobalScope",
"DedicatedWorkerGlobalScope",
"PaintWorkletGlobalScope",
"ServiceWorkerGlobalScope",
"SharedWorkerGlobalScope",
"Window",
]
# The size and the order in the following list must match to the previous one.
modules_global_constructors_original_interface_basenames = [
"animation_worklet_global_scope",
"audio_worklet_global_scope",
"dedicated_worker_global_scope",
"paint_worklet_global_scope",
"service_worker_global_scope",
"shared_worker_global_scope",
"window",
]
# The interfaces aren't technically files, but we can treat them as file names
# to get process_file_template to generate lists of IDL files corresponding
# to each interface.
modules_core_global_constructors_generated_idl_files = process_file_template(
modules_core_global_constructors_original_interface_basenames,
[ "$blink_modules_output_dir/{{source_name_part}}_core_constructors.idl" ])
modules_global_constructors_generated_idl_files = process_file_template(
modules_global_constructors_original_interface_basenames,
[ "$blink_modules_output_dir/{{source_name_part}}_modules_constructors.idl" ])
modules_definition_idl_files = modules_dictionary_idl_files + modules_idl_files
# Static IDL files
modules_static_interface_idl_files =
modules_callback_function_idl_files + modules_typedefs_enums_only_idl_files
modules_static_dependency_idl_files =
modules_dependency_idl_files + modules_testing_dependency_idl_files
if (use_blink_v8_binding_new_idl_interface) {
modules_generated_dependency_idl_files = []
} else {
modules_generated_dependency_idl_files =
modules_core_global_constructors_generated_idl_files +
modules_global_constructors_generated_idl_files
}
# 'modules_dependency_idl_files' is already used in Source/modules, so avoid
# collision
modules_all_dependency_idl_files =
modules_static_dependency_idl_files + modules_generated_dependency_idl_files