Merge "Fix modification of WifiDialog doesn't take effect on details page" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4653879a22
@@ -24,19 +24,22 @@ import android.net.wifi.WifiManager;
|
|||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.DropDownPreference;
|
import androidx.preference.DropDownPreference;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.wifi.WifiDialog;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link AbstractPreferenceController} that controls whether the wifi network is metered or not
|
* {@link AbstractPreferenceController} that controls whether the wifi network is metered or not
|
||||||
*/
|
*/
|
||||||
public class WifiMeteredPreferenceController extends BasePreferenceController implements
|
public class WifiMeteredPreferenceController extends BasePreferenceController implements
|
||||||
Preference.OnPreferenceChangeListener {
|
Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
|
||||||
|
|
||||||
private static final String KEY_WIFI_METERED = "metered";
|
private static final String KEY_WIFI_METERED = "metered";
|
||||||
private WifiConfiguration mWifiConfiguration;
|
private WifiConfiguration mWifiConfiguration;
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
|
private Preference mPreference;
|
||||||
|
|
||||||
public WifiMeteredPreferenceController(Context context, WifiConfiguration wifiConfiguration) {
|
public WifiMeteredPreferenceController(Context context, WifiConfiguration wifiConfiguration) {
|
||||||
super(context, KEY_WIFI_METERED);
|
super(context, KEY_WIFI_METERED);
|
||||||
@@ -81,4 +84,25 @@ public class WifiMeteredPreferenceController extends BasePreferenceController im
|
|||||||
private void updateSummary(DropDownPreference preference, int meteredOverride) {
|
private void updateSummary(DropDownPreference preference, int meteredOverride) {
|
||||||
preference.setSummary(preference.getEntries()[meteredOverride]);
|
preference.setSummary(preference.getEntries()[meteredOverride]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
|
super.displayPreference(screen);
|
||||||
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubmit(WifiDialog dialog) {
|
||||||
|
if (dialog.getController() != null) {
|
||||||
|
final WifiConfiguration newConfig = dialog.getController().getConfig();
|
||||||
|
if (newConfig == null || mWifiConfiguration == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newConfig.meteredOverride != mWifiConfiguration.meteredOverride) {
|
||||||
|
mWifiConfiguration = newConfig;
|
||||||
|
onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -47,12 +47,14 @@ import java.util.List;
|
|||||||
* <p>The AccessPoint should be saved to the intent Extras when launching this class via
|
* <p>The AccessPoint should be saved to the intent Extras when launching this class via
|
||||||
* {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page.
|
* {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page.
|
||||||
*/
|
*/
|
||||||
public class WifiNetworkDetailsFragment extends DashboardFragment {
|
public class WifiNetworkDetailsFragment extends DashboardFragment implements
|
||||||
|
WifiDialog.WifiDialogListener {
|
||||||
|
|
||||||
private static final String TAG = "WifiNetworkDetailsFrg";
|
private static final String TAG = "WifiNetworkDetailsFrg";
|
||||||
|
|
||||||
private AccessPoint mAccessPoint;
|
private AccessPoint mAccessPoint;
|
||||||
private WifiDetailPreferenceController mWifiDetailPreferenceController;
|
private WifiDetailPreferenceController mWifiDetailPreferenceController;
|
||||||
|
private List<WifiDialog.WifiDialogListener> mWifiDialogListeners = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
@@ -89,7 +91,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
|| mAccessPoint == null) {
|
|| mAccessPoint == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return WifiDialog.createModal(getActivity(), mWifiDetailPreferenceController, mAccessPoint,
|
return WifiDialog.createModal(getActivity(), this, mAccessPoint,
|
||||||
WifiConfigUiBase.MODE_MODIFY);
|
WifiConfigUiBase.MODE_MODIFY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,15 +137,31 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
|
|
||||||
controllers.add(mWifiDetailPreferenceController);
|
controllers.add(mWifiDetailPreferenceController);
|
||||||
controllers.add(new AddDevicePreferenceController(context).init(mAccessPoint));
|
controllers.add(new AddDevicePreferenceController(context).init(mAccessPoint));
|
||||||
controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()));
|
|
||||||
WifiPrivacyPreferenceController privacyController = new WifiPrivacyPreferenceController(
|
final WifiMeteredPreferenceController meteredPreferenceController =
|
||||||
context);
|
new WifiMeteredPreferenceController(context, mAccessPoint.getConfig());
|
||||||
|
controllers.add(meteredPreferenceController);
|
||||||
|
|
||||||
|
final WifiPrivacyPreferenceController privacyController =
|
||||||
|
new WifiPrivacyPreferenceController(context);
|
||||||
privacyController.setWifiConfiguration(mAccessPoint.getConfig());
|
privacyController.setWifiConfiguration(mAccessPoint.getConfig());
|
||||||
privacyController.setIsEphemeral(mAccessPoint.isEphemeral());
|
privacyController.setIsEphemeral(mAccessPoint.isEphemeral());
|
||||||
privacyController.setIsPasspoint(
|
privacyController.setIsPasspoint(
|
||||||
mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig());
|
mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig());
|
||||||
controllers.add(privacyController);
|
controllers.add(privacyController);
|
||||||
|
|
||||||
|
// Sets callback listener for wifi dialog.
|
||||||
|
mWifiDialogListeners.add(mWifiDetailPreferenceController);
|
||||||
|
mWifiDialogListeners.add(privacyController);
|
||||||
|
mWifiDialogListeners.add(meteredPreferenceController);
|
||||||
|
|
||||||
return controllers;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubmit(WifiDialog dialog) {
|
||||||
|
for (WifiDialog.WifiDialogListener listener : mWifiDialogListeners) {
|
||||||
|
listener.onSubmit(dialog);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,16 +18,17 @@ package com.android.settings.wifi.details;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.util.FeatureFlagUtils;
|
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.DropDownPreference;
|
import androidx.preference.DropDownPreference;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.wifi.WifiDialog;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,13 +36,14 @@ import com.android.settingslib.core.AbstractPreferenceController;
|
|||||||
* or not
|
* or not
|
||||||
*/
|
*/
|
||||||
public class WifiPrivacyPreferenceController extends BasePreferenceController implements
|
public class WifiPrivacyPreferenceController extends BasePreferenceController implements
|
||||||
Preference.OnPreferenceChangeListener {
|
Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
|
||||||
|
|
||||||
private static final String KEY_WIFI_PRIVACY = "privacy";
|
private static final String KEY_WIFI_PRIVACY = "privacy";
|
||||||
private WifiConfiguration mWifiConfiguration;
|
private WifiConfiguration mWifiConfiguration;
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
private boolean mIsEphemeral = false;
|
private boolean mIsEphemeral = false;
|
||||||
private boolean mIsPasspoint = false;
|
private boolean mIsPasspoint = false;
|
||||||
|
private Preference mPreference;
|
||||||
|
|
||||||
public WifiPrivacyPreferenceController(Context context) {
|
public WifiPrivacyPreferenceController(Context context) {
|
||||||
super(context, KEY_WIFI_PRIVACY);
|
super(context, KEY_WIFI_PRIVACY);
|
||||||
@@ -68,6 +70,12 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im
|
|||||||
AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
|
super.displayPreference(screen);
|
||||||
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
final DropDownPreference dropDownPreference = (DropDownPreference) preference;
|
final DropDownPreference dropDownPreference = (DropDownPreference) preference;
|
||||||
@@ -87,9 +95,13 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im
|
|||||||
if (mWifiConfiguration != null) {
|
if (mWifiConfiguration != null) {
|
||||||
mWifiConfiguration.macRandomizationSetting = Integer.parseInt((String) newValue);
|
mWifiConfiguration.macRandomizationSetting = Integer.parseInt((String) newValue);
|
||||||
mWifiManager.updateNetwork(mWifiConfiguration);
|
mWifiManager.updateNetwork(mWifiConfiguration);
|
||||||
// To activate changing, we need reconnect network. WiFi will auto connect to current
|
|
||||||
// network after disconnect().
|
// To activate changing, we need to reconnect network. WiFi will auto connect to
|
||||||
mWifiManager.disconnect();
|
// current network after disconnect(). Only needed when this is connected network.
|
||||||
|
final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
|
||||||
|
if (wifiInfo != null && wifiInfo.getNetworkId() == mWifiConfiguration.networkId) {
|
||||||
|
mWifiManager.disconnect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
updateSummary((DropDownPreference) preference, Integer.parseInt((String) newValue));
|
updateSummary((DropDownPreference) preference, Integer.parseInt((String) newValue));
|
||||||
return true;
|
return true;
|
||||||
@@ -133,4 +145,19 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im
|
|||||||
final int prefMacRandomized = translateMacRandomizedValueToPrefValue(macRandomized);
|
final int prefMacRandomized = translateMacRandomizedValueToPrefValue(macRandomized);
|
||||||
preference.setSummary(preference.getEntries()[prefMacRandomized]);
|
preference.setSummary(preference.getEntries()[prefMacRandomized]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubmit(WifiDialog dialog) {
|
||||||
|
if (dialog.getController() != null) {
|
||||||
|
final WifiConfiguration newConfig = dialog.getController().getConfig();
|
||||||
|
if (newConfig == null || mWifiConfiguration == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newConfig.macRandomizationSetting != mWifiConfiguration.macRandomizationSetting) {
|
||||||
|
mWifiConfiguration = newConfig;
|
||||||
|
onPreferenceChange(mPreference, String.valueOf(newConfig.macRandomizationSetting));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user