|  | // Copyright (C) 2019 The Android Open Source Project | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //     http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | mainline_stubs_args = | 
|  | "--error UnhiddenSystemApi " + | 
|  | "--hide BroadcastBehavior " + | 
|  | "--hide DeprecationMismatch " + | 
|  | "--hide HiddenSuperclass " + | 
|  | "--hide HiddenTypedefConstant " + | 
|  | "--hide HiddenTypeParameter " + | 
|  | "--hide MissingPermission " + | 
|  | "--hide RequiresPermission " + | 
|  | "--hide SdkConstant " + | 
|  | "--hide Todo " + | 
|  | "--hide Typo " + | 
|  | "--hide UnavailableSymbol " | 
|  |  | 
|  | // TODO: modularize this so not every module has the same whitelist | 
|  | framework_packages_to_document = [ | 
|  | "android", | 
|  | "dalvik", | 
|  | "java", | 
|  | "javax", | 
|  | "junit", | 
|  | "org.apache.http", | 
|  | "org.json", | 
|  | "org.w3c.dom", | 
|  | "org.xml.sax", | 
|  | "org.xmlpull", | 
|  | ] | 
|  |  | 
|  | // TODO: remove the hiding when server classes are cleaned up. | 
|  | mainline_framework_stubs_args = | 
|  | mainline_stubs_args + | 
|  | "--hide-package com.android.server " | 
|  |  | 
|  | priv_apps = " " + | 
|  | "--show-annotation android.annotation.SystemApi\\(" + | 
|  | "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + | 
|  | "\\) " | 
|  |  | 
|  | module_libs = " " + | 
|  | " --show-annotation android.annotation.SystemApi\\(" + | 
|  | "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" + | 
|  | "\\)" + | 
|  | " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" + | 
|  | "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + | 
|  | "\\) " | 
|  |  | 
|  | mainline_service_stubs_args = | 
|  | mainline_stubs_args + | 
|  | "--show-annotation android.annotation.SystemApi\\(" + | 
|  | "client=android.annotation.SystemApi.Client.SYSTEM_SERVER" + | 
|  | "\\) " + | 
|  | "--hide-annotation android.annotation.Hide " + | 
|  | "--hide InternalClasses " // com.android.* classes are okay in this interface | 
|  |  | 
|  | // Defaults common to all mainline module java_sdk_library instances. | 
|  | java_defaults { | 
|  | name: "framework-module-common-defaults", | 
|  |  | 
|  | // Additional annotations used for compiling both the implementation and the | 
|  | // stubs libraries. | 
|  | libs: ["framework-annotations-lib"], | 
|  |  | 
|  | // Framework modules are not generally shared libraries, i.e. they are not | 
|  | // intended, and must not be allowed, to be used in a <uses-library> manifest | 
|  | // entry. | 
|  | shared_library: false, | 
|  |  | 
|  | // Prevent dependencies that do not specify an sdk_version from accessing the | 
|  | // implementation library by default and force them to use stubs instead. | 
|  | default_to_stubs: true, | 
|  |  | 
|  | // Enable api lint. This will eventually become the default for java_sdk_library | 
|  | // but it cannot yet be turned on because some usages have not been cleaned up. | 
|  | // TODO(b/156126315) - Remove when no longer needed. | 
|  | api_lint: { | 
|  | enabled: true, | 
|  | }, | 
|  |  | 
|  | // The API scope specific properties. | 
|  | public: { | 
|  | enabled: true, | 
|  | sdk_version: "module_current", | 
|  | }, | 
|  |  | 
|  | // Configure framework module specific metalava options. | 
|  | droiddoc_options: [mainline_stubs_args], | 
|  |  | 
|  | annotations_enabled: true, | 
|  |  | 
|  | // Allow access to the stubs from anywhere | 
|  | visibility: ["//visibility:public"], | 
|  | stubs_library_visibility: ["//visibility:public"], | 
|  |  | 
|  | // Hide impl library and stub sources | 
|  | impl_library_visibility: [ | 
|  | ":__pkg__", | 
|  | "//frameworks/base", // For framework-all | 
|  | ], | 
|  | stubs_source_visibility: ["//visibility:private"], | 
|  |  | 
|  | // Collates API usages from each module for further analysis. | 
|  | plugins: ["java_api_finder"], | 
|  |  | 
|  | // Mainline modules should only rely on 'module_lib' APIs provided by other modules | 
|  | // and the non updatable parts of the platform. | 
|  | sdk_version: "module_current", | 
|  | } | 
|  |  | 
|  | // Defaults for mainline module provided java_sdk_library instances. | 
|  | java_defaults { | 
|  | name: "framework-module-defaults", | 
|  | defaults: ["framework-module-common-defaults"], | 
|  |  | 
|  | system: { | 
|  | enabled: true, | 
|  | sdk_version: "module_current", | 
|  | }, | 
|  | module_lib: { | 
|  | enabled: true, | 
|  | sdk_version: "module_current", | 
|  | }, | 
|  | } | 
|  |  | 
|  | // Defaults for mainline module system server provided java_sdk_library instances. | 
|  | java_defaults { | 
|  | name: "framework-system-server-module-defaults", | 
|  | defaults: ["framework-module-common-defaults"], | 
|  |  | 
|  | system_server: { | 
|  | enabled: true, | 
|  | sdk_version: "module_current", | 
|  | }, | 
|  | } | 
|  |  | 
|  | stubs_defaults { | 
|  | name: "service-module-stubs-srcs-defaults", | 
|  | args: mainline_service_stubs_args, | 
|  | installable: false, | 
|  | annotations_enabled: true, | 
|  | merge_annotations_dirs: [ | 
|  | "metalava-manual", | 
|  | ], | 
|  | filter_packages: ["com.android."], | 
|  | check_api: { | 
|  | current: { | 
|  | api_file: "api/current.txt", | 
|  | removed_api_file: "api/removed.txt", | 
|  | }, | 
|  | api_lint: { | 
|  | enabled: true, | 
|  | }, | 
|  | }, | 
|  | dist: { | 
|  | targets: ["sdk", "win_sdk"], | 
|  | dir: "apistubs/android/system-server/api", | 
|  | }, | 
|  | } | 
|  |  | 
|  | // Empty for now, but a convenient place to add rules for all | 
|  | // module java_library system_server stub libs. | 
|  | java_defaults { | 
|  | name: "service-module-stubs-defaults", | 
|  | dist: { | 
|  | targets: ["sdk", "win_sdk"], | 
|  | dir: "apistubs/android/system-server", | 
|  | }, | 
|  | } |