Merge "Modify Wi-Fi network details settings to restricted style" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
feb811053f
@@ -23,6 +23,7 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
@@ -40,7 +41,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.RestrictedDashboardFragment;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.wifi.WifiConfigUiBase2;
|
import com.android.settings.wifi.WifiConfigUiBase2;
|
||||||
import com.android.settings.wifi.WifiDialog2;
|
import com.android.settings.wifi.WifiDialog2;
|
||||||
@@ -62,7 +63,7 @@ import java.util.List;
|
|||||||
* <p>The key of {@link WifiEntry} should be saved to the intent Extras when launching this class
|
* <p>The key of {@link WifiEntry} should be saved to the intent Extras when launching this class
|
||||||
* in order to properly render this page.
|
* in order to properly render this page.
|
||||||
*/
|
*/
|
||||||
public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
public class WifiNetworkDetailsFragment2 extends RestrictedDashboardFragment implements
|
||||||
WifiDialog2.WifiDialog2Listener {
|
WifiDialog2.WifiDialog2Listener {
|
||||||
|
|
||||||
private static final String TAG = "WifiNetworkDetailsFrg2";
|
private static final String TAG = "WifiNetworkDetailsFrg2";
|
||||||
@@ -75,6 +76,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;
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
boolean mIsUiRestricted;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
NetworkDetailsTracker mNetworkDetailsTracker;
|
NetworkDetailsTracker mNetworkDetailsTracker;
|
||||||
private HandlerThread mWorkerThread;
|
private HandlerThread mWorkerThread;
|
||||||
@@ -83,6 +86,34 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
List<AbstractPreferenceController> mControllers;
|
List<AbstractPreferenceController> mControllers;
|
||||||
|
|
||||||
|
public WifiNetworkDetailsFragment2() {
|
||||||
|
super(UserManager.DISALLOW_CONFIG_WIFI);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle icicle) {
|
||||||
|
super.onCreate(icicle);
|
||||||
|
setIfOnlyAvailableForAdmins(true);
|
||||||
|
mIsUiRestricted = isUiRestricted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
if (mIsUiRestricted) {
|
||||||
|
restrictUi();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void restrictUi() {
|
||||||
|
clearWifiEntryCallback();
|
||||||
|
if (!isUiRestrictedByOnlyAdmin()) {
|
||||||
|
getEmptyTextView().setText(R.string.wifi_empty_list_user_restricted);
|
||||||
|
}
|
||||||
|
getPreferenceScreen().removeAll();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
mWorkerThread.quit();
|
mWorkerThread.quit();
|
||||||
@@ -126,7 +157,7 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
if (isEditable()) {
|
if (!mIsUiRestricted && isEditable()) {
|
||||||
MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
|
MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
|
||||||
item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
|
item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
|
||||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||||
@@ -255,6 +286,17 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
|
getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void clearWifiEntryCallback() {
|
||||||
|
if (mNetworkDetailsTracker == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry();
|
||||||
|
if (wifiEntry == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
wifiEntry.setListener(null);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isEditable() {
|
private boolean isEditable() {
|
||||||
if (mNetworkDetailsTracker == null) {
|
if (mNetworkDetailsTracker == null) {
|
||||||
return false;
|
return false;
|
||||||
|
@@ -32,6 +32,7 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -110,6 +111,41 @@ public class WifiNetworkDetailsFragment2Test {
|
|||||||
verify(mMenu, never()).add(anyInt(), anyInt(), anyInt(), eq(R.string.wifi_modify));
|
verify(mMenu, never()).add(anyInt(), anyInt(), anyInt(), eq(R.string.wifi_modify));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateOptionsMenu_uiRestricted_shouldNotAddEditMenu() {
|
||||||
|
mFragment.mIsUiRestricted = true;
|
||||||
|
|
||||||
|
mFragment.onCreateOptionsMenu(mMenu, mock(MenuInflater.class));
|
||||||
|
|
||||||
|
verify(mMenu, never()).add(anyInt(), anyInt(), anyInt(), eq(R.string.wifi_modify));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void restrictUi_shouldShowRestrictedText() {
|
||||||
|
final FakeFragment fragment = spy(new FakeFragment());
|
||||||
|
final PreferenceScreen screen = mock(PreferenceScreen.class);
|
||||||
|
final TextView restrictedText = mock(TextView.class);
|
||||||
|
doReturn(screen).when(fragment).getPreferenceScreen();
|
||||||
|
doReturn(false).when(fragment).isUiRestrictedByOnlyAdmin();
|
||||||
|
doReturn(restrictedText).when(fragment).getEmptyTextView();
|
||||||
|
|
||||||
|
fragment.restrictUi();
|
||||||
|
|
||||||
|
verify(restrictedText).setText(anyInt());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void restrictUi_shouldRemoveAllPreferences() {
|
||||||
|
final FakeFragment fragment = spy(new FakeFragment());
|
||||||
|
final PreferenceScreen screen = mock(PreferenceScreen.class);
|
||||||
|
doReturn(screen).when(fragment).getPreferenceScreen();
|
||||||
|
doReturn(true).when(fragment).isUiRestrictedByOnlyAdmin();
|
||||||
|
|
||||||
|
fragment.restrictUi();
|
||||||
|
|
||||||
|
verify(screen).removeAll();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void refreshPreferences_controllerShouldUpdateStateAndDisplayPreference() {
|
public void refreshPreferences_controllerShouldUpdateStateAndDisplayPreference() {
|
||||||
final FakeFragment fragment = spy(new FakeFragment());
|
final FakeFragment fragment = spy(new FakeFragment());
|
||||||
@@ -136,6 +172,11 @@ public class WifiNetworkDetailsFragment2Test {
|
|||||||
public void addPreferenceController(AbstractPreferenceController controller) {
|
public void addPreferenceController(AbstractPreferenceController controller) {
|
||||||
super.addPreferenceController(controller);
|
super.addPreferenceController(controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUiRestrictedByOnlyAdmin() {
|
||||||
|
return super.isUiRestrictedByOnlyAdmin();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TestController extends BasePreferenceController {
|
public class TestController extends BasePreferenceController {
|
||||||
|
Reference in New Issue
Block a user