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")) {