Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 194b36fd authored by Chiachang Wang's avatar Chiachang Wang
Browse files

Enable strict_updatability_linting for NetworkStackApi30Shims

Fix the linter errors and enable strict_updatability_linting

Also use modules-utils method to check SDK version because
ShimUtils do not define the min_sdk and will be treated as
SDK 30 and conflict with the target SDK version(Q) if both
newInstance() and useApiAboveQ() are both defined as requires Q.
Thus, remove the reference for ShimUtils to align with other
usage and update corresponding usage accordingly.

Bug: 188851867
Test: m lint-check
Change-Id: Id6f7c2a4b919d76def1d3b022995e680d88022a4
parent 33756a9b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -123,7 +123,7 @@ java_library {
    sdk_version: "system_30",
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline-api-30-shims.xml",
        strict_updatability_linting: true,
    },
}

+2 −2
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ public class CaptivePortalDataShimImpl
    @Override
    public CaptivePortalDataShim withVenueFriendlyName(String friendlyName)
            throws UnsupportedApiLevelException {
        // Not supported in API level 29
        // Not supported in API level 30
        throw new UnsupportedApiLevelException("FriendlyName not supported on API 30");
    }

@@ -149,7 +149,7 @@ public class CaptivePortalDataShimImpl
    public CaptivePortalDataShim withPasspointInfo(@NonNull String friendlyName,
            @NonNull Uri venueInfoUrl, @NonNull Uri termsAndConditionsUrl)
            throws UnsupportedApiLevelException {
        // Not supported in API level 29
        // Not supported in API level 30
        throw new UnsupportedApiLevelException("PasspointInfo not supported on API 30");
    }
}
+6 −11
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.networkstack.apishim.api30;

import static com.android.modules.utils.build.SdkLevel.isAtLeastR;

import android.net.IpPrefix;
import android.net.LinkProperties;
import android.net.NetworkCapabilities;
@@ -25,17 +27,17 @@ import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.RequiresApi;

import com.android.networkstack.apishim.common.CaptivePortalDataShim;
import com.android.networkstack.apishim.common.NetworkInformationShim;
import com.android.networkstack.apishim.common.ShimUtils;

import java.net.Inet4Address;

/**
 * Compatibility implementation of {@link NetworkInformationShim}.
 */
@RequiresApi(Build.VERSION_CODES.R)
public class NetworkInformationShimImpl extends
        com.android.networkstack.apishim.api29.NetworkInformationShimImpl {
    private static final String TAG = "api30.NetworkInformationShimImpl";
@@ -45,21 +47,14 @@ public class NetworkInformationShimImpl extends
    /**
     * Get a new instance of {@link NetworkInformationShim}.
     */
    @RequiresApi(Build.VERSION_CODES.Q)
    public static NetworkInformationShim newInstance() {
        if (!useApiAboveQ()) {
        if (!isAtLeastR()) {
            return com.android.networkstack.apishim.api29.NetworkInformationShimImpl.newInstance();
        }
        return new NetworkInformationShimImpl();
    }

    /**
     * Indicates whether the shim can use APIs above the Q SDK.
     */
    @VisibleForTesting
    public static boolean useApiAboveQ() {
        return ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q);
    }

    @Nullable
    @Override
    public Uri getCaptivePortalApiUrl(@Nullable LinkProperties lp) {

lint-baseline-api-30-shims.xml

deleted100644 → 0
+0 −37
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<issues format="5" by="lint 4.1.0" client="cli" variant="all" version="4.1.0">

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 29): `android.net.LinkProperties#getNat64Prefix`"
        errorLine1="        return lp.getNat64Prefix();"
        errorLine2="                  ~~~~~~~~~~~~~~">
        <location
            file="packages/modules/NetworkStack/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java"
            line="85"
            column="19"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 29): `android.net.LinkProperties#setNat64Prefix`"
        errorLine1="        lp.setNat64Prefix(prefix);"
        errorLine2="           ~~~~~~~~~~~~~~">
        <location
            file="packages/modules/NetworkStack/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java"
            line="90"
            column="12"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 29): `android.net.LinkProperties#setDhcpServerAddress`"
        errorLine1="        lp.setDhcpServerAddress(serverAddress);"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="packages/modules/NetworkStack/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java"
            line="109"
            column="12"/>
    </issue>

