Add stopTethering(TetheringRequest) stubs
Add a new API TetheringManager.stopTethering(TetheringRequest) to allow apps to stop tethering for a specific request. This CL only provides the API stubs. Implementation will be added in a future CL. Bug: 216524590 Test: atest TetheringManagerTest Change-Id: If00a7dc5d328dac620fb69c384378c36e99e1856
This commit is contained in:
parent
eab1de47f4
commit
5475f2dd74
3 changed files with 67 additions and 0 deletions
|
|
@ -36,6 +36,7 @@ package android.net {
|
|||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopAllTethering();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(int);
|
||||
method @FlaggedApi("com.android.net.flags.tethering_with_soft_ap_config") @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StopTetheringCallback);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.ACCESS_NETWORK_STATE}) public void unregisterTetheringEventCallback(@NonNull android.net.TetheringManager.TetheringEventCallback);
|
||||
field @Deprecated public static final String ACTION_TETHER_STATE_CHANGED = "android.net.conn.TETHER_STATE_CHANGED";
|
||||
field public static final int CONNECTIVITY_SCOPE_GLOBAL = 1; // 0x1
|
||||
|
|
@ -54,6 +55,7 @@ package android.net {
|
|||
field public static final int TETHERING_WIFI_P2P = 3; // 0x3
|
||||
field public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; // 0xc
|
||||
field public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9; // 0x9
|
||||
field @FlaggedApi("com.android.net.flags.tethering_with_soft_ap_config") public static final int TETHER_ERROR_DUPLICATE_REQUEST = 18; // 0x12
|
||||
field public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8; // 0x8
|
||||
field public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; // 0xd
|
||||
field public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; // 0xa
|
||||
|
|
@ -66,6 +68,7 @@ package android.net {
|
|||
field public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; // 0x6
|
||||
field public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; // 0x4
|
||||
field public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; // 0x1
|
||||
field @FlaggedApi("com.android.net.flags.tethering_with_soft_ap_config") public static final int TETHER_ERROR_UNKNOWN_REQUEST = 17; // 0x11
|
||||
field public static final int TETHER_ERROR_UNKNOWN_TYPE = 16; // 0x10
|
||||
field public static final int TETHER_ERROR_UNSUPPORTED = 3; // 0x3
|
||||
field public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; // 0x7
|
||||
|
|
@ -83,6 +86,11 @@ package android.net {
|
|||
method public default void onTetheringStarted();
|
||||
}
|
||||
|
||||
@FlaggedApi("com.android.net.flags.tethering_with_soft_ap_config") public static interface TetheringManager.StopTetheringCallback {
|
||||
method public default void onStopTetheringFailed(int);
|
||||
method public default void onStopTetheringSucceeded();
|
||||
}
|
||||
|
||||
public static interface TetheringManager.TetheringEventCallback {
|
||||
method public default void onClientsChanged(@NonNull java.util.Collection<android.net.TetheredClient>);
|
||||
method public default void onError(@NonNull String, int);
|
||||
|
|
|
|||
|
|
@ -258,10 +258,20 @@ public class TetheringManager {
|
|||
TETHER_ERROR_INTERNAL_ERROR,
|
||||
TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION,
|
||||
TETHER_ERROR_UNKNOWN_TYPE,
|
||||
TETHER_ERROR_DUPLICATE_REQUEST,
|
||||
})
|
||||
public @interface StartTetheringError {
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef(value = {
|
||||
TETHER_ERROR_NO_ERROR,
|
||||
TETHER_ERROR_UNKNOWN_REQUEST,
|
||||
})
|
||||
public @interface StopTetheringError {
|
||||
}
|
||||
|
||||
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;
|
||||
|
|
@ -279,6 +289,10 @@ public class TetheringManager {
|
|||
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;
|
||||
@FlaggedApi(Flags.FLAG_TETHERING_WITH_SOFT_AP_CONFIG)
|
||||
public static final int TETHER_ERROR_UNKNOWN_REQUEST = 17;
|
||||
@FlaggedApi(Flags.FLAG_TETHERING_WITH_SOFT_AP_CONFIG)
|
||||
public static final int TETHER_ERROR_DUPLICATE_REQUEST = 18;
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
|
|
@ -1116,6 +1130,24 @@ public class TetheringManager {
|
|||
default void onTetheringFailed(@StartTetheringError final int error) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for use with {@link #stopTethering} to find out whether stop tethering succeeded.
|
||||
*/
|
||||
@FlaggedApi(Flags.FLAG_TETHERING_WITH_SOFT_AP_CONFIG)
|
||||
public interface StopTetheringCallback {
|
||||
/**
|
||||
* Called when tethering has been successfully stopped.
|
||||
*/
|
||||
default void onStopTetheringSucceeded() {}
|
||||
|
||||
/**
|
||||
* Called when starting tethering failed.
|
||||
*
|
||||
* @param error The error that caused the failure.
|
||||
*/
|
||||
default void onStopTetheringFailed(@StopTetheringError final int error) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts tethering and runs tether provisioning for the given type if needed. If provisioning
|
||||
* fails, stopTethering will be called automatically.
|
||||
|
|
@ -1203,6 +1235,20 @@ public class TetheringManager {
|
|||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops tethering for the given request. Operation will fail with
|
||||
* {@link #TETHER_ERROR_UNKNOWN_REQUEST} if there is no request that matches it.
|
||||
*/
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.TETHER_PRIVILEGED,
|
||||
android.Manifest.permission.WRITE_SETTINGS
|
||||
})
|
||||
@FlaggedApi(Flags.FLAG_TETHERING_WITH_SOFT_AP_CONFIG)
|
||||
public void stopTethering(@NonNull TetheringRequest request,
|
||||
@NonNull final Executor executor, @NonNull final StopTetheringCallback callback) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for use with {@link #getLatestTetheringEntitlementResult} to find out whether
|
||||
* entitlement succeeded.
|
||||
|
|
|
|||
|
|
@ -95,6 +95,7 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
|
|
@ -444,6 +445,18 @@ public class TetheringManagerTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStopTetheringRequest() throws Exception {
|
||||
TetheringRequest request = new TetheringRequest.Builder(TETHERING_WIFI).build();
|
||||
Executor executor = Runnable::run;
|
||||
TetheringManager.StopTetheringCallback callback =
|
||||
new TetheringManager.StopTetheringCallback() {};
|
||||
try {
|
||||
mTM.stopTethering(request, executor, callback);
|
||||
fail("stopTethering should throw UnsupportedOperationException");
|
||||
} catch (UnsupportedOperationException expect) { }
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEnableTetheringPermission() throws Exception {
|
||||
final StartTetheringCallback startTetheringCallback = new StartTetheringCallback();
|
||||
|
|
|
|||
Loading…
Reference in a new issue