Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86b6aded authored by xshu's avatar xshu
Browse files

Add APIs for carrier network selection

Add APIs to temporarily disabled non carrier merged wifi networks, and
another API to re-enable the disabled networks.

Bug: 173054916
Test: atest android.net.wifi
CTS-Coverage-Bug: 173152650

Change-Id: Ib8e6b248d6903a3b8c0c1dd94b2dd4e668aae1f0
parent 115861da
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -497,9 +497,11 @@ package android.net.wifi {
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startLocalOnlyHotspot(@NonNull android.net.wifi.SoftApConfiguration, @Nullable java.util.concurrent.Executor, @Nullable android.net.wifi.WifiManager.LocalOnlyHotspotCallback);
    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public boolean startScan(android.os.WorkSource);
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startSubscriptionProvisioning(@NonNull android.net.wifi.hotspot2.OsuProvider, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.hotspot2.ProvisioningCallback);
    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void startTemporarilyDisablingAllNonCarrierMergedWifi(int);
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean startTetheredHotspot(@Nullable android.net.wifi.SoftApConfiguration);
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void stopEasyConnectSession();
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean stopSoftAp();
    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void stopTemporarilyDisablingAllNonCarrierMergedWifi();
    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterSoftApCallback(@NonNull android.net.wifi.WifiManager.SoftApCallback);
    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterTrafficStateCallback(@NonNull android.net.wifi.WifiManager.TrafficStateCallback);
+4 −0
Original line number Diff line number Diff line
@@ -277,4 +277,8 @@ interface IWifiManager
    boolean isAutoWakeupEnabled();

    int getNetworkSuggestionUserApprovalStatus(String packageName);

    void startTemporarilyDisablingAllNonCarrierMergedWifi(int subId);

    void stopTemporarilyDisablingAllNonCarrierMergedWifi();
}
+39 −0
Original line number Diff line number Diff line
@@ -4291,6 +4291,45 @@ public class WifiManager {
        connectInternal(null, networkId, listener);
    }

    /**
     * Temporarily disable autojoin for all currently visible and provisioned (saved, suggested)
     * wifi networks except merged carrier networks from the provided subscription ID.
     *
     * Disabled networks will get automatically re-enabled when they are out of range for a period
     * of time, or after the maximum disable duration specified in the framework.
     *
     * Calling {@link #stopTemporarilyDisablingAllNonCarrierMergedWifi()} will immediately re-enable
     * autojoin on all disabled networks.
     *
     * @param subscriptionId the subscription ID of the carrier whose merged wifi networks won't be
     *                       disabled {@link android.telephony.SubscriptionInfo#getSubscriptionId()}
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
    public void startTemporarilyDisablingAllNonCarrierMergedWifi(int subscriptionId) {
        try {
            mService.startTemporarilyDisablingAllNonCarrierMergedWifi(subscriptionId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Re-enable autojoin for all non carrier merged wifi networks temporarily disconnected by
     * {@link #startTemporarilyDisablingAllNonCarrierMergedWifi(int)}.
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
    public void stopTemporarilyDisablingAllNonCarrierMergedWifi() {
        try {
            mService.stopTemporarilyDisablingAllNonCarrierMergedWifi();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Save the given network to the list of configured networks for the
     * foreground user. If the network already exists, the configuration
+18 −0
Original line number Diff line number Diff line
@@ -1633,6 +1633,24 @@ public class WifiManagerTest {
        verify(mWifiService).getFactoryMacAddresses();
    }

    /**
     * Verify the call to startTemporarilyDisablingAllNonCarrierMergedWifi goes to WifiServiceImpl.
     */
    @Test
    public void testStartTemporarilyDisablingAllNonCarrierMergedWifi() throws Exception {
        mWifiManager.startTemporarilyDisablingAllNonCarrierMergedWifi(1);
        verify(mWifiService).startTemporarilyDisablingAllNonCarrierMergedWifi(1);
    }

    /**
     * Verify the call to stopTemporarilyDisablingAllNonCarrierMergedWifi goes to WifiServiceImpl.
     */
    @Test
    public void testStopTemporarilyDisablingAllNonCarrierMergedWifi() throws Exception {
        mWifiManager.stopTemporarilyDisablingAllNonCarrierMergedWifi();
        verify(mWifiService).stopTemporarilyDisablingAllNonCarrierMergedWifi();
    }

    /**
     * Verify the call to addOnWifiUsabilityStatsListener goes to WifiServiceImpl.
     */