[Wi-Fi] Replace AccessPoint with WifiEntry for WifiDialog2

Bug: 146407136
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi
      make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi.detail2

Change-Id: I65899b24c186e1bd1bb0d00db52c67264f30f3cb
This commit is contained in:
Arc Wang
2019-12-22 10:45:11 +08:00
parent f990dfa11e
commit b33190c017
9 changed files with 245 additions and 234 deletions

View File

@@ -61,9 +61,10 @@ import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.datausage.WifiDataUsageSummaryPreferenceController;
import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiDialog.WifiDialogListener;
import com.android.settings.wifi.WifiDialog2;
import com.android.settings.wifi.WifiDialog2.WifiDialog2Listener;
import com.android.settings.wifi.WifiEntryShell;
import com.android.settings.wifi.WifiUtils;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -93,7 +94,7 @@ import java.util.stream.Collectors;
* {@link WifiNetworkDetailsFragment}.
*/
public class WifiDetailPreferenceController2 extends AbstractPreferenceController
implements PreferenceControllerMixin, WifiDialogListener, LifecycleObserver, OnPause,
implements PreferenceControllerMixin, WifiDialog2Listener, LifecycleObserver, OnPause,
OnResume, WifiEntryCallback {
private static final String TAG = "WifiDetailsPrefCtrl2";
@@ -670,7 +671,8 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
* Returns whether the network represented by this preference can be modified.
*/
public boolean canModifyNetwork() {
return WifiEntryShell.canModifyNetwork(mWifiEntry);
return mWifiEntry.isSaved()
&& !WifiUtils.isNetworkLockedDown(mContext, mWifiEntry.getWifiConfiguration());
}
/**
@@ -762,7 +764,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
}
@Override
public void onSubmit(WifiDialog dialog) {
public void onSubmit(WifiDialog2 dialog) {
if (dialog.getController() != null) {
mWifiManager.save(dialog.getController().getConfig(), new WifiManager.ActionListener() {
@Override

View File

@@ -18,6 +18,7 @@ package com.android.settings.wifi.details2;
import android.app.backup.BackupManager;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import androidx.annotation.VisibleForTesting;
import androidx.preference.DropDownPreference;
@@ -25,7 +26,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiDialog2;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.wifitrackerlib.WifiEntry;
@@ -33,7 +34,7 @@ import com.android.wifitrackerlib.WifiEntry;
* {@link AbstractPreferenceController} that controls whether the wifi network is metered or not
*/
public class WifiMeteredPreferenceController2 extends BasePreferenceController implements
Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
Preference.OnPreferenceChangeListener, WifiDialog2.WifiDialog2Listener {
private static final String KEY_WIFI_METERED = "metered";
private WifiEntry mWifiEntry;
@@ -89,18 +90,30 @@ public class WifiMeteredPreferenceController2 extends BasePreferenceController i
}
@Override
public void onSubmit(WifiDialog dialog) {
// TODO(b/143326832): Create WifiDialog2 and let it work for WifiEntry.
//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));
// }
//}
public void onSubmit(WifiDialog2 dialog) {
if (dialog.getController() != null) {
final WifiConfiguration newConfig = dialog.getController().getConfig();
if (newConfig == null || !mWifiEntry.isSaved()) {
return;
}
if (newConfig.meteredOverride != mWifiEntry.getWifiConfiguration().meteredOverride) {
mWifiEntry.setMeteredChoice(getWifiEntryMeteredChoice(newConfig));
onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride));
}
}
}
private int getWifiEntryMeteredChoice(WifiConfiguration wifiConfiguration) {
switch (wifiConfiguration.meteredOverride) {
case WifiConfiguration.METERED_OVERRIDE_NONE:
return WifiEntry.METERED_CHOICE_AUTO;
case WifiConfiguration.METERED_OVERRIDE_METERED:
return WifiEntry.METERED_CHOICE_METERED;
case WifiConfiguration.METERED_OVERRIDE_NOT_METERED:
return WifiEntry.METERED_CHOICE_UNMETERED;
default:
return WifiEntry.METERED_CHOICE_UNKNOWN;
}
}
}

View File

@@ -35,7 +35,8 @@ import android.view.MenuItem;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiConfigUiBase2;
import com.android.settings.wifi.WifiDialog2;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -54,7 +55,7 @@ import java.util.List;
* in order to properly render this page.
*/
public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
WifiDialog.WifiDialogListener {
WifiDialog2.WifiDialog2Listener {
private static final String TAG = "WifiNetworkDetailsFrg2";
@@ -69,7 +70,7 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
private NetworkDetailsTracker mNetworkDetailsTracker;
private HandlerThread mWorkerThread;
private WifiDetailPreferenceController2 mWifiDetailPreferenceController2;
private List<WifiDialog.WifiDialogListener> mWifiDialogListeners = new ArrayList<>();
private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>();
@Override
public void onDestroy() {
@@ -106,10 +107,10 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
if (getActivity() == null || mWifiDetailPreferenceController2 == null) {
return null;
}
// TODO(b/143326832): Replace it with WifiEntry.
return null;
//return WifiDialog.createModal(getActivity(), this, mAccessPoint,
// WifiConfigUiBase.MODE_MODIFY);
final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry();
return WifiDialog2.createModal(getActivity(), this, wifiEntry,
WifiConfigUiBase2.MODE_MODIFY);
}
@Override
@@ -177,8 +178,8 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
}
@Override
public void onSubmit(WifiDialog dialog) {
for (WifiDialog.WifiDialogListener listener : mWifiDialogListeners) {
public void onSubmit(WifiDialog2 dialog) {
for (WifiDialog2.WifiDialog2Listener listener : mWifiDialogListeners) {
listener.onSubmit(dialog);
}
}

View File

@@ -17,6 +17,7 @@
package com.android.settings.wifi.details2;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import androidx.annotation.VisibleForTesting;
@@ -26,7 +27,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiDialog2;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.wifitrackerlib.WifiEntry;
@@ -35,7 +36,7 @@ import com.android.wifitrackerlib.WifiEntry;
* or not
*/
public class WifiPrivacyPreferenceController2 extends BasePreferenceController implements
Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
Preference.OnPreferenceChangeListener, WifiDialog2.WifiDialog2Listener {
private static final String KEY_WIFI_PRIVACY = "privacy";
private WifiManager mWifiManager;
@@ -134,18 +135,29 @@ public class WifiPrivacyPreferenceController2 extends BasePreferenceController i
}
@Override
public void onSubmit(WifiDialog dialog) {
// TODO(b/143326832): Create WifiDialog2 and let it work for WifiEntry.
//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));
// }
//}
public void onSubmit(WifiDialog2 dialog) {
if (dialog.getController() != null) {
final WifiConfiguration newConfig = dialog.getController().getConfig();
if (newConfig == null || !mWifiEntry.isSaved()) {
return;
}
if (newConfig.macRandomizationSetting
!= mWifiEntry.getWifiConfiguration().macRandomizationSetting) {
mWifiEntry.setPrivacy(getWifiEntryPrivacy(newConfig));
onPreferenceChange(mPreference, String.valueOf(newConfig.macRandomizationSetting));
}
}
}
private int getWifiEntryPrivacy(WifiConfiguration wifiConfiguration) {
switch (wifiConfiguration.macRandomizationSetting) {
case WifiConfiguration.RANDOMIZATION_NONE:
return WifiEntry.PRIVACY_DEVICE_MAC;
case WifiConfiguration.RANDOMIZATION_PERSISTENT:
return WifiEntry.PRIVACY_RANDOMIZED_MAC;
default:
return WifiEntry.PRIVACY_UNKNOWN;
}
}
}