| # 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", |
| ] |
| } |