Fix references to new S APIs without version checks
These new S APIs will throw UnsupportedOperationException
when running on an R device (even though it's called from
within the Wifi module!!!).
Add version checks before calling them.
Note that this is a temporary solution to unblock testing
S module on R base image. Will seek a better long term
solution.
Bug: 173791707
Test: S module on R base image boots and connects to wifi
Change-Id: I3fc28850b208e0b53f5d944b5165daa1faaa9f3e
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 5863cf0..74433a4 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -95,6 +95,7 @@
import com.android.internal.util.Protocol;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
+import com.android.modules.utils.build.SdkLevel;
import com.android.net.module.util.Inet4AddressUtils;
import com.android.net.module.util.MacAddressUtils;
import com.android.net.module.util.NetUtils;
@@ -3627,15 +3628,17 @@
} else {
builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
}
- if (mWifiInfo.isOemPaid()) {
- builder.addCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PAID);
- } else {
- builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PAID);
- }
- if (mWifiInfo.isOemPrivate()) {
- builder.addCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE);
- } else {
- builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE);
+ if (SdkLevel.isAtLeastS()) {
+ if (mWifiInfo.isOemPaid()) {
+ builder.addCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PAID);
+ } else {
+ builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PAID);
+ }
+ if (mWifiInfo.isOemPrivate()) {
+ builder.addCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE);
+ } else {
+ builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE);
+ }
}
builder.setOwnerUid(currentWifiConfiguration.creatorUid);
diff --git a/service/java/com/android/server/wifi/HostapdHal.java b/service/java/com/android/server/wifi/HostapdHal.java
index 3c39f04..faa2652 100644
--- a/service/java/com/android/server/wifi/HostapdHal.java
+++ b/service/java/com/android/server/wifi/HostapdHal.java
@@ -837,20 +837,21 @@
ifaceParamsV1_3.V1_2 = ifaceParamsV12;
ArrayList<android.hardware.wifi.hostapd.V1_3.IHostapd.ChannelParams>
channelParams1_3List = new ArrayList<>();
- for (int i = 0; i < config.getChannels().size(); i++) {
+ for (int i = 0; i < config.getChannelsInternal().size(); i++) {
android.hardware.wifi.hostapd.V1_3.IHostapd.ChannelParams channelParam13 =
new android.hardware.wifi.hostapd.V1_3.IHostapd.ChannelParams();
// Prepare channel
- channelParam13.channel = config.getChannels().valueAt(i);
+ channelParam13.channel = config.getChannelsInternal().valueAt(i);
// Prepare enableAcs
channelParam13.enableAcs = ApConfigUtil.isAcsSupported(mContext)
&& channelParam13.channel == 0;
// Prepare the bandMask
- channelParam13.V1_2.bandMask = getHalBandMask(config.getChannels().keyAt(i));
+ channelParam13.V1_2.bandMask = getHalBandMask(config.getChannelsInternal().keyAt(i));
// Prepare AcsChannelFreqRangesMhz
if (channelParam13.enableAcs && ApConfigUtil.isSendFreqRangesNeeded(
- config.getChannels().keyAt(i), mContext)) {
- prepareAcsChannelFreqRangesMhz(channelParam13.V1_2, config.getChannels().keyAt(i));
+ config.getChannelsInternal().keyAt(i), mContext)) {
+ prepareAcsChannelFreqRangesMhz(
+ channelParam13.V1_2, config.getChannelsInternal().keyAt(i));
}
channelParams1_3List.add(channelParam13);
}
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index 9a39208..1319cf2 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -2855,7 +2855,7 @@
if (event != null && event.eventType == SoftApConnectedClientsEvent.SOFT_AP_UP) {
event.channelFrequency = info.getFrequency();
event.channelBandwidth = info.getBandwidth();
- event.generation = info.getWifiStandard();
+ event.generation = info.getWifiStandardInternal();
break;
}
}
diff --git a/service/java/com/android/server/wifi/WifiShellCommand.java b/service/java/com/android/server/wifi/WifiShellCommand.java
index 2833db8..1d82ea9 100644
--- a/service/java/com/android/server/wifi/WifiShellCommand.java
+++ b/service/java/com/android/server/wifi/WifiShellCommand.java
@@ -60,6 +60,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.modules.utils.BasicShellCommandHandler;
+import com.android.modules.utils.build.SdkLevel;
import com.android.server.wifi.ClientMode.LinkProbeCallback;
import com.android.server.wifi.util.ApConfigUtil;
import com.android.server.wifi.util.ArrayUtils;
@@ -615,19 +616,22 @@
mWifiService.addNetworkSuggestions(
Arrays.asList(suggestion), SHELL_PACKAGE_NAME, null);
// untrusted/oem-paid networks need a corresponding NetworkRequest.
- if (suggestion.isUntrusted() || suggestion.isOemPaid()
- || suggestion.isOemPrivate()) {
+ if (suggestion.isUntrusted()
+ || (SdkLevel.isAtLeastS()
+ && (suggestion.isOemPaid() || suggestion.isOemPrivate()))) {
NetworkRequest.Builder networkRequestBuilder =
new NetworkRequest.Builder()
.addTransportType(TRANSPORT_WIFI);
if (suggestion.isUntrusted()) {
networkRequestBuilder.removeCapability(NET_CAPABILITY_TRUSTED);
}
- if (suggestion.isOemPaid()) {
- networkRequestBuilder.addCapability(NET_CAPABILITY_OEM_PAID);
- }
- if (suggestion.isOemPrivate()) {
- networkRequestBuilder.addCapability(NET_CAPABILITY_OEM_PRIVATE);
+ if (SdkLevel.isAtLeastS()) {
+ if (suggestion.isOemPaid()) {
+ networkRequestBuilder.addCapability(NET_CAPABILITY_OEM_PAID);
+ }
+ if (suggestion.isOemPrivate()) {
+ networkRequestBuilder.addCapability(NET_CAPABILITY_OEM_PRIVATE);
+ }
}
NetworkRequest networkRequest = networkRequestBuilder.build();
ConnectivityManager.NetworkCallback networkCallback =
@@ -654,8 +658,9 @@
mWifiService.removeNetworkSuggestions(
Arrays.asList(suggestion), SHELL_PACKAGE_NAME);
// untrusted/oem-paid networks need a corresponding NetworkRequest.
- if (suggestion.isUntrusted() || suggestion.isOemPaid()
- || suggestion.isOemPrivate()) {
+ if (suggestion.isUntrusted()
+ || (SdkLevel.isAtLeastS()
+ && (suggestion.isOemPaid() || suggestion.isOemPrivate()))) {
Pair<NetworkRequest, ConnectivityManager.NetworkCallback> nrAndNc =
sActiveRequests.remove(suggestion.getSsid());
if (nrAndNc == null) {
@@ -906,9 +911,13 @@
if (option.equals("-u")) {
suggestionBuilder.setUntrusted(true);
} else if (option.equals("-o")) {
- suggestionBuilder.setOemPaid(true);
+ if (SdkLevel.isAtLeastS()) {
+ suggestionBuilder.setOemPaid(true);
+ }
} else if (option.equals("-p")) {
- suggestionBuilder.setOemPrivate(true);
+ if (SdkLevel.isAtLeastS()) {
+ suggestionBuilder.setOemPrivate(true);
+ }
} else if (option.equals("-m")) {
suggestionBuilder.setIsMetered(true);
} else if (option.equals("-s")) {