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

Commit 0b34d62f authored by Weng Su's avatar Weng Su Committed by Automerger Merge Worker
Browse files

Merge "Hide edit menu if network is uneditable" into rvc-qpr-dev am: 5cb66024

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/13945393

Change-Id: If5fddd3870d6c1bf94cf235439bf3543432824d9
parents 5d8e7a26 5cb66024
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());