Merge "Restrict WiFi network connection" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-03-09 03:03:05 +00:00
committed by Android (Google) Code Review
4 changed files with 213 additions and 42 deletions

View File

@@ -628,15 +628,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
}
if (preference instanceof LongPressWifiEntryPreference) {
final WifiEntry selectedEntry =
((LongPressWifiEntryPreference) preference).getWifiEntry();
if (selectedEntry.shouldEditBeforeConnect()) {
launchConfigNewNetworkFragment(selectedEntry);
return true;
}
connect(selectedEntry, true /* editIfNoConfig */, true /* fullScreenEdit */);
onSelectedWifiPreferenceClick((LongPressWifiEntryPreference) preference);
} else if (preference == mAddWifiNetworkPreference) {
onAddNetworkPressed();
} else {
@@ -645,6 +637,25 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
return true;
}
@VisibleForTesting
void onSelectedWifiPreferenceClick(LongPressWifiEntryPreference preference) {
final WifiEntry selectedEntry = preference.getWifiEntry();
if (selectedEntry.shouldEditBeforeConnect()) {
launchConfigNewNetworkFragment(selectedEntry);
return;
}
if (selectedEntry.canConnect()) {
connect(selectedEntry, true /* editIfNoConfig */, true /* fullScreenEdit */);
return;
}
if (selectedEntry.isSaved()) {
launchNetworkDetailsFragment(preference);
}
}
private void launchWifiDppConfiguratorActivity(WifiEntry wifiEntry) {
final Intent intent = WifiDppUtils.getConfiguratorQrCodeGeneratorIntentOrNull(getContext(),
mWifiManager, wifiEntry);
@@ -984,7 +995,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
return new FirstWifiEntryPreference(getPrefContext(), wifiEntry, this);
}
private void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) {
@VisibleForTesting
void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) {
final WifiEntry wifiEntry = pref.getWifiEntry();
final Context context = getContext();
final CharSequence title =
@@ -1253,7 +1265,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
}
}
private void launchConfigNewNetworkFragment(WifiEntry wifiEntry) {
@VisibleForTesting
void launchConfigNewNetworkFragment(WifiEntry wifiEntry) {
final Bundle bundle = new Bundle();
bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY,
wifiEntry.getKey());

View File

@@ -17,6 +17,7 @@ package com.android.settings.wifi;
import android.content.Context;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceViewHolder;
@@ -43,4 +44,23 @@ public class LongPressWifiEntryPreference extends WifiEntryPreference {
view.itemView.setLongClickable(true);
}
}
@Override
public void refresh() {
super.refresh();
setEnabled(shouldEnabled());
}
@VisibleForTesting
boolean shouldEnabled() {
WifiEntry wifiEntry = getWifiEntry();
if (wifiEntry == null) return false;
boolean enabled = wifiEntry.canConnect();
// If Wi-Fi is connected or saved network, leave it enabled to disconnect or configure.
if (!enabled && (wifiEntry.canDisconnect() || wifiEntry.isSaved())) {
enabled = true;
}
return enabled;
}
}