</issues>
+11 −9
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ import com.android.networkstack.NetworkStackNotifier.CHANNEL_VENUE_INFO
import com.android.networkstack.NetworkStackNotifier.CONNECTED_NOTIFICATION_TIMEOUT_MS
import com.android.networkstack.NetworkStackNotifier.Dependencies
import com.android.networkstack.apishim.NetworkInformationShimImpl
import com.android.modules.utils.build.SdkLevel.isAtLeastR
import com.android.modules.utils.build.SdkLevel.isAtLeastS
import org.junit.Assume.assumeTrue
import org.junit.Before
import org.junit.Test
@@ -235,7 +237,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testConnectedNotification_WithSsid() {
        // NetworkCapabilities#getSSID is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        val capabilities = NetworkCapabilities(VALIDATED_CAPABILITIES).setSSID(TEST_SSID)

        onCapabilitiesChanged(EMPTY_CAPABILITIES)
@@ -252,7 +254,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testConnectedVenueInfoNotification() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        mNotifier.notifyCaptivePortalValidationPending(TEST_NETWORK)
        onLinkPropertiesChanged(mTestCapportLp)
        onDefaultNetworkAvailable(TEST_NETWORK)
@@ -270,7 +272,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testConnectedVenueInfoNotification_VenueInfoDisabled() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        val channel = NotificationChannel(CHANNEL_VENUE_INFO, "test channel", IMPORTANCE_NONE)
        doReturn(channel).`when`(mNotificationChannelsNm).getNotificationChannel(CHANNEL_VENUE_INFO)
        mNotifier.notifyCaptivePortalValidationPending(TEST_NETWORK)
@@ -289,7 +291,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testVenueInfoNotification() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        onLinkPropertiesChanged(mTestCapportLp)
        onDefaultNetworkAvailable(TEST_NETWORK)
        val capabilities = NetworkCapabilities(VALIDATED_CAPABILITIES).setSSID(TEST_SSID)
@@ -307,7 +309,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testVenueInfoNotification_VenueInfoDisabled() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        doReturn(null).`when`(mNm).getNotificationChannel(CHANNEL_VENUE_INFO)
        onLinkPropertiesChanged(mTestCapportLp)
        onDefaultNetworkAvailable(TEST_NETWORK)
@@ -320,7 +322,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testNonDefaultVenueInfoNotification() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        onLinkPropertiesChanged(mTestCapportLp)
        onCapabilitiesChanged(VALIDATED_CAPABILITIES)
        mLooper.processAllMessages()
@@ -331,7 +333,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testEmptyCaptivePortalDataVenueInfoNotification() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        onLinkPropertiesChanged(EMPTY_CAPPORT_LP)
        onCapabilitiesChanged(VALIDATED_CAPABILITIES)
        mLooper.processAllMessages()
@@ -342,7 +344,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testUnvalidatedNetworkVenueInfoNotification() {
        // Venue info (CaptivePortalData) is not available for API <= Q
        assumeTrue(NetworkInformationShimImpl.useApiAboveQ())
        assumeTrue(isAtLeastR())
        onLinkPropertiesChanged(mTestCapportLp)
        onCapabilitiesChanged(EMPTY_CAPABILITIES)
        mLooper.processAllMessages()
@@ -353,7 +355,7 @@ class NetworkStackNotifierTest {
    @Test
    fun testConnectedVenueInfoWithFriendlyNameNotification() {
        // Venue info (CaptivePortalData) with friendly name is not available for API <= R
        assumeTrue(NetworkInformationShimImpl.useApiAboveR())
        assumeTrue(isAtLeastS())
        mNotifier.notifyCaptivePortalValidationPending(TEST_NETWORK)
        onLinkPropertiesChanged(mTestCapportVenueUrlWithFriendlyNameLp)
        onDefaultNetworkAvailable(TEST_NETWORK)