Fix WiFi toggle issue of Internet Settings

- Because b/209906859 needs to add WiFi service check for WiFi-less
pixel project.

- But mWifiManager has not been initialized before the
addWifiSwitchPreferenceController() function, which will cause the
controller to not handle the WiFi switching UI.

- Add a hasWifiManager() function to initialize the WiFi manager and
handle related functions.

Bug: 212211915
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest

Change-Id: Idc0d4cdc31403f0ab9a4eb787e4c70be605f7ddb
This commit is contained in:
Weng Su
2021-12-28 21:24:46 +08:00
parent 8551b0d7c5
commit 0219dc1378
2 changed files with 23 additions and 16 deletions

View File

@@ -266,13 +266,22 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
setPinnedHeaderView(R.layout.progress_header); setPinnedHeaderView(R.layout.progress_header);
setProgressBarVisible(false); setProgressBarVisible(false);
mWifiManager = activity.getSystemService(WifiManager.class); if (hasWifiManager()) {
if (mWifiManager != null) {
setLoading(true, false); setLoading(true, false);
mIsViewLoading = true; mIsViewLoading = true;
} }
} }
private boolean hasWifiManager() {
if (mWifiManager != null) return true;
Context context = getContext();
if (context == null) return false;
mWifiManager = context.getSystemService(WifiManager.class);
return (mWifiManager != null);
}
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
@@ -337,7 +346,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
} }
private void addWifiSwitchPreferenceController() { private void addWifiSwitchPreferenceController() {
if (mWifiManager == null) return; if (!hasWifiManager()) return;
if (mWifiSwitchPreferenceController == null) { if (mWifiSwitchPreferenceController == null) {
mWifiSwitchPreferenceController = mWifiSwitchPreferenceController =
new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle()); new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle());
@@ -349,7 +358,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
if (mWifiManager != null) { if (hasWifiManager()) {
mWifiPickerTrackerHelper = mWifiPickerTrackerHelper =
new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this); new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this);
mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker(); mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker();
@@ -420,7 +429,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
if (mIsViewLoading) { if (mIsViewLoading) {
final long delayMillis = (mWifiManager != null && mWifiManager.isWifiEnabled()) final long delayMillis = (hasWifiManager() && mWifiManager.isWifiEnabled())
? 1000 : 100; ? 1000 : 100;
getView().postDelayed(mRemoveLoadingRunnable, delayMillis); getView().postDelayed(mRemoveLoadingRunnable, delayMillis);
} }
@@ -482,7 +491,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (mWifiManager == null) { if (!hasWifiManager()) {
// Do nothing // Do nothing
} else if (requestCode == ADD_NETWORK_REQUEST) { } else if (requestCode == ADD_NETWORK_REQUEST) {
handleAddNetworkRequest(resultCode, data); handleAddNetworkRequest(resultCode, data);
@@ -720,7 +729,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
/** Called when the state of Wifi has changed. */ /** Called when the state of Wifi has changed. */
@Override @Override
public void onWifiStateChanged() { public void onWifiStateChanged() {
if (mIsRestricted || mWifiManager == null) { if (mIsRestricted || !hasWifiManager()) {
return; return;
} }
final int wifiState = mWifiPickerTracker.getWifiState(); final int wifiState = mWifiPickerTracker.getWifiState();
@@ -770,7 +779,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
} }
final LocationManager locationManager = context.getSystemService(LocationManager.class); final LocationManager locationManager = context.getSystemService(LocationManager.class);
if (mWifiManager == null || isWifiEnabled || !locationManager.isLocationEnabled() if (!hasWifiManager() || isWifiEnabled || !locationManager.isLocationEnabled()
|| !mWifiManager.isScanAlwaysAvailable()) { || !mWifiManager.isScanAlwaysAvailable()) {
mWifiStatusMessagePreference.setVisible(false); mWifiStatusMessagePreference.setVisible(false);
return; return;
@@ -1063,7 +1072,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
final Context context = getContext(); final Context context = getContext();
final PowerManager powerManager = context.getSystemService(PowerManager.class); final PowerManager powerManager = context.getSystemService(PowerManager.class);
final ContentResolver contentResolver = context.getContentResolver(); final ContentResolver contentResolver = context.getContentResolver();
return mWifiManager != null return hasWifiManager()
&& mWifiManager.isAutoWakeupEnabled() && mWifiManager.isAutoWakeupEnabled()
&& mWifiManager.isScanAlwaysAvailable() && mWifiManager.isScanAlwaysAvailable()
&& Settings.Global.getInt(contentResolver, && Settings.Global.getInt(contentResolver,
@@ -1085,7 +1094,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
private void handleAddNetworkSubmitEvent(Intent data) { private void handleAddNetworkSubmitEvent(Intent data) {
final WifiConfiguration wifiConfiguration = data.getParcelableExtra( final WifiConfiguration wifiConfiguration = data.getParcelableExtra(
AddNetworkFragment.WIFI_CONFIG_KEY); AddNetworkFragment.WIFI_CONFIG_KEY);
if (wifiConfiguration != null && mWifiManager != null) { if (wifiConfiguration != null && hasWifiManager()) {
mWifiManager.save(wifiConfiguration, mSaveListener); mWifiManager.save(wifiConfiguration, mSaveListener);
} }
} }
@@ -1122,7 +1131,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@Override @Override
public void onSubmit(WifiDialog2 dialog) { public void onSubmit(WifiDialog2 dialog) {
if (mWifiManager == null) return; if (!hasWifiManager()) return;
final int dialogMode = dialog.getMode(); final int dialogMode = dialog.getMode();
final WifiConfiguration config = dialog.getController().getConfig(); final WifiConfiguration config = dialog.getController().getConfig();

View File

@@ -45,7 +45,6 @@ import android.os.Bundle;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.util.FeatureFlagUtils;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@@ -162,15 +161,14 @@ public class NetworkProviderSettingsTest {
@Test @Test
public void addNetworkFragmentSendResult_onActivityResult_shouldHandleEvent() { public void addNetworkFragmentSendResult_onActivityResult_shouldHandleEvent() {
final NetworkProviderSettings NetworkProviderSettings = spy(new NetworkProviderSettings());
final Intent intent = new Intent(); final Intent intent = new Intent();
doNothing().when(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), doNothing().when(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(),
any(Intent.class)); any(Intent.class));
NetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST, mNetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST,
Activity.RESULT_OK, intent); Activity.RESULT_OK, intent);
verify(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); verify(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class));
} }
@Test @Test