diff --git a/Android.bp b/Android.bp index a26135e8b9500..9ffdd1d6c8feb 100644 --- a/Android.bp +++ b/Android.bp @@ -199,30 +199,6 @@ filegroup { path: "mms/java", } -filegroup { - name: "framework-wifi-sources", - srcs: [ - "wifi/java/**/*.java", - "wifi/java/**/*.aidl", - ], - exclude_srcs: [ - ":framework-wifi-non-updatable-sources" - ], - path: "wifi/java", -} - -filegroup { - name: "framework-wifi-non-updatable-sources", - srcs: [ - // TODO(b/146011398) package android.net.wifi is now split amongst 2 jars: framework.jar and - // framework-wifi.jar. This is not a good idea, should move WifiNetworkScoreCache - // to a separate package. - "wifi/java/android/net/wifi/WifiNetworkScoreCache.java", - "wifi/java/android/net/wifi/WifiCondManager.java", - "wifi/java/android/net/wifi/wificond/*.java", - ], -} - filegroup { name: "framework-non-updatable-sources", srcs: [ @@ -247,9 +223,8 @@ filegroup { ":framework-telecomm-sources", ":framework-telephony-common-sources", ":framework-telephony-sources", - ":framework-wifi-sources", + ":framework-wifi-annotations", ":framework-wifi-non-updatable-sources", - ":libwificond_ipc_aidl", ":PacProcessor-aidl-sources", ":ProxyHandler-aidl-sources", @@ -290,6 +265,7 @@ filegroup { ":framework-sdkext-sources", ":framework-statsd-sources", ":updatable-media-srcs", + ":framework-wifi-updatable-sources", ] } @@ -425,7 +401,7 @@ java_defaults { filegroup { name: "framework-jarjar-rules", - srcs: ["jarjar_rules_hidl.txt"], + srcs: ["framework-jarjar-rules.txt"], } filegroup { @@ -453,6 +429,7 @@ java_library { libs: [ // TODO(b/146167933): Use framework-statsd-stubs "framework-statsd", + "framework-wifi-stubs", ], installable: true, javac_shard_size: 150, @@ -492,6 +469,8 @@ java_library { "framework-sdkext-stubs-systemapi", // TODO(b/146167933): Use framework-statsd-stubs instead. "framework-statsd", + // TODO(b/140299412): should be framework-wifi-stubs + "framework-wifi", // TODO(jiyong): add more stubs for APEXes here ], sdk_version: "core_platform", diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp index 4733048c06395..bef0ee48afc0b 100644 --- a/core/jni/fd_utils.cpp +++ b/core/jni/fd_utils.cpp @@ -40,6 +40,7 @@ static const char* kPathWhitelist[] = { "/apex/com.android.sdkext/javalib/framework-sdkext.jar", "/apex/com.android.telephony/javalib/telephony-common.jar", "/apex/com.android.telephony/javalib/ims-common.jar", + "/apex/com.android.wifi/javalib/framework-wifi.jar", "/dev/null", "/dev/socket/zygote", "/dev/socket/zygote_secondary", diff --git a/framework-jarjar-rules.txt b/framework-jarjar-rules.txt new file mode 100644 index 0000000000000..d8af726ffa72e --- /dev/null +++ b/framework-jarjar-rules.txt @@ -0,0 +1,2 @@ +rule android.hidl.** android.internal.hidl.@1 +rule android.net.wifi.WifiAnnotations* android.internal.wifi.WifiAnnotations@1 diff --git a/jarjar_rules_hidl.txt b/jarjar_rules_hidl.txt deleted file mode 100644 index 4b2331db7c347..0000000000000 --- a/jarjar_rules_hidl.txt +++ /dev/null @@ -1 +0,0 @@ -rule android.hidl.** android.internal.hidl.@1 diff --git a/wifi/Android.bp b/wifi/Android.bp new file mode 100644 index 0000000000000..26064cbc2fb1a --- /dev/null +++ b/wifi/Android.bp @@ -0,0 +1,102 @@ +// 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. + + +filegroup { + name: "framework-wifi-updatable-sources", + srcs: [ + "java/**/*.java", + "java/**/*.aidl", + ], + exclude_srcs: [ + ":framework-wifi-non-updatable-sources" + ], + path: "java", +} + +filegroup { + name: "framework-wifi-non-updatable-sources", + srcs: [ + // TODO(b/146011398) package android.net.wifi is now split amongst 2 jars: framework.jar and + // framework-wifi.jar. This is not a good idea, should move WifiNetworkScoreCache + // to a separate package. + "java/android/net/wifi/WifiNetworkScoreCache.java", + "java/android/net/wifi/WifiCondManager.java", + "java/android/net/wifi/wificond/*.java", + ":libwificond_ipc_aidl", + ], +} + +filegroup { + name: "framework-wifi-annotations", + srcs: ["java/android/net/wifi/WifiAnnotations.java"], +} + +java_library { + name: "framework-wifi", + sdk_version: "core_platform", // TODO(b/140299412) should be core_current + libs: [ + "framework-minus-apex", // TODO(b/140299412) should be framework-system-stubs + ], + srcs: [ + ":framework-wifi-updatable-sources", + ], + installable: true, + optimize: { + enabled: false + } +} + +metalava_wifi_docs_args = + "--hide-package com.android.server " + + "--error UnhiddenSystemApi " + + "--hide RequiresPermission " + + "--hide MissingPermission " + + "--hide BroadcastBehavior " + + "--hide HiddenSuperclass " + + "--hide DeprecationMismatch " + + "--hide UnavailableSymbol " + + "--hide SdkConstant " + + "--hide HiddenTypeParameter " + + "--hide Todo --hide Typo " + + "--hide HiddenTypedefConstant " + + "--show-annotation android.annotation.SystemApi " + +droidstubs { + name: "framework-wifi-stubs-srcs", + srcs: [ + ":framework-annotations", + ":framework-wifi-updatable-sources", + ], + aidl: { + include_dirs: ["frameworks/base/core/java"], + }, + args: metalava_wifi_docs_args, + sdk_version: "core_current", + libs: ["android_system_stubs_current"], +} + +java_library { + name: "framework-wifi-stubs", + srcs: [":framework-wifi-stubs-srcs"], + aidl: { + export_include_dirs: [ + "java", + ], + }, + sdk_version: "core_current", + libs: ["android_system_stubs_current"], + installable: false, +} + diff --git a/wifi/java/android/net/wifi/WifiAnnotations.java b/wifi/java/android/net/wifi/WifiAnnotations.java new file mode 100644 index 0000000000000..4a7dee138971e --- /dev/null +++ b/wifi/java/android/net/wifi/WifiAnnotations.java @@ -0,0 +1,51 @@ +/* + * 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. + */ + +package android.net.wifi; + +import android.annotation.IntDef; +import android.annotation.StringDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Wifi annotations meant to be statically linked into client modules, since they cannot be + * exposed as @SystemApi. + * + * e.g. {@link IntDef}, {@link StringDef} + * + * @hide + */ +public final class WifiAnnotations { + private WifiAnnotations() {} + + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = {"SCAN_TYPE_"}, value = { + WifiScanner.SCAN_TYPE_LOW_LATENCY, + WifiScanner.SCAN_TYPE_LOW_POWER, + WifiScanner.SCAN_TYPE_HIGH_ACCURACY}) + public @interface ScanType {} + + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = {"WIFI_BAND_"}, value = { + WifiScanner.WIFI_BAND_UNSPECIFIED, + WifiScanner.WIFI_BAND_24_GHZ, + WifiScanner.WIFI_BAND_5_GHZ, + WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY, + WifiScanner.WIFI_BAND_6_GHZ}) + public @interface WifiBandBasic {} +} diff --git a/wifi/java/android/net/wifi/WifiCondManager.java b/wifi/java/android/net/wifi/WifiCondManager.java index 9ae7e3a897066..c05ba347ab5cc 100644 --- a/wifi/java/android/net/wifi/WifiCondManager.java +++ b/wifi/java/android/net/wifi/WifiCondManager.java @@ -725,7 +725,7 @@ public class WifiCondManager implements IBinder.DeathRecipient { /** * Return scan type for the parcelable {@link SingleScanSettings} */ - private static int getScanType(@WifiScanner.ScanType int scanType) { + private static int getScanType(@WifiAnnotations.ScanType int scanType) { switch (scanType) { case WifiScanner.SCAN_TYPE_LOW_LATENCY: return IWifiScannerImpl.SCAN_TYPE_LOW_SPAN; @@ -746,7 +746,7 @@ public class WifiCondManager implements IBinder.DeathRecipient { * @param hiddenNetworkSSIDs List of hidden networks to be scanned for. * @return Returns true on success. */ - public boolean scan(@NonNull String ifaceName, @WifiScanner.ScanType int scanType, + public boolean scan(@NonNull String ifaceName, @WifiAnnotations.ScanType int scanType, Set freqs, List hiddenNetworkSSIDs) { IWifiScannerImpl scannerImpl = getScannerImpl(ifaceName); if (scannerImpl == null) { @@ -868,7 +868,7 @@ public class WifiCondManager implements IBinder.DeathRecipient { * @return frequencies vector of valid frequencies (MHz), or null for error. * @throws IllegalArgumentException if band is not recognized. */ - public int [] getChannelsForBand(@WifiScanner.WifiBandBasic int band) { + public int [] getChannelsForBand(@WifiAnnotations.WifiBandBasic int band) { if (mWificond == null) { Log.e(TAG, "No valid wificond scanner interface handler"); return null; diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java index 760497b727cda..8fedda48aa0d9 100644 --- a/wifi/java/android/net/wifi/WifiScanner.java +++ b/wifi/java/android/net/wifi/WifiScanner.java @@ -89,16 +89,6 @@ public class WifiScanner { /** 6 GHz band */ public static final int WIFI_BAND_6_GHZ = 1 << WIFI_BAND_INDEX_6_GHZ; - /** @hide */ - @Retention(RetentionPolicy.SOURCE) - @IntDef(prefix = {"WIFI_BAND_"}, value = { - WIFI_BAND_UNSPECIFIED, - WIFI_BAND_24_GHZ, - WIFI_BAND_5_GHZ, - WIFI_BAND_5_GHZ_DFS_ONLY, - WIFI_BAND_6_GHZ}) - public @interface WifiBandBasic {} - /** * Combination of bands * Note that those are only the common band combinations, @@ -249,14 +239,6 @@ public class WifiScanner { */ public static final int REPORT_EVENT_NO_BATCH = (1 << 2); - /** @hide */ - @Retention(RetentionPolicy.SOURCE) - @IntDef(prefix = {"SCAN_TYPE_"}, value = { - SCAN_TYPE_LOW_LATENCY, - SCAN_TYPE_LOW_POWER, - SCAN_TYPE_HIGH_ACCURACY}) - public @interface ScanType {} - /** * Optimize the scan for lower latency. * @see ScanSettings#type @@ -354,7 +336,7 @@ public class WifiScanner { * {@link #SCAN_TYPE_HIGH_ACCURACY}. * Default value: {@link #SCAN_TYPE_LOW_LATENCY}. */ - @ScanType + @WifiAnnotations.ScanType @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public int type = SCAN_TYPE_LOW_LATENCY; /**