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

Commit 1c41ff33 authored by Weng Su's avatar Weng Su Committed by Android Build Coastguard Worker
Browse files

[RESTRICT AUTOMERGE] Hide Wi-Fi Scanning message when Location is disabled (QS Internet Dialog)

- When the location is disabled, the WiFi scanning service will also
stop.

- Bypass the WifiManager#isScanAlwaysAvailable() result.

Bug: 203471614
Test: manual test on the device.
atest -c InternetDialogControllerTest \
         InternetDialogTest

Change-Id: I2f159820d577f226e640b3ea735f6b18c52a16f7
(cherry picked from commit 194a6195)
parent 7bc4913f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -331,7 +331,7 @@ public class InternetDialog extends SystemUIDialog implements
        showProgressBar();
        final boolean isDeviceLocked = mInternetDialogController.isDeviceLocked();
        final boolean isWifiEnabled = mWifiManager.isWifiEnabled();
        final boolean isWifiScanEnabled = mWifiManager.isScanAlwaysAvailable();
        final boolean isWifiScanEnabled = mInternetDialogController.isWifiScanEnabled();
        updateWifiToggle(isWifiEnabled, isDeviceLocked);
        updateConnectedWifi(isWifiEnabled, isDeviceLocked);
        updateWifiScanNotify(isWifiEnabled, isWifiScanEnabled, isDeviceLocked);
+13 −1
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
import com.android.systemui.toast.SystemUIToast;
@@ -150,6 +151,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
    private WindowManager mWindowManager;
    private ToastFactory mToastFactory;
    private SignalDrawable mSignalDrawable;
    private LocationController mLocationController;

    @VisibleForTesting
    static final float TOAST_PARAMS_HORIZONTAL_WEIGHT = 1.0f;
@@ -199,7 +201,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
            GlobalSettings globalSettings, KeyguardStateController keyguardStateController,
            WindowManager windowManager, ToastFactory toastFactory,
            @Background Handler workerHandler,
            CarrierConfigTracker carrierConfigTracker) {
            CarrierConfigTracker carrierConfigTracker,
            LocationController locationController) {
        if (DEBUG) {
            Log.d(TAG, "Init InternetDialogController");
        }
@@ -227,6 +230,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        mWindowManager = windowManager;
        mToastFactory = toastFactory;
        mSignalDrawable = new SignalDrawable(mContext);
        mLocationController = locationController;
    }

    void onStart(@NonNull InternetDialogCallback callback, boolean canConfigWifi) {
@@ -788,6 +792,14 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        return false;
    }

    @WorkerThread
    boolean isWifiScanEnabled() {
        if (!mLocationController.isLocationEnabled()) {
            return false;
        }
        return mWifiManager.isScanAlwaysAvailable();
    }

    static class WifiEntryConnectCallback implements WifiEntry.ConnectCallback {
        final ActivityStarter mActivityStarter;
        final WifiEntry mWifiEntry;
+32 −3
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
import com.android.systemui.toast.SystemUIToast;
@@ -135,6 +136,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
    private Animator mAnimator;
    @Mock
    private CarrierConfigTracker mCarrierConfigTracker;
    @Mock
    private LocationController mLocationController;

    private TestableResources mTestableResources;
    private MockInternetDialogController mInternetDialogController;
@@ -170,7 +173,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
                mSubscriptionManager, mTelephonyManager, mWifiManager,
                mock(ConnectivityManager.class), mHandler, mExecutor, mBroadcastDispatcher,
                mock(KeyguardUpdateMonitor.class), mGlobalSettings, mKeyguardStateController,
                mWindowManager, mToastFactory, mWorkerHandler, mCarrierConfigTracker);
                mWindowManager, mToastFactory, mWorkerHandler, mCarrierConfigTracker,
                mLocationController);
        mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
                mInternetDialogController.mOnSubscriptionsChangedListener);
        mInternetDialogController.onStart(mInternetDialogCallback, true);
@@ -602,6 +606,30 @@ public class InternetDialogControllerTest extends SysuiTestCase {
        verify(mMergedCarrierEntry).setEnabled(false);
    }

    @Test
    public void isWifiScanEnabled_locationOff_returnFalse() {
        when(mLocationController.isLocationEnabled()).thenReturn(false);
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);

        assertThat(mInternetDialogController.isWifiScanEnabled()).isFalse();

        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);

        assertThat(mInternetDialogController.isWifiScanEnabled()).isFalse();
    }

    @Test
    public void isWifiScanEnabled_locationOn_returnIsScanAlwaysAvailable() {
        when(mLocationController.isLocationEnabled()).thenReturn(true);
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);

        assertThat(mInternetDialogController.isWifiScanEnabled()).isFalse();

        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);

        assertThat(mInternetDialogController.isWifiScanEnabled()).isTrue();
    }

    private String getResourcesString(String name) {
        return mContext.getResources().getString(getResourcesId(name));
    }
@@ -625,12 +653,13 @@ public class InternetDialogControllerTest extends SysuiTestCase {
                KeyguardUpdateMonitor keyguardUpdateMonitor, GlobalSettings globalSettings,
                KeyguardStateController keyguardStateController, WindowManager windowManager,
                ToastFactory toastFactory, Handler workerHandler,
                CarrierConfigTracker carrierConfigTracker) {
                CarrierConfigTracker carrierConfigTracker,
                LocationController locationController) {
            super(context, uiEventLogger, starter, accessPointController, subscriptionManager,
                    telephonyManager, wifiManager, connectivityManager, handler, mainExecutor,
                    broadcastDispatcher, keyguardUpdateMonitor, globalSettings,
                    keyguardStateController, windowManager, toastFactory, workerHandler,
                    carrierConfigTracker);
                    carrierConfigTracker, locationController);
            mGlobalSettings = globalSettings;
        }

+3 −3
Original line number Diff line number Diff line
@@ -282,7 +282,7 @@ public class InternetDialogTest extends SysuiTestCase {
    @Test
    public void updateDialog_wifiOffAndWifiScanOff_hideWifiScanNotify() {
        when(mWifiManager.isWifiEnabled()).thenReturn(false);
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
        when(mInternetDialogController.isWifiScanEnabled()).thenReturn(false);

        mInternetDialog.updateDialog();

@@ -292,7 +292,7 @@ public class InternetDialogTest extends SysuiTestCase {
    @Test
    public void updateDialog_wifiOffAndWifiScanOnAndDeviceLocked_hideWifiScanNotify() {
        when(mWifiManager.isWifiEnabled()).thenReturn(false);
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
        when(mInternetDialogController.isWifiScanEnabled()).thenReturn(true);
        when(mInternetDialogController.isDeviceLocked()).thenReturn(true);

        mInternetDialog.updateDialog();
@@ -303,7 +303,7 @@ public class InternetDialogTest extends SysuiTestCase {
    @Test
    public void updateDialog_wifiOffAndWifiScanOnAndDeviceUnlocked_showWifiScanNotify() {
        when(mWifiManager.isWifiEnabled()).thenReturn(false);
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
        when(mInternetDialogController.isWifiScanEnabled()).thenReturn(true);
        when(mInternetDialogController.isDeviceLocked()).thenReturn(false);

        mInternetDialog.updateDialog();