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_team: "trendy_team_fwk_wifi_hal",
17    default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
20java_defaults {
21    name: "wifi-module-sdk-version-defaults",
22    min_sdk_version: "30",
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    device_common_srcs: [
45        ":framework-wifi-updatable-java-sources",
46        ":framework-wifi-updatable-exported-aidl-sources",
47        ":module-utils-os-aidls",
48        ":wifi_framework_aconfig_flags_lib{.generated_srcjars}",
49    ],
50}
51
52filegroup {
53    name: "framework-wifi-annotations",
54    srcs: ["java/android/net/wifi/WifiAnnotations.java"],
55}
56
57filegroup {
58    name: "wifi_javadoc_only_files",
59    srcs: [
60        "java/android/net/wifi/package.html",
61        "java/android/net/wifi/rtt/package.html",
62        "java/android/net/wifi/p2p/package.html",
63        "java/android/net/wifi/aware/package.html",
64    ],
65    path: "java/android/net/wifi",
66}
67
68// list of tests that are allowed to access @hide APIs from framework-wifi
69test_access_hidden_api_whitelist = [
70    "//frameworks/base/wifi/tests",
71    "//frameworks/base/wifi/non-updatable/tests",
72    "//frameworks/opt/net/wifi/tests/wifitests:__subpackages__",
73
74    "//packages/modules/Wifi/framework/tests",
75    "//packages/modules/Wifi/service/tests/wifitests:__subpackages__",
76
77    "//external/robolectric-shadows:__subpackages__",
78    "//frameworks/base/packages/SettingsLib/tests/integ",
79    "//external/sl4a:__subpackages__",
80]
81
82java_library {
83    name: "wifi-modules-utils",
84    sdk_version: "module_current",
85    min_sdk_version: "30",
86    static_libs: [
87        "modules-utils-build",
88        "modules-utils-handlerexecutor",
89        "modules-utils-list-slice",
90        "modules-utils-preconditions",
91        "modules-utils-shell-command-handler",
92        "modules-utils-statemachine",
93    ],
94    apex_available: [
95        "com.android.wifi",
96        "test_com.android.wifi",
97    ],
98}
99
100// defaults shared between `framework-wifi` & `framework-wifi-pre-jarjar`
101// java_sdk_library `framework-wifi` needs sources to generate stubs, so it cannot reuse
102// `framework-wifi-pre-jarjar`
103java_defaults {
104    name: "framework-wifi-defaults",
105    defaults: ["wifi-module-sdk-version-defaults"],
106    static_libs: [
107        "framework-wifi-util-lib",
108        "net-utils-framework-wifi",
109        "android.hardware.wifi-V1.0-java-constants",
110        "wifi-modules-utils",
111        "PlatformProperties",
112        "android.net.wifi.flags-aconfig-java",
113        "ranging_aconfig_flags_lib",
114    ],
115    libs: [
116        "androidx.annotation_annotation",
117        "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
118        "app-compat-annotations",
119        // Add aconfig-annotations-lib as a dependency for the optimization
120        "aconfig-annotations-lib",
121        // library for generated flag code read new storage
122        "aconfig_storage_stub",
123        "framework-configinfrastructure.stubs.module_lib",
124        "android.security.flags-aconfig-java-export",
125    ],
126    aidl: {
127        generate_get_transaction_name: true,
128        include_dirs: [
129            "packages/modules/Connectivity/framework/aidl-export",
130        ],
131    },
132    srcs: [
133        ":framework-wifi-updatable-sources",
134        ":module-utils-os-aidls",
135    ],
136}
137
138// wifi-service needs pre-jarjared version of framework-wifi so it can reference copied utility
139// classes before they are renamed.
140java_library {
141    name: "framework-wifi-pre-jarjar",
142    defaults: ["framework-wifi-defaults"],
143    sdk_version: "module_current",
144    libs: [
145        "framework-annotations-lib",
146        "framework-connectivity.stubs.module_lib",
147        "framework-location.stubs.module_lib",
148        "framework-tethering.stubs.module_lib",
149    ],
150    installable: false,
151    visibility: [
152        "//frameworks/opt/net/wifi/service",
153        "//frameworks/opt/net/wifi/tests/wifitests",
154        "//packages/modules/Wifi/service",
155        "//packages/modules/Wifi/service/tests/wifitests",
156    ],
157}
158
159// post-jarjar version of framework-wifi
160java_sdk_library {
161    name: "framework-wifi",
162    defaults: [
163        "framework-module-defaults",
164        "framework-wifi-defaults",
165    ],
166
167    impl_only_libs: [
168        "framework-connectivity.stubs.module_lib",
169        "framework-location.stubs.module_lib",
170        "framework-tethering.stubs.module_lib",
171    ],
172
173    public: {
174        libs: [
175            "framework-connectivity.stubs",
176            "framework-location.stubs",
177            "framework-tethering.stubs",
178        ],
179    },
180    system: {
181        libs: [
182            "framework-connectivity.stubs.system",
183            "framework-location.stubs.system",
184            "framework-tethering.stubs.system",
185        ],
186    },
187    module_lib: {
188        libs: [
189            "framework-connectivity.stubs.module_lib",
190            "framework-location.stubs.module_lib",
191            "framework-tethering.stubs.module_lib",
192        ],
193    },
194    api_srcs: [
195        ":wifi_javadoc_only_files",
196    ],
197
198    jarjar_rules: ":wifi-jarjar-rules",
199
200    installable: true,
201    optimize: {
202        enabled: false,
203    },
204    hostdex: true, // for hiddenapi check
205
206    // Restrict access to implementation library.
207    impl_library_visibility: [
208        "//frameworks/opt/net/wifi/service:__subpackages__",
209        "//packages/modules/Wifi/service:__subpackages__",
210        "//packages/modules/Wifi/WifiDialog:__subpackages__",
211    ] + test_access_hidden_api_whitelist,
212
213    apex_available: [
214        "com.android.wifi",
215        "test_com.android.wifi",
216    ],
217    permitted_packages: [
218        "android.hardware.wifi",
219        "android.net.wifi",
220        // Created by jarjar rules.
221        "com.android.wifi.x",
222    ],
223    lint: {
224        strict_updatability_linting: true,
225        baseline_filename: "lint-baseline.xml",
226    },
227}
228
229// defaults for tests that need to build against framework-wifi's @hide APIs
230java_defaults {
231    name: "framework-wifi-test-defaults",
232    sdk_version: "core_current",
233    libs: [
234        // order matters: classes in framework-wifi are resolved before framework, meaning
235        // @hide APIs in framework-wifi are resolved before @SystemApi stubs in framework
236        "framework-wifi.impl",
237        "framework",
238
239        // if sdk_version="" this gets automatically included, but here we need to add manually.
240        "framework-res",
241    ],
242    visibility: test_access_hidden_api_whitelist,
243}
244
245filegroup {
246    name: "wifi-jarjar-rules",
247    srcs: ["jarjar-rules.txt"],
248}
249
250platform_compat_config {
251    name: "wifi-compat-config",
252    src: ":framework-wifi-pre-jarjar",
253}
254