diff options
| author | markchien <markchien@google.com> | 2021-10-28 22:56:49 +0800 |
|---|---|---|
| committer | markchien <markchien@google.com> | 2021-11-08 16:44:34 +0800 |
| commit | 48e271bdcb4979f707b6178cb05333b6a37b57a2 (patch) | |
| tree | 680065209b16471b27a525491cc80f8559396eb7 /Tethering/common/TetheringLib/src/android/net/TetheringManager.java | |
| parent | b5ee639fe012c810114548cebbc6cd625311b95e (diff) | |
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
Diffstat (limited to 'Tethering/common/TetheringLib/src/android/net/TetheringManager.java')
| -rw-r--r-- | Tethering/common/TetheringLib/src/android/net/TetheringManager.java | 39 |
1 files changed, 39 insertions, 0 deletions
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(); |
