Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -169,6 +169,7 @@ java_library { "NetworkStackApi30Shims", "NetworkStackApi31Shims", "framework-connectivity", "framework-tethering", ], sdk_version: "module_current", visibility: ["//visibility:private"], Loading apishim/30/com/android/networkstack/apishim/api30/BluetoothPanShimImpl.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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.bluetooth.BluetoothPan; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.BluetoothPanShim; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import java.util.concurrent.Executor; /** * Implementation of {@link BluetoothPanShimImpl} for API 30. */ @RequiresApi(Build.VERSION_CODES.R) public class BluetoothPanShimImpl implements BluetoothPanShim { protected final BluetoothPan mPan; protected BluetoothPanShimImpl(BluetoothPan pan) { mPan = pan; } /** * Get a new instance of {@link BluetoothPanShimImpl}. */ @RequiresApi(Build.VERSION_CODES.R) public static BluetoothPanShim newInstance(final BluetoothPan pan) { return new BluetoothPanShimImpl(pan); } @Override public TetheredInterfaceRequestShim requestTetheredInterface(@NonNull final Executor executor, @NonNull final TetheredInterfaceCallbackShim callback) throws UnsupportedApiLevelException { throw new UnsupportedApiLevelException( "requestTetheredInterface does not exist before API 32"); } } apishim/31/com/android/networkstack/apishim/api31/BluetoothPanShimImpl.java 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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; import android.bluetooth.BluetoothPan; import android.os.Build; import androidx.annotation.RequiresApi; /** * Implementation of {@link com.android.networkstack.apishim.common.BluetoothPanShim}. */ @RequiresApi(Build.VERSION_CODES.S) public class BluetoothPanShimImpl extends com.android.networkstack.apishim.api30.BluetoothPanShimImpl { protected BluetoothPanShimImpl(BluetoothPan pan) { super(pan); } } apishim/33/com/android/networkstack/apishim/BluetoothPanShimImpl.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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 static com.android.modules.utils.build.SdkLevel.isAtLeastT; import android.bluetooth.BluetoothPan; import android.net.TetheringManager.TetheredInterfaceCallback; import android.net.TetheringManager.TetheredInterfaceRequest; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.BluetoothPanShim; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import java.util.concurrent.Executor; /** * Implementation of {@link BluetoothPanShimImpl} for API 33. */ @RequiresApi(Build.VERSION_CODES.TIRAMISU) public class BluetoothPanShimImpl extends com.android.networkstack.apishim.api31.BluetoothPanShimImpl { protected BluetoothPanShimImpl(BluetoothPan pan) { super(pan); } /** * Get a new instance of {@link BluetoothPanShimImpl}. */ @RequiresApi(Build.VERSION_CODES.R) public static BluetoothPanShim newInstance(final BluetoothPan pan) { if (!isAtLeastT()) { return com.android.networkstack.apishim.api31.BluetoothPanShimImpl .newInstance(pan); } return new BluetoothPanShimImpl(pan); } @Override public TetheredInterfaceRequestShim requestTetheredInterface(@NonNull final Executor executor, @NonNull final TetheredInterfaceCallbackShim callback) throws UnsupportedApiLevelException { TetheredInterfaceRequest request = mPan.requestTetheredInterface(executor, new TetheredInterfaceCallback() { public void onAvailable(@NonNull String iface) { callback.onAvailable(iface); } public void onUnavailable() { callback.onUnavailable(); } }); if (request == null) return null; return new TetheredInterfaceRequestShim() { @Override public void release() { request.release(); } }; } } apishim/common/com/android/networkstack/apishim/common/BluetoothPanShim.java 0 → 100644 +52 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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 androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.concurrent.Executor; /** * Interface for accessing API methods in {@link android.bluetooth.BluetoothPan} by different SDK * level. */ public interface BluetoothPanShim { /** Use to deal with the TetheringManager#TetheredInterfaceRequest by different sdk version. */ public interface TetheredInterfaceRequestShim { /** Release the request to tear down tethered interface */ default void release() {} } /** Use to deal with the TetheringManager#TetheredInterfaceCallback by different sdk version. */ public interface TetheredInterfaceCallbackShim { /** Called when the tethered interface is available. */ default void onAvailable(@NonNull String iface) {} /** Called when the tethered interface is now unavailable. */ default void onUnavailable() {} } /** * Use to deal with the BluetoothPan#setBluetoothTethering and * BluetoothPan#requestTetheredInterface by different sdk version. This can return null if the * service is not available. */ @Nullable TetheredInterfaceRequestShim requestTetheredInterface(@NonNull Executor executor, @NonNull TetheredInterfaceCallbackShim callback) throws UnsupportedApiLevelException; } Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -169,6 +169,7 @@ java_library { "NetworkStackApi30Shims", "NetworkStackApi31Shims", "framework-connectivity", "framework-tethering", ], sdk_version: "module_current", visibility: ["//visibility:private"], Loading
apishim/30/com/android/networkstack/apishim/api30/BluetoothPanShimImpl.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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.bluetooth.BluetoothPan; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.BluetoothPanShim; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import java.util.concurrent.Executor; /** * Implementation of {@link BluetoothPanShimImpl} for API 30. */ @RequiresApi(Build.VERSION_CODES.R) public class BluetoothPanShimImpl implements BluetoothPanShim { protected final BluetoothPan mPan; protected BluetoothPanShimImpl(BluetoothPan pan) { mPan = pan; } /** * Get a new instance of {@link BluetoothPanShimImpl}. */ @RequiresApi(Build.VERSION_CODES.R) public static BluetoothPanShim newInstance(final BluetoothPan pan) { return new BluetoothPanShimImpl(pan); } @Override public TetheredInterfaceRequestShim requestTetheredInterface(@NonNull final Executor executor, @NonNull final TetheredInterfaceCallbackShim callback) throws UnsupportedApiLevelException { throw new UnsupportedApiLevelException( "requestTetheredInterface does not exist before API 32"); } }
apishim/31/com/android/networkstack/apishim/api31/BluetoothPanShimImpl.java 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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; import android.bluetooth.BluetoothPan; import android.os.Build; import androidx.annotation.RequiresApi; /** * Implementation of {@link com.android.networkstack.apishim.common.BluetoothPanShim}. */ @RequiresApi(Build.VERSION_CODES.S) public class BluetoothPanShimImpl extends com.android.networkstack.apishim.api30.BluetoothPanShimImpl { protected BluetoothPanShimImpl(BluetoothPan pan) { super(pan); } }
apishim/33/com/android/networkstack/apishim/BluetoothPanShimImpl.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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 static com.android.modules.utils.build.SdkLevel.isAtLeastT; import android.bluetooth.BluetoothPan; import android.net.TetheringManager.TetheredInterfaceCallback; import android.net.TetheringManager.TetheredInterfaceRequest; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.BluetoothPanShim; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import java.util.concurrent.Executor; /** * Implementation of {@link BluetoothPanShimImpl} for API 33. */ @RequiresApi(Build.VERSION_CODES.TIRAMISU) public class BluetoothPanShimImpl extends com.android.networkstack.apishim.api31.BluetoothPanShimImpl { protected BluetoothPanShimImpl(BluetoothPan pan) { super(pan); } /** * Get a new instance of {@link BluetoothPanShimImpl}. */ @RequiresApi(Build.VERSION_CODES.R) public static BluetoothPanShim newInstance(final BluetoothPan pan) { if (!isAtLeastT()) { return com.android.networkstack.apishim.api31.BluetoothPanShimImpl .newInstance(pan); } return new BluetoothPanShimImpl(pan); } @Override public TetheredInterfaceRequestShim requestTetheredInterface(@NonNull final Executor executor, @NonNull final TetheredInterfaceCallbackShim callback) throws UnsupportedApiLevelException { TetheredInterfaceRequest request = mPan.requestTetheredInterface(executor, new TetheredInterfaceCallback() { public void onAvailable(@NonNull String iface) { callback.onAvailable(iface); } public void onUnavailable() { callback.onUnavailable(); } }); if (request == null) return null; return new TetheredInterfaceRequestShim() { @Override public void release() { request.release(); } }; } }
apishim/common/com/android/networkstack/apishim/common/BluetoothPanShim.java 0 → 100644 +52 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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 androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.concurrent.Executor; /** * Interface for accessing API methods in {@link android.bluetooth.BluetoothPan} by different SDK * level. */ public interface BluetoothPanShim { /** Use to deal with the TetheringManager#TetheredInterfaceRequest by different sdk version. */ public interface TetheredInterfaceRequestShim { /** Release the request to tear down tethered interface */ default void release() {} } /** Use to deal with the TetheringManager#TetheredInterfaceCallback by different sdk version. */ public interface TetheredInterfaceCallbackShim { /** Called when the tethered interface is available. */ default void onAvailable(@NonNull String iface) {} /** Called when the tethered interface is now unavailable. */ default void onUnavailable() {} } /** * Use to deal with the BluetoothPan#setBluetoothTethering and * BluetoothPan#requestTetheredInterface by different sdk version. This can return null if the * service is not available. */ @Nullable TetheredInterfaceRequestShim requestTetheredInterface(@NonNull Executor executor, @NonNull TetheredInterfaceCallbackShim callback) throws UnsupportedApiLevelException; }