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

Commit 5a73607a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add shims for NetworkRequest" into rvc-qpr-dev-plus-aosp

parents c140e0a0 b8228631
Loading
Loading
Loading
Loading
+49 −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.NetworkRequest;
import android.util.Range;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

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

import java.util.Set;

/**
 * Implementation of {@link NetworkRequestShim} for API 29.
 */
public class NetworkRequestShimImpl implements NetworkRequestShim {
    protected NetworkRequestShimImpl() {}

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

    @Override
    public void setUids(@NonNull NetworkRequest.Builder builder,
            @Nullable Set<Range<Integer>> uids) throws UnsupportedApiLevelException {
        // Not supported before API 31.
        throw new UnsupportedApiLevelException("Not supported before API 31.");
    }
}
+43 −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.api30;

import android.os.Build;

import com.android.networkstack.apishim.common.NetworkRequestShim;
import com.android.networkstack.apishim.common.ShimUtils;

/**
 * Implementation of {@link NetworkRequestShim} for API 30.
 */
public class NetworkRequestShimImpl
        extends com.android.networkstack.apishim.api29.NetworkRequestShimImpl {
    protected NetworkRequestShimImpl() {
        super();
    }

    /**
     * Get a new instance of {@link NetworkRequestShim}.
     */
    public static NetworkRequestShim newInstance() {
        if (!ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) {
            return com.android.networkstack.apishim.api29.NetworkRequestShimImpl
                    .newInstance();
        }
        return new NetworkRequestShimImpl();
    }
}
+56 −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.NetworkRequest;
import android.os.Build;
import android.util.Range;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.networkstack.apishim.common.NetworkRequestShim;
import com.android.networkstack.apishim.common.ShimUtils;

import java.util.Set;

/**
 * Implementation of {@link NetworkRequestShim} for API 31.
 */
public class NetworkRequestShimImpl
        extends com.android.networkstack.apishim.api30.NetworkRequestShimImpl {
    protected NetworkRequestShimImpl() {
        super();
    }

    /**
     * Get a new instance of {@link NetworkRequestShim}.
     */
    public static NetworkRequestShim newInstance() {
        if (!ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.R)) {
            return com.android.networkstack.apishim.api30.NetworkRequestShimImpl
                    .newInstance();
        }
        return new NetworkRequestShimImpl();
    }

    @Override
    public void setUids(@NonNull NetworkRequest.Builder builder,
            @Nullable Set<Range<Integer>> uids) {
        builder.setUids(uids);
    }
}
+38 −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.NetworkRequest;
import android.util.Range;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.util.Set;

/**
 * Interface used to access API methods in {@link android.net.NetworkRequest}, with
 * appropriate fallbacks if the methods are not yet part of the released API.
 */
public interface NetworkRequestShim {
    /**
     * See android.net.NetworkRequest.Builder#setUids.
     * Set the {@code uids} into {@code builder}.
     */
    void setUids(@NonNull NetworkRequest.Builder builder,
            @Nullable Set<Range<Integer>> uids) throws UnsupportedApiLevelException;
}