• Home
  • 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_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    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        "android.hardware.wifi-V1.0-java-constants",
109        "wifi-modules-utils",
110        "PlatformProperties",
111    ],
112    libs: [
113        "androidx.annotation_annotation",
114        "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
115        "app-compat-annotations",
116        // Add aconfig-annotations-lib as a dependency for the optimization
117        "aconfig-annotations-lib",
118        "framework-configinfrastructure",
119    ],
120    aidl: {
121        generate_get_transaction_name: true,
122        include_dirs: [
123            "packages/modules/Connectivity/framework/aidl-export",
124        ],
125    },
126    srcs: [
127        ":framework-wifi-updatable-sources",
128        ":module-utils-os-aidls",
129    ],
130}
131
132// wifi-service needs pre-jarjared version of framework-wifi so it can reference copied utility
133// classes before they are renamed.
134java_library {
135    name: "framework-wifi-pre-jarjar",
136    defaults: ["framework-wifi-defaults"],
137    sdk_version: "module_current",
138    libs: [
139        "framework-annotations-lib",
140        "framework-connectivity.stubs.module_lib",
141        "framework-location.stubs.module_lib",
142        "framework-tethering.stubs.module_lib",
143    ],
144    installable: false,
145    visibility: [
146        "//frameworks/opt/net/wifi/service",
147        "//frameworks/opt/net/wifi/tests/wifitests",
148        "//packages/modules/Wifi/service",
149        "//packages/modules/Wifi/service/tests/wifitests",
150    ],
151}
152
153// post-jarjar version of framework-wifi
154java_sdk_library {
155    name: "framework-wifi",
156    defaults: [
157        "framework-module-defaults",
158        "framework-wifi-defaults",
159    ],
160
161    impl_only_libs: [
162        "framework-connectivity.stubs.module_lib",
163        "framework-location.stubs.module_lib",
164        "framework-tethering.stubs.module_lib",
165    ],
166
167    public: {
168        libs: [
169            "framework-connectivity.stubs",
170            "framework-location.stubs",
171            "framework-tethering.stubs",
172        ],
173    },
174    system: {
175        libs: [
176            "framework-connectivity.stubs.system",
177            "framework-location.stubs.system",
178            "framework-tethering.stubs.system",
179        ],
180    },
181    module_lib: {
182        libs: [
183            "framework-connectivity.stubs.module_lib",
184            "framework-location.stubs.module_lib",
185            "framework-tethering.stubs.module_lib",
186        ],
187    },
188    api_srcs: [
189        ":wifi_javadoc_only_files",
190    ],
191
192    jarjar_rules: ":wifi-jarjar-rules",
193
194    installable: true,
195    optimize: {
196        enabled: false,
197    },
198    hostdex: true, // for hiddenapi check
199
200    // Restrict access to implementation library.
201    impl_library_visibility: [
202        "//frameworks/opt/net/wifi/service:__subpackages__",
203        "//packages/modules/Wifi/service:__subpackages__",
204        "//packages/modules/Wifi/WifiDialog:__subpackages__",
205    ] + test_access_hidden_api_whitelist,
206
207    apex_available: [
208        "com.android.wifi",
209        "test_com.android.wifi",
210    ],
211    permitted_packages: [
212        "android.hardware.wifi",
213        "android.net.wifi",
214        // Created by jarjar rules.
215        "com.android.wifi.x",
216    ],
217    lint: {
218        strict_updatability_linting: true,
219
220    },
221}
222
223// defaults for tests that need to build against framework-wifi's @hide APIs
224java_defaults {
225    name: "framework-wifi-test-defaults",
226    sdk_version: "core_current",
227    libs: [
228        // order matters: classes in framework-wifi are resolved before framework, meaning
229        // @hide APIs in framework-wifi are resolved before @SystemApi stubs in framework
230        "framework-wifi.impl",
231        "framework",
232
233        // if sdk_version="" this gets automatically included, but here we need to add manually.
234        "framework-res",
235    ],
236    visibility: test_access_hidden_api_whitelist,
237}
238
239filegroup {
240    name: "wifi-jarjar-rules",
241    srcs: ["jarjar-rules.txt"],
242}
243
244platform_compat_config {
245    name: "wifi-compat-config",
246    src: ":framework-wifi-pre-jarjar",
247}
248