[Wi-Fi] Split WifiEntryCallback into separate callbacks for each action

This change uses splitted WifiEntry callbacks.

Bug: 70983952
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi
Change-Id: I3b8e55b11d4f71e5548b4da82104dac1f5089b1b
This commit is contained in:
Arc Wang
2019-12-31 12:21:55 +08:00
parent e8e0e5d81b
commit d5ec80afc5
3 changed files with 33 additions and 57 deletions

View File

@@ -76,11 +76,8 @@ import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.search.SearchIndexableRaw;
import com.android.settingslib.wifi.LongPressWifiEntryPreference; import com.android.settingslib.wifi.LongPressWifiEntryPreference;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback; import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ConnectStatus; import com.android.wifitrackerlib.WifiEntry.ConnectCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.DisconnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ForgetStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.SignInStatus;
import com.android.wifitrackerlib.WifiPickerTracker; import com.android.wifitrackerlib.WifiPickerTracker;
import java.time.Clock; import java.time.Clock;
@@ -504,7 +501,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
connect(mSelectedWifiEntry, true /* editIfNoConfig */, false /* fullScreenEdit */); connect(mSelectedWifiEntry, true /* editIfNoConfig */, false /* fullScreenEdit */);
return true; return true;
case MENU_ID_DISCONNECT: case MENU_ID_DISCONNECT:
mSelectedWifiEntry.disconnect(); mSelectedWifiEntry.disconnect(null /* callback */);
return true; return true;
case MENU_ID_FORGET: case MENU_ID_FORGET:
forget(mSelectedWifiEntry); forget(mSelectedWifiEntry);
@@ -680,7 +677,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
mConnectedWifiEntryPreferenceCategory.addPreference(pref); mConnectedWifiEntryPreferenceCategory.addPreference(pref);
pref.setOnPreferenceClickListener(preference -> { pref.setOnPreferenceClickListener(preference -> {
if (connectedEntry.canSignIn()) { if (connectedEntry.canSignIn()) {
connectedEntry.signIn(); connectedEntry.signIn(null /* callback */);
} else { } else {
launchNetworkDetailsFragment(pref); launchNetworkDetailsFragment(pref);
} }
@@ -908,7 +905,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
private void forget(WifiEntry wifiEntry) { private void forget(WifiEntry wifiEntry) {
mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_WIFI_FORGET); mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_WIFI_FORGET);
wifiEntry.forget(); wifiEntry.forget(null /* callback */);
} }
private void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) { private void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) {
@@ -916,11 +913,9 @@ public class WifiSettings2 extends RestrictedSettingsFragment
wifiEntry.isSaved()); wifiEntry.isSaved());
// If it's an unsaved secure WifiEntry, it will callback // If it's an unsaved secure WifiEntry, it will callback
// WifiEntryCallback#onConnectResult with // ConnectCallback#onConnectResult with ConnectCallback#CONNECT_STATUS_FAILURE_NO_CONFIG
// WifiEntryCallback#CONNECT_STATUS_FAILURE_NO_CONFIG wifiEntry.connect(new WifiEntryConnectCallback(wifiEntry, editIfNoConfig,
wifiEntry.setListener(new WifiEntryConnectCallback(wifiEntry, editIfNoConfig,
fullScreenEdit)); fullScreenEdit));
wifiEntry.connect();
} }
private class WifiSaveThenConnectActionListener implements WifiManager.ActionListener { private class WifiSaveThenConnectActionListener implements WifiManager.ActionListener {
@@ -986,7 +981,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
} }
}; };
private class WifiEntryConnectCallback implements WifiEntryCallback { private class WifiEntryConnectCallback implements ConnectCallback {
final WifiEntry mConnectWifiEntry; final WifiEntry mConnectWifiEntry;
final boolean mEditIfNoConfig; final boolean mEditIfNoConfig;
final boolean mFullScreenEdit; final boolean mFullScreenEdit;
@@ -998,11 +993,6 @@ public class WifiSettings2 extends RestrictedSettingsFragment
mFullScreenEdit = fullScreenEdit; mFullScreenEdit = fullScreenEdit;
} }
@Override
public void onUpdated() {
// Do nothing.
}
@Override @Override
public void onConnectResult(@ConnectStatus int status) { public void onConnectResult(@ConnectStatus int status) {
final Activity activity = getActivity(); final Activity activity = getActivity();
@@ -1010,7 +1000,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
return; return;
} }
if (status == WifiEntryCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) { if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) {
if (mEditIfNoConfig) { if (mEditIfNoConfig) {
// Edit an unsaved secure Wi-Fi network. // Edit an unsaved secure Wi-Fi network.
if (mFullScreenEdit) { if (mFullScreenEdit) {
@@ -1033,21 +1023,6 @@ public class WifiSettings2 extends RestrictedSettingsFragment
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();
} }
} }
@Override
public void onDisconnectResult(@DisconnectStatus int status) {
// Do nothing.
}
@Override
public void onForgetResult(@ForgetStatus int status) {
// Do nothing.
}
@Override
public void onSignInResult(@SignInStatus int status) {
// Do nothing.
}
} }
private boolean isFisishingOrDestroyed(Activity activity) { private boolean isFisishingOrDestroyed(Activity activity) {

View File

@@ -75,12 +75,14 @@ import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.widget.ActionButtonsPreference; import com.android.settingslib.widget.ActionButtonsPreference;
import com.android.settingslib.widget.LayoutPreference; import com.android.settingslib.widget.LayoutPreference;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiEntry.ConnectedInfo; import com.android.wifitrackerlib.WifiEntry.ConnectedInfo;
import com.android.wifitrackerlib.WifiEntry.ForgetCallback;
import com.android.wifitrackerlib.WifiEntry.ForgetCallback.ForgetStatus;
import com.android.wifitrackerlib.WifiEntry.SignInCallback;
import com.android.wifitrackerlib.WifiEntry.SignInCallback.SignInStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback; import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.DisconnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ForgetStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.SignInStatus;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.Inet6Address; import java.net.Inet6Address;
@@ -95,7 +97,7 @@ import java.util.stream.Collectors;
*/ */
public class WifiDetailPreferenceController2 extends AbstractPreferenceController public class WifiDetailPreferenceController2 extends AbstractPreferenceController
implements PreferenceControllerMixin, WifiDialog2Listener, LifecycleObserver, OnPause, implements PreferenceControllerMixin, WifiDialog2Listener, LifecycleObserver, OnPause,
OnResume, WifiEntryCallback { OnResume, WifiEntryCallback, ConnectCallback, ForgetCallback, SignInCallback {
private static final String TAG = "WifiDetailsPrefCtrl2"; private static final String TAG = "WifiDetailsPrefCtrl2";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -214,8 +216,6 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
|| hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED) || hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
|| hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL) || hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)
|| hasCapabilityChanged(nc, NET_CAPABILITY_PARTIAL_CONNECTIVITY)) { || hasCapabilityChanged(nc, NET_CAPABILITY_PARTIAL_CONNECTIVITY)) {
// TODO(b/143326832): What to do with WifiEntry?
// mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
refreshEntityHeader(); refreshEntityHeader();
} }
mNetworkCapabilities = nc; mNetworkCapabilities = nc;
@@ -706,7 +706,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
showConfirmForgetDialog(); showConfirmForgetDialog();
return; return;
} else { } else {
mWifiEntry.forget(); mWifiEntry.forget(this);
} }
mMetricsFeatureProvider.action( mMetricsFeatureProvider.action(
@@ -719,7 +719,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
final AlertDialog dialog = new AlertDialog.Builder(mContext) final AlertDialog dialog = new AlertDialog.Builder(mContext)
.setPositiveButton(R.string.forget, ((dialog1, which) -> { .setPositiveButton(R.string.forget, ((dialog1, which) -> {
try { try {
mWifiEntry.forget(); mWifiEntry.forget(this);
} catch (RuntimeException e) { } catch (RuntimeException e) {
Log.e(TAG, "Failed to remove Passpoint configuration for " Log.e(TAG, "Failed to remove Passpoint configuration for "
+ WifiEntryShell.getPasspointFqdn(mWifiEntry)); + WifiEntryShell.getPasspointFqdn(mWifiEntry));
@@ -768,7 +768,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
private void signIntoNetwork() { private void signIntoNetwork() {
mMetricsFeatureProvider.action( mMetricsFeatureProvider.action(
mFragment.getActivity(), SettingsEnums.ACTION_WIFI_SIGNIN); mFragment.getActivity(), SettingsEnums.ACTION_WIFI_SIGNIN);
mConnectivityManager.startCaptivePortalApp(mNetwork); mWifiEntry.signIn(this);
} }
@Override @Override
@@ -814,7 +814,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
@VisibleForTesting @VisibleForTesting
void connectNetwork() { void connectNetwork() {
mWifiEntry.connect(); mWifiEntry.connect(this);
} }
private void refreshMacTitle() { private void refreshMacTitle() {
@@ -849,7 +849,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
*/ */
@Override @Override
public void onConnectResult(@ConnectStatus int status) { public void onConnectResult(@ConnectStatus int status) {
if (status == WifiEntryCallback.CONNECT_STATUS_SUCCESS) { if (status == ConnectCallback.CONNECT_STATUS_SUCCESS) {
Toast.makeText(mContext, Toast.makeText(mContext,
mContext.getString(R.string.wifi_connected_to_message, mWifiEntry.getTitle()), mContext.getString(R.string.wifi_connected_to_message, mWifiEntry.getTitle()),
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();
@@ -868,25 +868,26 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
.setButton3Visible(true); .setButton3Visible(true);
} }
// TODO: Add disconnect button.
/** /**
* Result of the disconnect request indicated by the DISCONNECT_STATUS constants. * Result of the disconnect request indicated by the DISCONNECT_STATUS constants.
*/ */
@Override //@Override
public void onDisconnectResult(@DisconnectStatus int status) { //public void onDisconnectResult(@DisconnectStatus int status) {
if (status != WifiEntryCallback.DISCONNECT_STATUS_SUCCESS) { // if (status != DisconnectCallback.DISCONNECT_STATUS_SUCCESS) {
Log.e(TAG, "Disconnect Wi-Fi network failed"); // Log.e(TAG, "Disconnect Wi-Fi network failed");
} // }
//
updateNetworkInfo(); // updateNetworkInfo();
refreshPage(); // refreshPage();
} //}
/** /**
* Result of the forget request indicated by the FORGET_STATUS constants. * Result of the forget request indicated by the FORGET_STATUS constants.
*/ */
@Override @Override
public void onForgetResult(@ForgetStatus int status) { public void onForgetResult(@ForgetStatus int status) {
if (status != WifiEntryCallback.FORGET_STATUS_SUCCESS) { if (status != ForgetCallback.FORGET_STATUS_SUCCESS) {
Log.e(TAG, "Forget Wi-Fi network failed"); Log.e(TAG, "Forget Wi-Fi network failed");
} }

View File

@@ -88,7 +88,7 @@ public class WifiPrivacyPreferenceController2 extends BasePreferenceController i
// To activate changing, we need to reconnect network. WiFi will auto connect to // To activate changing, we need to reconnect network. WiFi will auto connect to
// current network after disconnect(). Only needed when this is connected network. // current network after disconnect(). Only needed when this is connected network.
if (mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { if (mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) {
mWifiEntry.disconnect(); mWifiEntry.disconnect(null /* callback */);
} }
} }
updateSummary((DropDownPreference) preference, privacy); updateSummary((DropDownPreference) preference, privacy);