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

Commit be80fff2 authored by Weng Su's avatar Weng Su
Browse files

Show progress bar when Wi-Fi scanning (QS)

Show the progress bar in Internet Dialog while we're currently
scanning for networks, and then stop when we receive the results of the
scan.

Fix: 308567866
Flag: NONE
Test: unit test
atest -c SystemUITests:AccessPointControllerImplTest \
         SystemUITests:InternetDialogTest \
         SystemUITests:InternetDialogControllerTest

Change-Id: I2205f7ea8c88f5fdc55c92430049b227a86f1ad5
parent d0830b9a
Loading
Loading
Loading
Loading
+7 −28
Original line number Diff line number Diff line
@@ -59,12 +59,12 @@ import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
import com.android.systemui.Prefs;
import com.android.systemui.res.R;
import com.android.systemui.accessibility.floatingmenu.AnnotationLinkSpan;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.wifitrackerlib.WifiEntry;
@@ -157,14 +157,6 @@ public class InternetDialog extends SystemUIDialog implements

    // Wi-Fi scanning progress bar
    protected boolean mIsProgressBarVisible;
    protected boolean mIsSearchingHidden;
    protected final Runnable mHideProgressBarRunnable = () -> {
        setProgressBarVisible(false);
    };
    protected Runnable mHideSearchingRunnable = () -> {
        mIsSearchingHidden = true;
        mInternetDialogSubTitle.setText(getSubtitleText());
    };

    @Inject
    public InternetDialog(Context context, InternetDialogFactory internetDialogFactory,
@@ -285,8 +277,6 @@ public class InternetDialog extends SystemUIDialog implements
        if (DEBUG) {
            Log.d(TAG, "onStop");
        }
        mHandler.removeCallbacks(mHideProgressBarRunnable);
        mHandler.removeCallbacks(mHideSearchingRunnable);
        mMobileNetworkLayout.setOnClickListener(null);
        mConnectedWifListLayout.setOnClickListener(null);
        if (mSecondaryMobileNetworkLayout != null) {
@@ -335,7 +325,6 @@ public class InternetDialog extends SystemUIDialog implements
            return;
        }

        showProgressBar();
        final boolean isDeviceLocked = mInternetDialogController.isDeviceLocked();
        final boolean isWifiEnabled = mInternetDialogController.isWifiEnabled();
        final boolean isWifiScanEnabled = mInternetDialogController.isWifiScanEnabled();
@@ -641,8 +630,7 @@ public class InternetDialog extends SystemUIDialog implements

    @Nullable
    CharSequence getSubtitleText() {
        return mInternetDialogController.getSubtitleText(
                mIsProgressBarVisible && !mIsSearchingHidden);
        return mInternetDialogController.getSubtitleText(mIsProgressBarVisible);
    }

    private Drawable getSignalStrengthDrawable(int subId) {
@@ -657,20 +645,6 @@ public class InternetDialog extends SystemUIDialog implements
        return mInternetDialogController.getMobileNetworkSummary(subId);
    }

    protected void showProgressBar() {
        if (!mInternetDialogController.isWifiEnabled()
                || mInternetDialogController.isDeviceLocked()) {
            setProgressBarVisible(false);
            return;
        }
        setProgressBarVisible(true);
        if (mConnectedWifiEntry != null || mWifiEntriesCount > 0) {
            mHandler.postDelayed(mHideProgressBarRunnable, PROGRESS_DELAY_MS);
        } else if (!mIsSearchingHidden) {
            mHandler.postDelayed(mHideSearchingRunnable, PROGRESS_DELAY_MS);
        }
    }

    private void setProgressBarVisible(boolean visible) {
        if (mIsProgressBarVisible == visible) {
            return;
@@ -822,6 +796,11 @@ public class InternetDialog extends SystemUIDialog implements
        });
    }

    @Override
    public void onWifiScan(boolean isScan) {
        setProgressBarVisible(isScan);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
+12 −1
Original line number Diff line number Diff line
@@ -75,7 +75,6 @@ import com.android.settingslib.mobile.TelephonyIcons;
import com.android.settingslib.net.SignalStrengthUtil;
import com.android.settingslib.wifi.WifiUtils;
import com.android.settingslib.wifi.dpp.WifiDppIntentHelper;
import com.android.systemui.res.R;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -84,6 +83,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
@@ -1129,6 +1129,15 @@ public class InternetDialogController implements AccessPointController.AccessPoi
    public void onSettingsActivityTriggered(Intent settingsIntent) {
    }

    @Override
    public void onWifiScan(boolean isScan) {
        if (!isWifiEnabled() || isDeviceLocked()) {
            mCallback.onWifiScan(false);
            return;
        }
        mCallback.onWifiScan(isScan);
    }

    private class InternetTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.DataConnectionStateListener,
            TelephonyCallback.DisplayInfoListener,
@@ -1372,6 +1381,8 @@ public class InternetDialogController implements AccessPointController.AccessPoi

        void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
                @Nullable WifiEntry connectedEntry, boolean hasMoreWifiEntries);

        void onWifiScan(boolean isScan);
    }

    void makeOverlayToast(int stringId) {
+7 −0
Original line number Diff line number Diff line
@@ -89,5 +89,12 @@ interface AccessPointController {
         * "wifi_start_connect_ssid" set as an extra
         */
        fun onSettingsActivityTriggered(settingsIntent: Intent?)

        /**
         * Called whenever a Wi-Fi scan is triggered.
         *
         * @param isScan Whether Wi-Fi scan is triggered or not.
         */
        fun onWifiScan(isScan: Boolean)
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -213,6 +213,12 @@ public class AccessPointControllerImpl implements AccessPointController,
        }
    }

    private void fireWifiScanCallback(boolean isScan) {
        for (AccessPointCallback callback : mCallbacks) {
            callback.onWifiScan(isScan);
        }
    }

    void dump(PrintWriter pw) {
        IndentingPrintWriter ipw = new IndentingPrintWriter(pw);
        ipw.println("AccessPointControllerImpl:");
@@ -239,6 +245,14 @@ public class AccessPointControllerImpl implements AccessPointController,
        scanForAccessPoints();
    }

    @Override
    public void onWifiEntriesChanged(@WifiPickerTracker.WifiEntriesChangedReason int reason) {
        onWifiEntriesChanged();
        if (reason == WifiPickerTracker.WIFI_ENTRIES_CHANGED_REASON_SCAN_RESULTS) {
            fireWifiScanCallback(false /* isScan */);
        }
    }

    @Override
    public void onNumSavedNetworksChanged() {
        // Do nothing
@@ -249,6 +263,11 @@ public class AccessPointControllerImpl implements AccessPointController,
        // Do nothing
    }

    @Override
    public void onScanRequested() {
        fireWifiScanCallback(true /* isScan */);
    }

    private final WifiEntry.ConnectCallback mConnectCallback = new WifiEntry.ConnectCallback() {
        @Override
        public void onConnectResult(int status) {
+39 −1
Original line number Diff line number Diff line
@@ -63,13 +63,13 @@ import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.settingslib.wifi.WifiUtils;
import com.android.settingslib.wifi.dpp.WifiDppIntentHelper;
import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
@@ -737,6 +737,44 @@ public class InternetDialogControllerTest extends SysuiTestCase {
        verify(mAccessPointController).scanForAccessPoints();
    }

    @Test
    public void onWifiScan_isWifiEnabledFalse_callbackOnWifiScanFalse() {
        reset(mInternetDialogCallback);
        when(mWifiStateWorker.isWifiEnabled()).thenReturn(false);

        mInternetDialogController.onWifiScan(true);

        verify(mInternetDialogCallback).onWifiScan(false);
    }

    @Test
    public void onWifiScan_isDeviceLockedTrue_callbackOnWifiScanFalse() {
        reset(mInternetDialogCallback);
        when(mKeyguardStateController.isUnlocked()).thenReturn(false);

        mInternetDialogController.onWifiScan(true);

        verify(mInternetDialogCallback).onWifiScan(false);
    }

    @Test
    public void onWifiScan_onWifiScanFalse_callbackOnWifiScanFalse() {
        reset(mInternetDialogCallback);

        mInternetDialogController.onWifiScan(false);

        verify(mInternetDialogCallback).onWifiScan(false);
    }

    @Test
    public void onWifiScan_onWifiScanTrue_callbackOnWifiScanTrue() {
        reset(mInternetDialogCallback);

        mInternetDialogController.onWifiScan(true);

        verify(mInternetDialogCallback).onWifiScan(true);
    }

    @Test
    public void setMergedCarrierWifiEnabledIfNeed_carrierProvisionsEnabled_doNothing() {
        when(mCarrierConfigTracker.getCarrierProvisionsWifiMergedNetworksBool(SUB_ID))
Loading