• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_applicable_licenses: ["Android-Apache-2.0"],
17}
18
19java_defaults {
20    name: "wifi-module-sdk-version-defaults",
21    min_sdk_version: "30",
22    target_sdk_version: "31",
23}
24
25filegroup {
26    name: "framework-wifi-updatable-exported-aidl-sources",
27    srcs: ["aidl-export/**/*.aidl"],
28    path: "aidl-export",
29    visibility: ["//visibility:private"],
30}
31
32filegroup {
33    name: "framework-wifi-updatable-java-sources",
34    srcs: [
35        "java/**/*.java",
36        "java/**/*.aidl",
37    ],
38    path: "java",
39    visibility: ["//visibility:private"],
40}
41
42filegroup {
43    name: "framework-wifi-updatable-sources",
44    srcs: [
45        ":framework-wifi-updatable-java-sources",
46        ":framework-wifi-updatable-exported-aidl-sources",
47        ":module-utils-os-aidls",
48    ],
49}
50
51filegroup {
52    name: "framework-wifi-annotations",
53    srcs: ["java/android/net/wifi/WifiAnnotations.java"],
54}
55
56// list of tests that are allowed to access @hide APIs from framework-wifi
57test_access_hidden_api_whitelist = [
58    "//frameworks/base/wifi/tests",
59    "//frameworks/base/wifi/non-updatable/tests",
60    "//frameworks/opt/net/wifi/tests/wifitests:__subpackages__",
61
62    "//packages/modules/Wifi/framework/tests",
63    "//packages/modules/Wifi/service/tests/wifitests:__subpackages__",
64
65    "//external/robolectric-shadows:__subpackages__",
66    "//frameworks/base/packages/SettingsLib/tests/integ",
67    "//external/sl4a:__subpackages__",
68]
69
70// defaults shared between `framework-wifi` & `framework-wifi-pre-jarjar`
71// java_sdk_library `framework-wifi` needs sources to generate stubs, so it cannot reuse
72// `framework-wifi-pre-jarjar`
73java_defaults {
74    name: "framework-wifi-defaults",
75    defaults: ["wifi-module-sdk-version-defaults"],
76    static_libs: [
77        "framework-wifi-util-lib",
78        "android.hardware.wifi-V1.0-java-constants",
79        "modules-utils-build",
80        "modules-utils-os",
81        "androidx.annotation_annotation",
82    ],
83    libs: [
84        "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
85        "framework-connectivity.stubs.module_lib",
86    ],
87    aidl: {
88        include_dirs: [
89            "packages/modules/Connectivity/framework/aidl-export",
90        ],
91    },
92    srcs: [
93        ":framework-wifi-updatable-sources",
94        ":module-utils-os-aidls",
95    ],
96}
97
98// wifi-service needs pre-jarjared version of framework-wifi so it can reference copied utility
99// classes before they are renamed.
100java_library {
101    name: "framework-wifi-pre-jarjar",
102    defaults: ["framework-wifi-defaults"],
103    sdk_version: "module_current",
104    libs: ["framework-annotations-lib"],
105    // java_api_finder must accompany `srcs` (`srcs` defined in `framework-wifi-defaults`)
106    plugins: ["java_api_finder"],
107    installable: false,
108    visibility: [
109        "//frameworks/opt/net/wifi/service",
110        "//frameworks/opt/net/wifi/tests/wifitests",
111        "//packages/modules/Wifi/service",
112        "//packages/modules/Wifi/service/tests/wifitests",
113    ],
114}
115
116// post-jarjar version of framework-wifi
117java_sdk_library {
118    name: "framework-wifi",
119    defaults: [
120        "framework-module-defaults",
121        "framework-wifi-defaults",
122    ],
123
124    stub_only_libs: ["framework-connectivity.stubs.module_lib"],
125
126    jarjar_rules: ":wifi-jarjar-rules",
127
128    installable: true,
129    optimize: {
130        enabled: false
131    },
132    hostdex: true, // for hiddenapi check
133
134    // Restrict access to implementation library.
135    impl_library_visibility: [
136        "//frameworks/opt/net/wifi/service:__subpackages__",
137        "//packages/modules/Wifi/service:__subpackages__",
138    ] + test_access_hidden_api_whitelist,
139
140    apex_available: [
141        "com.android.wifi",
142        "test_com.android.wifi",
143    ],
144    permitted_packages: [
145        "android.hardware.wifi",
146        "android.net.wifi",
147        // Created by jarjar rules.
148        "com.android.wifi.x",
149    ],
150    lint: {
151        strict_updatability_linting: true,
152    },
153}
154
155// defaults for tests that need to build against framework-wifi's @hide APIs
156java_defaults {
157    name: "framework-wifi-test-defaults",
158    sdk_version: "core_current",
159    libs: [
160        // order matters: classes in framework-wifi are resolved before framework, meaning
161        // @hide APIs in framework-wifi are resolved before @SystemApi stubs in framework
162        "framework-wifi.impl",
163        "framework",
164
165        // if sdk_version="" this gets automatically included, but here we need to add manually.
166        "framework-res",
167    ],
168    visibility: test_access_hidden_api_whitelist,
169}
170
171filegroup {
172    name: "wifi-jarjar-rules",
173    srcs: ["jarjar-rules.txt"],
174}
175