Hide edit menu if network is uneditable
- Screenshot: https://screenshot.googleplex.com/3BhZRBrmQXjeaGL Bug: 161896161 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiNetworkDetailsFragment2Test Change-Id: I47ea2cf19e178eff48f23e56903d0daa4ef8fa28
This commit is contained in:
@@ -75,7 +75,8 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
// Interval between initiating SavedNetworkTracker scans
|
// Interval between initiating SavedNetworkTracker scans
|
||||||
private static final long SCAN_INTERVAL_MILLIS = 10_000;
|
private static final long SCAN_INTERVAL_MILLIS = 10_000;
|
||||||
|
|
||||||
private NetworkDetailsTracker mNetworkDetailsTracker;
|
@VisibleForTesting
|
||||||
|
NetworkDetailsTracker mNetworkDetailsTracker;
|
||||||
private HandlerThread mWorkerThread;
|
private HandlerThread mWorkerThread;
|
||||||
private WifiDetailPreferenceController2 mWifiDetailPreferenceController2;
|
private WifiDetailPreferenceController2 mWifiDetailPreferenceController2;
|
||||||
private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>();
|
private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>();
|
||||||
@@ -125,9 +126,11 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
|
if (isEditable()) {
|
||||||
item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
|
MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
|
||||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
|
||||||
|
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||||
|
}
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,6 +255,17 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
|
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.
|
* API call for refreshing the preferences in this fragment.
|
||||||
*/
|
*/
|
||||||
|
@@ -24,9 +24,9 @@ import static org.mockito.ArgumentMatchers.anyInt;
|
|||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@@ -36,12 +36,17 @@ import android.view.MenuItem;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.wifitrackerlib.NetworkDetailsTracker;
|
||||||
|
import com.android.wifitrackerlib.WifiEntry;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
@@ -52,11 +57,22 @@ public class WifiNetworkDetailsFragment2Test {
|
|||||||
|
|
||||||
final String TEST_PREFERENCE_KEY = "TEST_PREFERENCE_KEY";
|
final String TEST_PREFERENCE_KEY = "TEST_PREFERENCE_KEY";
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
WifiEntry mWifiEntry;
|
||||||
|
@Mock
|
||||||
|
NetworkDetailsTracker mNetworkDetailsTracker;
|
||||||
|
@Mock
|
||||||
|
Menu mMenu;
|
||||||
private WifiNetworkDetailsFragment2 mFragment;
|
private WifiNetworkDetailsFragment2 mFragment;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
doReturn(mWifiEntry).when(mNetworkDetailsTracker).getWifiEntry();
|
||||||
|
doReturn(true).when(mWifiEntry).isSaved();
|
||||||
|
|
||||||
mFragment = new WifiNetworkDetailsFragment2();
|
mFragment = new WifiNetworkDetailsFragment2();
|
||||||
|
mFragment.mNetworkDetailsTracker = mNetworkDetailsTracker;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -77,15 +93,23 @@ public class WifiNetworkDetailsFragment2Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateOptionsMenu_shouldSetCorrectIcon() {
|
public void onCreateOptionsMenu_shouldSetCorrectIcon() {
|
||||||
final Menu menu = mock(Menu.class);
|
|
||||||
final MenuItem menuItem = mock(MenuItem.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);
|
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
|
@Test
|
||||||
public void refreshPreferences_controllerShouldUpdateStateAndDisplayPreference() {
|
public void refreshPreferences_controllerShouldUpdateStateAndDisplayPreference() {
|
||||||
final FakeFragment fragment = spy(new FakeFragment());
|
final FakeFragment fragment = spy(new FakeFragment());
|
||||||
|
Reference in New Issue
Block a user