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

Commit 99cd495d authored by Weng Su's avatar Weng Su
Browse files

Launch Wi-Fi details for connected Wi-Fi network

- Since the posspoint Wi-Fi entry can be connected even if the entry is not saved

- Allow to launch Wi-Fi details when the entry is connected but not saved

Bug: 363151879
Flag: EXEMPT bugfix
Test: Manual testing
atest -c NetworkProviderSettingsTest

Change-Id: I004b8a33bdd07cb92e167039949919f255c5303e
parent ecac69fd
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package com.android.settings.network;
import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;

import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;

import android.app.Activity;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
@@ -669,7 +671,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    @VisibleForTesting
    void addModifyMenuIfSuitable(ContextMenu menu, WifiEntry wifiEntry) {
        if (mIsAdmin && wifiEntry.isSaved()
                && wifiEntry.getConnectedState() != WifiEntry.CONNECTED_STATE_CONNECTED) {
                && wifiEntry.getConnectedState() != CONNECTED_STATE_CONNECTED) {
            menu.add(Menu.NONE, MENU_ID_MODIFY, 0 /* order */, R.string.wifi_modify);
        }
    }
@@ -765,7 +767,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment

    private void showDialog(WifiEntry wifiEntry, int dialogMode) {
        if (WifiUtils.isNetworkLockedDown(getActivity(), wifiEntry.getWifiConfiguration())
                && wifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) {
                && wifiEntry.getConnectedState() == CONNECTED_STATE_CONNECTED) {
            RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
                    RestrictedLockUtilsInternal.getDeviceOwner(getActivity()));
            return;
@@ -1068,8 +1070,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    @VisibleForTesting
    void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) {
        final WifiEntry wifiEntry = pref.getWifiEntry();
        if (!wifiEntry.isSaved()) {
            Log.w(TAG, "launchNetworkDetailsFragment: Don't launch because WifiEntry isn't saved!");
        if (!wifiEntry.isSaved() && wifiEntry.getConnectedState() != CONNECTED_STATE_CONNECTED) {
            Log.w(TAG, "Don't launch Wi-Fi details because WifiEntry is not saved or connected!");
            return;
        }
        final Context context = requireContext();
+46 −5
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.android.settings.network.NetworkProviderSettings.MENU_ID_MODIF
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_SHARE;
import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT;
import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY;
import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;
import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_DISCONNECTED;
import static com.android.wifitrackerlib.WifiPickerTracker.WIFI_ENTRIES_CHANGED_REASON_GENERAL;

@@ -343,7 +344,7 @@ public class NetworkProviderSettingsTest {
        when(mWifiEntry.canDisconnect()).thenReturn(true);
        when(mWifiEntry.canForget()).thenReturn(true);
        when(mWifiEntry.isSaved()).thenReturn(true);
        when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED);

        final LongPressWifiEntryPreference connectedWifiEntryPreference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);
@@ -366,7 +367,7 @@ public class NetworkProviderSettingsTest {
        when(mWifiEntry.canShare()).thenReturn(true);
        when(mWifiEntry.canForget()).thenReturn(true);
        when(mWifiEntry.isSaved()).thenReturn(true);
        when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED);

        final LongPressWifiEntryPreference connectedWifiEntryPreference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);
@@ -388,7 +389,7 @@ public class NetworkProviderSettingsTest {
        when(mWifiEntry.canShare()).thenReturn(false);
        when(mWifiEntry.canForget()).thenReturn(true);
        when(mWifiEntry.isSaved()).thenReturn(true);
        when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED);

        final LongPressWifiEntryPreference connectedWifiEntryPreference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);
@@ -872,14 +873,54 @@ public class NetworkProviderSettingsTest {
    }

    @Test
    public void launchNetworkDetailsFragment_wifiEntryIsNotSaved_ignoreWifiEntry() {
    public void launchNetworkDetailsFragment_entryDisconnectedNotSaved_ignore() {
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
        when(mWifiEntry.isSaved()).thenReturn(false);
        LongPressWifiEntryPreference preference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);

        mNetworkProviderSettings.launchNetworkDetailsFragment(preference);

        verify(mWifiEntry, never()).getKey();
        verify(mContext, never()).startActivity(any());
    }

    @Test
    public void launchNetworkDetailsFragment_entryConnectedNotSaved_launch() {
        doNothing().when(mContext).startActivity(any());
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED);
        when(mWifiEntry.isSaved()).thenReturn(false);
        LongPressWifiEntryPreference preference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);

        mNetworkProviderSettings.launchNetworkDetailsFragment(preference);

        verify(mContext).startActivity(any());
    }

    @Test
    public void launchNetworkDetailsFragment_entryDisconnectedSaved_launch() {
        doNothing().when(mContext).startActivity(any());
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
        when(mWifiEntry.isSaved()).thenReturn(true);
        LongPressWifiEntryPreference preference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);

        mNetworkProviderSettings.launchNetworkDetailsFragment(preference);

        verify(mContext).startActivity(any());
    }

    @Test
    public void launchNetworkDetailsFragment_entryConnectedSaved_launch() {
        doNothing().when(mContext).startActivity(any());
        when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED);
        when(mWifiEntry.isSaved()).thenReturn(true);
        LongPressWifiEntryPreference preference =
                mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);

        mNetworkProviderSettings.launchNetworkDetailsFragment(preference);

        verify(mContext).startActivity(any());
    }

    @Implements(PreferenceFragmentCompat.class)