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

Commit 29116813 authored by Taras Antoshchuk's avatar Taras Antoshchuk Committed by Gerrit Code Review
Browse files

Merge "Revert "Revert "Revert "Revert "Add VpnServiceBuilderShim for Vp...""

parents 2a5c4453 df3c0341
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -191,6 +191,7 @@ java_library {
    visibility: [
        "//packages/modules/Connectivity/Tethering",
        "//packages/modules/Connectivity/tests/cts/net",
        "//packages/modules/Connectivity/tests/cts/hostside/app",
    ],
}

@@ -211,6 +212,7 @@ java_library {
    visibility: [
        "//packages/modules/Connectivity/Tethering",
        "//packages/modules/Connectivity/tests/cts/net",
        "//packages/modules/Connectivity/tests/cts/hostside/app",
    ],
}

+48 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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 com.android.networkstack.apishim.api29;

import android.net.IpPrefix;
import android.net.VpnService;

import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
import com.android.networkstack.apishim.common.VpnServiceBuilderShim;

/**
 * Implementation of {@link com.android.networkstack.apishim.common.VpnServiceBuilderShim}.
 */
public class VpnServiceBuilderShimImpl implements VpnServiceBuilderShim {

    /**
     * Get a new instance of {@link VpnServiceBuilderShim}.
     */
    public static VpnServiceBuilderShim newInstance() {
        return new VpnServiceBuilderShimImpl();
    }

    @Override
    public VpnService.Builder excludeRoute(VpnService.Builder builder, IpPrefix prefix)
            throws UnsupportedApiLevelException {
        throw new UnsupportedApiLevelException("Only supported after API level 31.");
    }

    @Override
    public VpnService.Builder addRoute(VpnService.Builder builder, IpPrefix prefix)
            throws UnsupportedApiLevelException {
        throw new UnsupportedApiLevelException("Only supported after API level 31.");
    }
}
+24 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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 com.android.networkstack.apishim.api31;

/**
 * Implementation of {@link com.android.networkstack.apishim.common.VpnServiceBuilderShim}.
 */
public class VpnServiceBuilderShimImpl extends
        com.android.networkstack.apishim.api29.VpnServiceBuilderShimImpl {
}
+59 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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 com.android.networkstack.apishim;

import android.net.IpPrefix;
import android.net.VpnService;
import android.os.Build;

import androidx.annotation.RequiresApi;

import com.android.modules.utils.build.SdkLevel;
import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
import com.android.networkstack.apishim.common.VpnServiceBuilderShim;

/**
 * Implementation of {@link com.android.networkstack.apishim.common.VpnServiceBuilderShim}.
 */
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
public class VpnServiceBuilderShimImpl extends
        com.android.networkstack.apishim.api31.VpnServiceBuilderShimImpl {

    /**
     * Get a new instance of {@link VpnServiceBuilderShim}.
     */
    @RequiresApi(Build.VERSION_CODES.Q)
    public static VpnServiceBuilderShim newInstance() {
        if (SdkLevel.isAtLeastT()) {
            return new VpnServiceBuilderShimImpl();
        } else {
            return new com.android.networkstack.apishim.api31.VpnServiceBuilderShimImpl();
        }
    }

    @Override
    public VpnService.Builder excludeRoute(VpnService.Builder builder, IpPrefix prefix)
            throws UnsupportedApiLevelException {
        return builder.excludeRoute(prefix);
    }

    @Override
    public VpnService.Builder addRoute(VpnService.Builder builder, IpPrefix prefix)
            throws UnsupportedApiLevelException {
        return builder.addRoute(prefix);
    }
}
+35 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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 com.android.networkstack.apishim.common;

import android.net.IpPrefix;
import android.net.VpnService;

/** Shim for {@link VpnService.Builder}. */
public interface VpnServiceBuilderShim {
    /**
     * @see VpnService.Builder#excludeRoute(IpPrefix)
     */
    VpnService.Builder excludeRoute(VpnService.Builder builder, IpPrefix prefix)
            throws UnsupportedApiLevelException;

    /**
     * @see VpnService.Builder#addRoute(IpPrefix)
     */
    VpnService.Builder addRoute(VpnService.Builder builder, IpPrefix prefix)
            throws UnsupportedApiLevelException;
}