# 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/extensions/api/api_sources.gni") import("//chrome/common/features.gni") import("//extensions/buildflags/buildflags.gni") import("//tools/json_schema_compiler/json_features.gni") import("//tools/json_schema_compiler/json_schema_api.gni") assert(enable_extensions) # TODO(devlin): Enforce visibility restrictions on more of these targets? json_schema_api("generated_api_bundles") { sources = chrome_extensions_api_schema_sources bundle = true configs = [ "//build/config:precompiled_headers" ] bundle_name = "Chrome" schema_include_rules = chrome_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", "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 = chrome_extensions_api_uncompiled_sources root_namespace = chrome_extensions_api_root_namespace deps = [ "//extensions/common/api", ] visibility = [ ":api" ] } generated_types("generated_api_types") { sources = chrome_extensions_api_schema_sources configs = [ "//build/config:precompiled_headers" ] schema_include_rules = chrome_extensions_api_schema_include_rules root_namespace = chrome_extensions_api_root_namespace deps = [ "//extensions/common/api", ] visibility = [ ":api" ] } json_features("api_features") { feature_type = "APIFeature" method_name = "AddChromeAPIFeatures" sources = [ "_api_features.json", ] } json_features("permission_features") { feature_type = "PermissionFeature" method_name = "AddChromePermissionFeatures" sources = [ "_permission_features.json", ] } json_features("manifest_features") { feature_type = "ManifestFeature" method_name = "AddChromeManifestFeatures" sources = [ "_manifest_features.json", ] } # Public Targets group("api") { public_deps = [ ":generated_api_bundles", ":generated_api_types", ] } group("extensions_features") { public_deps = [ ":api_features", ":manifest_features", ":permission_features", # TODO(devlin): It would be nicer to have this dependency hoisted up to # //extensions/common (since that's where it's consumed), but there's some # cycles to be resolved first. "//extensions/common/api:extensions_features", ] }