blob: cf05bdf3e0d5c110c0ed194252fe7fdd8078a2d5 [file] [log] [blame]
# Copyright 2015 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("//build/config/features.gni")
import("//build/config/ui.gni")
import("//chrome/common/features.gni")
import("//extensions/features/features.gni")
import("//media/media_options.gni")
import("//tools/json_schema_compiler/json_features.gni")
import("//tools/json_schema_compiler/json_schema_api.gni")
assert(enable_extensions)
schema_sources = [
"accessibility_features.json",
"accessibility_private.json",
"activity_log_private.json",
"autofill_private.idl",
"automation.idl",
"automation_internal.idl",
"autotest_private.idl",
"bookmark_manager_private.json",
"bookmarks.json",
"braille_display_private.idl",
"browser.idl",
"chrome_web_view_internal.json",
"cloud_print_private.json",
"command_line_private.json",
"content_settings.json",
"context_menus_internal.json",
"context_menus.json",
"cookies.json",
"cryptotoken_private.idl",
"dashboard_private.json",
"data_reduction_proxy.json",
"debugger.json",
"desktop_capture.json",
"developer_private.idl",
"dial.idl",
"downloads.idl",
"downloads_internal.idl",
"easy_unlock_private.idl",
"experience_sampling_private.json",
"feedback_private.idl",
"file_system.idl",
"font_settings.json",
"gcm.json",
"history.json",
"hotword_private.idl",
"i18n.json",
"identity.idl",
"identity_private.idl",
"image_writer_private.idl",
"inline_install_private.idl",
"instance_id.json",
"language_settings_private.idl",
"manifest_types.json",
"media_galleries.idl",
"notifications.idl",
"omnibox.json",
"page_capture.json",
"passwords_private.idl",
"permissions.json",
"preferences_private.json",
"resources_private.idl",
"screenlock_private.idl",
"sessions.json",
"settings_private.idl",
"signed_in_devices.idl",
"streams_private.idl",
"sync_file_system.idl",
"system_indicator.idl",
"system_private.json",
"tab_capture.idl",
"tabs.json",
"types.json",
"web_navigation.json",
# Despite the name, these APIs do not rely on any WebRTC-specific bits and as
# such do not belong in a conditional.
"webrtc_audio_private.idl",
"webrtc_desktop_capture_private.idl",
"webrtc_logging_private.idl",
"webstore_private.json",
"webstore_widget_private.idl",
"windows.json",
]
if (!is_android) {
schema_sources += [ "processes.idl" ]
}
if (is_chromeos) {
schema_sources += [
"certificate_provider.idl",
"certificate_provider_internal.idl",
"echo_private.json",
"enterprise_device_attributes.idl",
"enterprise_platform_keys.idl",
"enterprise_platform_keys_internal.idl",
"enterprise_platform_keys_private.json",
"file_browser_handler_internal.json",
"file_manager_private.idl",
"file_manager_private_internal.idl",
"file_system_provider.idl",
"file_system_provider_internal.idl",
"first_run_private.json",
"input_ime.json",
"input_method_private.json",
"launcher_search_provider.idl",
"log_private.idl",
"platform_keys.idl",
"platform_keys_internal.idl",
"quick_unlock_private.idl",
"terminal_private.json",
"users_private.idl",
"wallpaper.json",
"wallpaper_private.json",
]
} else if (is_linux || is_win) {
schema_sources += [ "input_ime.json" ]
}
if (enable_service_discovery) {
schema_sources += [
"gcd_private.idl",
"mdns.idl",
]
}
if (enable_webrtc) {
schema_sources += [
"cast_streaming_receiver_session.idl",
"cast_streaming_rtp_stream.idl",
"cast_streaming_session.idl",
"cast_streaming_udp_transport.idl",
]
}
if (enable_app_list) {
schema_sources += [
# TODO(tapted): Move this into chromeos_schema_files.
"launcher_page.idl",
]
}
extensions_api_root_namespace = "extensions::api::%(namespace)s"
extensions_api_uncompiled_sources = [
"browsing_data.json",
"extension.json",
"idltest.idl",
"music_manager_private.idl",
"top_sites.json",
]
if (is_chromeos) {
extensions_api_uncompiled_sources += [
"chromeos_info_private.json",
"media_player_private.json",
]
}
extensions_api_schema_include_rules =
"extensions/common/api:extensions::api::%(namespace)s"
json_schema_api("api") {
sources = schema_sources
schemas = true
bundle = true
configs = [ "//build/config:precompiled_headers" ]
bundle_name = "Chrome"
schema_include_rules = extensions_api_schema_include_rules
uncompiled_bundle_schema_sources = [
"app.json",
"browser_action.json",
"commands.json",
"declarative_content.json",
"page_action.json",
"privacy.json",
"proxy.json",
"tts_engine.json",
"tts.json",
"types_private.json",
"webstore.json",
]
if (is_chromeos) {
uncompiled_bundle_schema_sources += [ "file_browser_handler.json" ]
} else {
# On ChromeOS, input_method_private is fully compiled (as part of
# schema_files), and so gets added to the bundle already. On other
# platforms, we still need it added to the bundle.
# TODO(devlin): That's weird. Investigate.
uncompiled_bundle_schema_sources += [ "input_method_private.json" ]
}
uncompiled_sources = extensions_api_uncompiled_sources
root_namespace = extensions_api_root_namespace
deps = [
"//extensions/common/api",
]
}
json_schema_api("api_registration") {
sources = schema_sources
impl_dir = "//chrome/browser/extensions/api"
bundle_registration = true
configs = [ "//build/config:precompiled_headers" ]
bundle_name = "Chrome"
root_namespace = extensions_api_root_namespace
schema_include_rules = extensions_api_schema_include_rules
uncompiled_sources = extensions_api_uncompiled_sources
deps = [
# Different APIs include headers from these targets.
"//content/public/browser",
"//extensions/browser",
# 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.
":api",
"//components/metrics/proto",
"//components/sync",
"//skia",
"//ui/accessibility:ax_gen",
]
if (is_chromeos) {
deps += [ "//components/drive:proto" ]
}
deps += [ "//extensions/common/api" ]
}
json_features("api_features") {
feature_type = "APIFeature"
provider_class = "APIFeatureProvider"
sources = [
"../../../../extensions/common/api/_api_features.json",
"_api_features.json",
]
}
json_features("permission_features") {
feature_type = "PermissionFeature"
provider_class = "PermissionFeatureProvider"
sources = [
"../../../../extensions/common/api/_permission_features.json",
"_permission_features.json",
]
}
json_features("manifest_features") {
feature_type = "ManifestFeature"
provider_class = "ManifestFeatureProvider"
sources = [
"../../../../extensions/common/api/_manifest_features.json",
"_manifest_features.json",
]
}
json_features("behavior_features") {
feature_type = "BehaviorFeature"
provider_class = "BehaviorFeatureProvider"
sources = [
"../../../../extensions/common/api/_behavior_features.json",
]
}
group("extensions_features") {
public_deps = [
":api_features",
":behavior_features",
":manifest_features",
":permission_features",
]
}