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

Commit f590d5c6 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Implement context menu for ConnectedAccessPointPreference" into qt-dev

parents f6f4ae6e faede7ce
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.view.View;

import androidx.annotation.DrawableRes;
import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceViewHolder;

import com.android.settings.R;
@@ -29,15 +30,16 @@ import com.android.settingslib.wifi.AccessPointPreference;
/**
 * An AP preference for the currently connected AP
 */
public class ConnectedAccessPointPreference extends AccessPointPreference implements
public class ConnectedAccessPointPreference extends LongPressAccessPointPreference implements
        View.OnClickListener {

    private OnGearClickListener mOnGearClickListener;
    private boolean mIsCaptivePortal;

    public ConnectedAccessPointPreference(AccessPoint accessPoint, Context context,
            UserBadgeCache cache, @DrawableRes int iconResId, boolean forSavedNetworks) {
        super(accessPoint, context, cache, iconResId, forSavedNetworks);
            UserBadgeCache cache, @DrawableRes int iconResId, boolean forSavedNetworks,
            Fragment fragment) {
        super(accessPoint, context, cache, forSavedNetworks, iconResId, fragment);
    }

    @Override
+19 −15
Original line number Diff line number Diff line
@@ -71,7 +71,6 @@ import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
import com.android.settings.widget.SwitchBarController;
import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settings.wifi.savedaccesspoints.SavedAccessPointsWifiSettings;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.SearchIndexable;
@@ -100,7 +99,8 @@ public class WifiSettings extends RestrictedSettingsFragment
    private static final String TAG = "WifiSettings";

    private static final int MENU_ID_CONNECT = Menu.FIRST + 6;
    private static final int MENU_ID_FORGET = Menu.FIRST + 7;
    @VisibleForTesting
    static final int MENU_ID_FORGET = Menu.FIRST + 7;
    private static final int MENU_ID_MODIFY = Menu.FIRST + 8;

    public static final int WIFI_DIALOG_ID = 1;
@@ -459,7 +459,7 @@ public class WifiSettings extends RestrictedSettingsFragment
                    ((LongPressAccessPointPreference) preference).getAccessPoint();
            menu.setHeaderTitle(mSelectedAccessPoint.getTitle());
            if (mSelectedAccessPoint.isConnectable()) {
                menu.add(Menu.NONE, MENU_ID_CONNECT, 0, R.string.wifi_menu_connect);
                menu.add(Menu.NONE, MENU_ID_CONNECT, 0 /* order */, R.string.wifi_connect);
            }

            WifiConfiguration config = mSelectedAccessPoint.getConfig();
@@ -468,14 +468,17 @@ public class WifiSettings extends RestrictedSettingsFragment
                return;
            }

            if (mSelectedAccessPoint.isSaved() || mSelectedAccessPoint.isEphemeral()) {
                // Allow forgetting a network if either the network is saved or ephemerally
                // connected. (In the latter case, "forget" blacklists the network so it won't
                // be used again, ephemerally).
                menu.add(Menu.NONE, MENU_ID_FORGET, 0, R.string.wifi_menu_forget);
            // "forget" for normal saved network. And "disconnect" for ephemeral network because we
            // could only disconnect it and put it in blacklists so it won't be used again.
            if (mSelectedAccessPoint.isEphemeral()) {
                menu.add(Menu.NONE, MENU_ID_FORGET, 0 /* order */,
                    R.string.wifi_disconnect_button_text);
            } else if (mSelectedAccessPoint.isSaved()) {
                menu.add(Menu.NONE, MENU_ID_FORGET, 0 /* order */, R.string.forget);
            }
            if (mSelectedAccessPoint.isSaved()) {
                menu.add(Menu.NONE, MENU_ID_MODIFY, 0, R.string.wifi_menu_modify);

            if (mSelectedAccessPoint.isSaved() && !mSelectedAccessPoint.isActive()) {
                menu.add(Menu.NONE, MENU_ID_MODIFY, 0 /* order */, R.string.wifi_modify);
            }
        }
    }
@@ -783,10 +786,11 @@ public class WifiSettings extends RestrictedSettingsFragment
    }

    @NonNull
    private ConnectedAccessPointPreference createConnectedAccessPointPreference(
            AccessPoint accessPoint) {
        return new ConnectedAccessPointPreference(accessPoint, getPrefContext(), mUserBadgeCache,
                R.drawable.ic_wifi_signal_0, false /* forSavedNetworks */);
    @VisibleForTesting
    ConnectedAccessPointPreference createConnectedAccessPointPreference(
            AccessPoint accessPoint, Context context) {
        return new ConnectedAccessPointPreference(accessPoint, context, mUserBadgeCache,
                R.drawable.ic_wifi_signal_0, false /* forSavedNetworks */, this);
    }

    /**
@@ -839,7 +843,7 @@ public class WifiSettings extends RestrictedSettingsFragment
     */
    private void addConnectedAccessPointPreference(AccessPoint connectedAp) {
        final ConnectedAccessPointPreference pref =
                createConnectedAccessPointPreference(connectedAp);
                createConnectedAccessPointPreference(connectedAp, getPrefContext());
        registerCaptivePortalNetworkCallback(getCurrentWifiNetwork(), pref);

        // Launch details page or captive portal on click.
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ public class ConnectedAccessPointPreferenceTest {

        mContext = RuntimeEnvironment.application;
        mConnectedAccessPointPreference = new ConnectedAccessPointPreference(mAccessPoint, mContext,
                null, 0 /* iconResId */, false /* forSavedNetworks */);
                null, 0 /* iconResId */, false /* forSavedNetworks */, null /* fragment */);
        mConnectedAccessPointPreference.setOnGearClickListener(mOnGearClickListener);
    }

+25 −0
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ import android.os.PowerManager;
import android.os.UserManager;
import android.provider.Settings;

import android.view.ContextMenu;
import android.view.View;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.Preference;

@@ -44,6 +46,7 @@ import com.android.settings.R;
import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.WifiTracker;

import org.junit.Before;
@@ -205,4 +208,26 @@ public class WifiSettingsTest {
        verify(mDataUsagePreference).setVisible(true);
        verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/, eq(null) /*service*/);
    }

    @Test
    public void onCreateContextMenu_shouldHaveForgetMenuForConnectedAccessPreference() {
        final FragmentActivity mockActivity = mock(FragmentActivity.class);
        when(mockActivity.getApplicationContext()).thenReturn(mContext);
        when(mWifiSettings.getActivity()).thenReturn(mockActivity);

        final AccessPoint accessPoint = mock(AccessPoint.class);
        when(accessPoint.isConnectable()).thenReturn(false);
        when(accessPoint.isSaved()).thenReturn(true);
        when(accessPoint.isActive()).thenReturn(true);

        final ConnectedAccessPointPreference connectedPreference =
            mWifiSettings.createConnectedAccessPointPreference(accessPoint, mContext);
        final View view = mock(View.class);
        when(view.getTag()).thenReturn(connectedPreference);

        final ContextMenu menu = mock(ContextMenu.class);
        mWifiSettings.onCreateContextMenu(menu, view, null /* info */);

        verify(menu).add(anyInt(), eq(WifiSettings.MENU_ID_FORGET), anyInt(), anyInt());
    }
}