From 48e271bdcb4979f707b6178cb05333b6a37b57a2 Mon Sep 17 00:00:00 2001 From: markchien Date: Thu, 28 Oct 2021 22:56:49 +0800 Subject: [PATCH] Add TetheredInterface{Request, Callback} interface Define interfaces that match the signature of the existing EthernetManager.TetheredInterfaceRequest and TetheredInterfaceCallback classes and make EthernetManager.TetheredInterfaceRequest and TetheredInterfaceCallback implement/subinterface these interfaces. The new bluetooth API could also implement these interfaces to make API surface consistent. Test: TH would test the existing tests that use the subclass. Bug: 190438212 Change-Id: I093972c111cb1d921076782492716d5a046be8fc --- .../TetheringLib/api/module-lib-current.txt | 9 +++++ .../src/android/net/TetheringManager.java | 39 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/Tethering/common/TetheringLib/api/module-lib-current.txt b/Tethering/common/TetheringLib/api/module-lib-current.txt index 0566040dd7..460c21621d 100644 --- a/Tethering/common/TetheringLib/api/module-lib-current.txt +++ b/Tethering/common/TetheringLib/api/module-lib-current.txt @@ -27,6 +27,15 @@ package android.net { method @Deprecated public int untether(@NonNull String); } + public static interface TetheringManager.TetheredInterfaceCallback { + method public void onAvailable(@NonNull String); + method public void onUnavailable(); + } + + public static interface TetheringManager.TetheredInterfaceRequest { + method public void release(); + } + public static interface TetheringManager.TetheringEventCallback { method @Deprecated public default void onTetherableInterfaceRegexpsChanged(@NonNull android.net.TetheringManager.TetheringInterfaceRegexps); } diff --git a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java index 9e6e34ee69..6f9b33e96a 100644 --- a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java +++ b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java @@ -22,6 +22,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; +import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.content.Context; import android.os.Bundle; @@ -444,6 +445,44 @@ public class TetheringManager { } } + /** + * A request for a tethered interface. + * + * There are two reasons why this doesn't implement CLoseable: + * 1. To consistency with the existing EthernetManager.TetheredInterfaceRequest, which is + * already released. + * 2. This is not synchronous, so it's not useful to use try-with-resources. + * + * {@hide} + */ + @SystemApi(client = MODULE_LIBRARIES) + @SuppressLint("NotCloseable") + public interface TetheredInterfaceRequest { + /** + * Release the request to tear down tethered interface. + */ + void release(); + } + + /** + * Callback for requestTetheredInterface. + * + * {@hide} + */ + @SystemApi(client = MODULE_LIBRARIES) + public interface TetheredInterfaceCallback { + /** + * Called when the tethered interface is available. + * @param iface The name of the interface. + */ + void onAvailable(@NonNull String iface); + + /** + * Called when the tethered interface is now unavailable. + */ + void onUnavailable(); + } + private static class TetheringCallbackInternal extends ITetheringEventCallback.Stub { private volatile int mError = TETHER_ERROR_NO_ERROR; private final ConditionVariable mWaitForCallback = new ConditionVariable();