diff options
| author | markchien <markchien@google.com> | 2020-03-19 13:37:43 +0800 |
|---|---|---|
| committer | markchien <markchien@google.com> | 2020-03-19 16:32:37 +0800 |
| commit | f1332573bbbee150cf701beeedf20ea220a930ab (patch) | |
| tree | 733b4cd2d2bceff7c28cbc0f7c628f91429b3ad0 /Tethering/common/TetheringLib/src/android/net/TetheringManager.java | |
| parent | 9462a3c9f0f9d65f45c63470ad8f4ca4fcab5750 (diff) | |
TetheringManager API clean up
Per API review:
- @IntDef defined on the type integer parameter
- have getters on each parameter that is set in the
TetheringRequest.Builder
- new added API should not be deprecated
Below APIs is moved from system-current to module-lib-current that only
plafrom code(e.g. ConnectivityManager and Settings) can use them.
TetheringRequest.
onTetherableInterfaceRegexpsChanged, TetheringInterfaceRegexps:
Only platform code can use them because interfaces by regular
expressions are a mechanism which is planning to be deprecated.
Also rename some constants for easier to understand.
Bug: 149858697
Bug: 151243337
Test: m doc-comment-check-docs
atest TetheringTests
Change-Id: Idd041f0fbeca411ea23e49786a50dd7feb77ef45
Diffstat (limited to 'Tethering/common/TetheringLib/src/android/net/TetheringManager.java')
| -rw-r--r-- | Tethering/common/TetheringLib/src/android/net/TetheringManager.java | 158 |
1 files changed, 116 insertions, 42 deletions
diff --git a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java index f2045df947..86ef7f06dc 100644 --- a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java +++ b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java @@ -115,6 +115,19 @@ public class TetheringManager { */ public static final String EXTRA_ERRORED_TETHER = "erroredArray"; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(flag = false, value = { + TETHERING_WIFI, + TETHERING_USB, + TETHERING_BLUETOOTH, + TETHERING_WIFI_P2P, + TETHERING_NCM, + TETHERING_ETHERNET, + }) + public @interface TetheringType { + } + /** * Invalid tethering type. * @see #startTethering. @@ -158,22 +171,60 @@ public class TetheringManager { */ public static final int TETHERING_ETHERNET = 5; - public static final int TETHER_ERROR_NO_ERROR = 0; - public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; - public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; - public static final int TETHER_ERROR_UNSUPPORTED = 3; - public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; - public static final int TETHER_ERROR_MASTER_ERROR = 5; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(value = { + TETHER_ERROR_NO_ERROR, + TETHER_ERROR_PROVISIONING_FAILED, + TETHER_ERROR_ENTITLEMENT_UNKNOWN, + }) + public @interface EntitlementResult { + } + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(value = { + TETHER_ERROR_NO_ERROR, + TETHER_ERROR_UNKNOWN_IFACE, + TETHER_ERROR_SERVICE_UNAVAIL, + TETHER_ERROR_INTERNAL_ERROR, + TETHER_ERROR_TETHER_IFACE_ERROR, + TETHER_ERROR_ENABLE_FORWARDING_ERROR, + TETHER_ERROR_DISABLE_FORWARDING_ERROR, + TETHER_ERROR_IFACE_CFG_ERROR, + TETHER_ERROR_DHCPSERVER_ERROR, + }) + public @interface TetheringIfaceError { + } + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(value = { + TETHER_ERROR_SERVICE_UNAVAIL, + TETHER_ERROR_INTERNAL_ERROR, + TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION, + TETHER_ERROR_UNKNOWN_TYPE, + }) + public @interface StartTetheringError { + } + + public static final int TETHER_ERROR_NO_ERROR = 0; + public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; + public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; + public static final int TETHER_ERROR_UNSUPPORTED = 3; + public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; + public static final int TETHER_ERROR_INTERNAL_ERROR = 5; public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; - public static final int TETHER_ERROR_ENABLE_NAT_ERROR = 8; - public static final int TETHER_ERROR_DISABLE_NAT_ERROR = 9; - public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; - public static final int TETHER_ERROR_PROVISION_FAILED = 11; - public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; + public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8; + public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9; + public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; + public static final int TETHER_ERROR_PROVISIONING_FAILED = 11; + public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14; public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15; + public static final int TETHER_ERROR_UNKNOWN_TYPE = 16; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -508,7 +559,7 @@ public class TetheringManager { private final TetheringRequestParcel mBuilderParcel; /** Default constructor of Builder. */ - public Builder(final int type) { + public Builder(@TetheringType final int type) { mBuilderParcel = new TetheringRequestParcel(); mBuilderParcel.tetheringType = type; mBuilderParcel.localIPv4Address = null; @@ -553,11 +604,14 @@ public class TetheringManager { return this; } - /** Start tethering without showing the provisioning UI. */ + /** + * If an entitlement check is needed, sets whether to show the entitlement UI or to + * perform a silent entitlement check. By default, the entitlement UI is shown. + */ @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) @NonNull - public Builder setSilentProvisioning(boolean silent) { - mBuilderParcel.showProvisioningUi = silent; + public Builder setShouldShowEntitlementUi(boolean showUi) { + mBuilderParcel.showProvisioningUi = showUi; return this; } @@ -567,7 +621,6 @@ public class TetheringManager { return new TetheringRequest(mBuilderParcel); } - /** Get static server address. */ @Nullable public LinkAddress getLocalIpv4Address() { return mBuilderParcel.localIPv4Address; @@ -578,6 +631,22 @@ public class TetheringManager { public LinkAddress getClientStaticIpv4Address() { return mBuilderParcel.staticClientAddress; } + + /** Get tethering type. */ + @TetheringType + public int getTetheringType() { + return mBuilderParcel.tetheringType; + } + + /** Check if exempt from entitlement check. */ + public boolean isExemptFromEntitlementCheck() { + return mBuilderParcel.exemptFromEntitlementCheck; + } + + /** Check if show entitlement ui. */ + public boolean getShouldShowEntitlementUi() { + return mBuilderParcel.showProvisioningUi; + } } /** @@ -602,18 +671,18 @@ public class TetheringManager { /** * Callback for use with {@link #startTethering} to find out whether tethering succeeded. */ - public abstract static class StartTetheringCallback { + public interface StartTetheringCallback { /** * Called when tethering has been successfully started. */ - public void onTetheringStarted() {} + default void onTetheringStarted() {} /** * Called when starting tethering failed. * - * @param resultCode One of the {@code TETHER_ERROR_*} constants. + * @param error The error that caused the failure. */ - public void onTetheringFailed(final int resultCode) {} + default void onTetheringFailed(@StartTetheringError final int error) {} } /** @@ -684,7 +753,7 @@ public class TetheringManager { android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS }) - public void stopTethering(final int type) { + public void stopTethering(@TetheringType final int type) { final String callerPkg = mContext.getOpPackageName(); Log.i(TAG, "stopTethering caller:" + callerPkg); @@ -709,10 +778,10 @@ public class TetheringManager { * * @param resultCode an int value of entitlement result. It may be one of * {@link #TETHER_ERROR_NO_ERROR}, - * {@link #TETHER_ERROR_PROVISION_FAILED}, or + * {@link #TETHER_ERROR_PROVISIONING_FAILED}, or * {@link #TETHER_ERROR_ENTITLEMENT_UNKNOWN}. */ - void onTetheringEntitlementResult(int resultCode); + void onTetheringEntitlementResult(@EntitlementResult int result); } /** @@ -727,7 +796,8 @@ public class TetheringManager { * fail if a tethering entitlement check is required. * * @param type the downstream type of tethering. Must be one of {@code #TETHERING_*} constants. - * @param showEntitlementUi a boolean indicating whether to run UI-based entitlement check. + * @param showEntitlementUi a boolean indicating whether to check result for the UI-based + * entitlement check or the silent entitlement check. * @param executor the executor on which callback will be invoked. * @param listener an {@link OnTetheringEntitlementResultListener} which will be called to * notify the caller of the result of entitlement check. The listener may be called zero @@ -737,7 +807,8 @@ public class TetheringManager { android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS }) - public void requestLatestTetheringEntitlementResult(int type, boolean showEntitlementUi, + public void requestLatestTetheringEntitlementResult(@TetheringType int type, + boolean showEntitlementUi, @NonNull Executor executor, @NonNull final OnTetheringEntitlementResultListener listener) { if (listener == null) { @@ -766,7 +837,7 @@ public class TetheringManager { */ // TODO: improve the usage of ResultReceiver, b/145096122 @SystemApi(client = MODULE_LIBRARIES) - public void requestLatestTetheringEntitlementResult(final int type, + public void requestLatestTetheringEntitlementResult(@TetheringType final int type, @NonNull final ResultReceiver receiver, final boolean showEntitlementUi) { final String callerPkg = mContext.getOpPackageName(); Log.i(TAG, "getLatestTetheringEntitlementResult caller:" + callerPkg); @@ -779,7 +850,7 @@ public class TetheringManager { * Callback for use with {@link registerTetheringEventCallback} to find out tethering * upstream status. */ - public abstract static class TetheringEventCallback { + public interface TetheringEventCallback { /** * Called when tethering supported status changed. * @@ -791,7 +862,7 @@ public class TetheringManager { * * @param supported The new supported status */ - public void onTetheringSupported(boolean supported) {} + default void onTetheringSupported(boolean supported) {} /** * Called when tethering upstream changed. @@ -802,7 +873,7 @@ public class TetheringManager { * @param network the {@link Network} of tethering upstream. Null means tethering doesn't * have any upstream. */ - public void onUpstreamChanged(@Nullable Network network) {} + default void onUpstreamChanged(@Nullable Network network) {} /** * Called when there was a change in tethering interface regular expressions. @@ -810,28 +881,30 @@ public class TetheringManager { * <p>This will be called immediately after the callback is registered, and may be called * multiple times later upon changes. * @param reg The new regular expressions. - * @deprecated Referencing interfaces by regular expressions is a deprecated mechanism. + * + * @hide */ - @Deprecated - public void onTetherableInterfaceRegexpsChanged(@NonNull TetheringInterfaceRegexps reg) {} + @SystemApi(client = MODULE_LIBRARIES) + default void onTetherableInterfaceRegexpsChanged(@NonNull TetheringInterfaceRegexps reg) {} /** - * Called when there was a change in the list of tetherable interfaces. + * Called when there was a change in the list of tetherable interfaces. Tetherable + * interface means this interface is available and can be used for tethering. * * <p>This will be called immediately after the callback is registered, and may be called * multiple times later upon changes. - * @param interfaces The list of tetherable interfaces. + * @param interfaces The list of tetherable interface names. */ - public void onTetherableInterfacesChanged(@NonNull List<String> interfaces) {} + default void onTetherableInterfacesChanged(@NonNull List<String> interfaces) {} /** * Called when there was a change in the list of tethered interfaces. * * <p>This will be called immediately after the callback is registered, and may be called * multiple times later upon changes. - * @param interfaces The list of tethered interfaces. + * @param interfaces The list of 0 or more String of currently tethered interface names. */ - public void onTetheredInterfacesChanged(@NonNull List<String> interfaces) {} + default void onTetheredInterfacesChanged(@NonNull List<String> interfaces) {} /** * Called when an error occurred configuring tethering. @@ -841,7 +914,7 @@ public class TetheringManager { * @param ifName Name of the interface. * @param error One of {@code TetheringManager#TETHER_ERROR_*}. */ - public void onError(@NonNull String ifName, int error) {} + default void onError(@NonNull String ifName, @TetheringIfaceError int error) {} /** * Called when the list of tethered clients changes. @@ -854,7 +927,7 @@ public class TetheringManager { * determine if they are still connected. * @param clients The new set of tethered clients; the collection is not ordered. */ - public void onClientsChanged(@NonNull Collection<TetheredClient> clients) {} + default void onClientsChanged(@NonNull Collection<TetheredClient> clients) {} /** * Called when tethering offload status changes. @@ -862,19 +935,20 @@ public class TetheringManager { * <p>This will be called immediately after the callback is registered. * @param status The offload status. */ - public void onOffloadStatusChanged(@TetherOffloadStatus int status) {} + default void onOffloadStatusChanged(@TetherOffloadStatus int status) {} } /** * Regular expressions used to identify tethering interfaces. - * @deprecated Referencing interfaces by regular expressions is a deprecated mechanism. + * @hide */ - @Deprecated + @SystemApi(client = MODULE_LIBRARIES) public static class TetheringInterfaceRegexps { private final String[] mTetherableBluetoothRegexs; private final String[] mTetherableUsbRegexs; private final String[] mTetherableWifiRegexs; + /** @hide */ public TetheringInterfaceRegexps(@NonNull String[] tetherableBluetoothRegexs, @NonNull String[] tetherableUsbRegexs, @NonNull String[] tetherableWifiRegexs) { mTetherableBluetoothRegexs = tetherableBluetoothRegexs.clone(); |
