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

Commit 5cb66024 authored by Weng Su's avatar Weng Su Committed by Android (Google) Code Review
Browse files

Merge "Hide edit menu if network is uneditable" into rvc-qpr-dev

parents 21802a45 020af778
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
    // Interval between initiating SavedNetworkTracker scans
    private static final long SCAN_INTERVAL_MILLIS = 10_000;

    private NetworkDetailsTracker mNetworkDetailsTracker;
    @VisibleForTesting
    NetworkDetailsTracker mNetworkDetailsTracker;
    private HandlerThread mWorkerThread;
    private WifiDetailPreferenceController2 mWifiDetailPreferenceController2;
    private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>();
@@ -125,9 +126,11 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if (isEditable()) {
            MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
            item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        }
        super.onCreateOptionsMenu(menu, inflater);
    }

@@ -253,6 +256,17 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
                getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
    }

    private boolean isEditable() {
        if (mNetworkDetailsTracker == null) {
            return false;
        }
        final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry();
        if (wifiEntry == null) {
            return false;
        }
        return wifiEntry.isSaved();
    }

    /**
     * API call for refreshing the preferences in this fragment.
     */
+28 −4
Original line number Diff line number Diff line
@@ -24,9 +24,9 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.settings.SettingsEnums;
import android.view.Menu;
@@ -36,12 +36,17 @@ import android.view.MenuItem;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.wifitrackerlib.NetworkDetailsTracker;
import com.android.wifitrackerlib.WifiEntry;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

@@ -52,11 +57,22 @@ public class WifiNetworkDetailsFragment2Test {

    final String TEST_PREFERENCE_KEY = "TEST_PREFERENCE_KEY";

    @Mock
    WifiEntry mWifiEntry;
    @Mock
    NetworkDetailsTracker mNetworkDetailsTracker;
    @Mock
    Menu mMenu;
    private WifiNetworkDetailsFragment2 mFragment;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        doReturn(mWifiEntry).when(mNetworkDetailsTracker).getWifiEntry();
        doReturn(true).when(mWifiEntry).isSaved();

        mFragment = new WifiNetworkDetailsFragment2();
        mFragment.mNetworkDetailsTracker = mNetworkDetailsTracker;
    }

    @Test
@@ -77,15 +93,23 @@ public class WifiNetworkDetailsFragment2Test {

    @Test
    public void onCreateOptionsMenu_shouldSetCorrectIcon() {
        final Menu menu = mock(Menu.class);
        final MenuItem menuItem = mock(MenuItem.class);
        doReturn(menuItem).when(menu).add(anyInt(), eq(Menu.FIRST), anyInt(), anyInt());
        doReturn(menuItem).when(mMenu).add(anyInt(), eq(Menu.FIRST), anyInt(), anyInt());

        mFragment.onCreateOptionsMenu(menu, mock(MenuInflater.class));
        mFragment.onCreateOptionsMenu(mMenu, mock(MenuInflater.class));

        verify(menuItem).setIcon(com.android.internal.R.drawable.ic_mode_edit);
    }

    @Test
    public void onCreateOptionsMenu_isNotSavedNetwork_shouldNotAddEditMenu() {
        doReturn(false).when(mWifiEntry).isSaved();

        mFragment.onCreateOptionsMenu(mMenu, mock(MenuInflater.class));

        verify(mMenu, never()).add(anyInt(), anyInt(), anyInt(), eq(R.string.wifi_modify));
    }

    @Test
    public void refreshPreferences_controllerShouldUpdateStateAndDisplayPreference() {
        final FakeFragment fragment = spy(new FakeFragment());