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