Merge "[Wi-Fi] Support passport R1 expiration handling"
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 4496838..965b0ff 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -191,6 +191,13 @@
private final IconInjector mIconInjector;
private final IntentFilter mFilter;
+
+ // Passpoint information - cache it in case of losing these information after
+ // updateAccessPointFromScannedList(). For R2, we should update these data from
+ // WifiManager#getPasspointConfigurations() after users manage the passpoint profile.
+ private boolean mIsExpired;
+ private boolean mIsPasspointConfigurationR1;
+
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -372,6 +379,9 @@
updateConnectingState(STATE_FAILED);
}
};
+
+ mIsExpired = mAccessPoint.isExpired();
+ mIsPasspointConfigurationR1 = mAccessPoint.isPasspointConfigurationR1();
}
@Override
@@ -406,6 +416,11 @@
.setButton4Icon(R.drawable.ic_qrcode_24dp)
.setButton4OnClickListener(view -> shareNetwork());
+ if (isPasspointConfigurationR1Expired()) {
+ // Hide Connect button.
+ mButtonsPref.setButton3Visible(false);
+ }
+
mSignalStrengthPref = screen.findPreference(KEY_SIGNAL_STRENGTH_PREF);
mTxLinkSpeedPref = screen.findPreference(KEY_TX_LINK_SPEED);
mRxLinkSpeedPref = screen.findPreference(KEY_RX_LINK_SPEED);
@@ -454,9 +469,18 @@
if (usingDataUsageHeader(mContext)) {
mSummaryHeaderController.updateState(mDataUsageSummaryPref);
} else {
+ String summary;
+ if (isPasspointConfigurationR1Expired()) {
+ // Not able to get summary from AccessPoint because we may lost
+ // PasspointConfiguration information after updateAccessPointFromScannedList().
+ summary = mContext.getResources().getString(
+ com.android.settingslib.R.string.wifi_passpoint_expired);
+ } else {
+ summary = mAccessPoint.getSettingsSummary(true /* convertSavedAsDisconnected */);
+ }
+
mEntityHeaderController
- .setSummary(
- mAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
+ .setSummary(summary)
.setRecyclerView(mFragment.getListView(), mLifecycle)
.done(mFragment.getActivity(), true /* rebind */);
}
@@ -744,7 +768,7 @@
boolean canForgetNetwork = canForgetNetwork();
boolean canSignIntoNetwork = canSignIntoNetwork();
- boolean canConnectNetwork = canConnectNetwork();
+ boolean canConnectNetwork = canConnectNetwork() && !isPasspointConfigurationR1Expired();
boolean canShareNetwork = canShareNetwork();
mButtonsPref.setButton1Visible(canForgetNetwork);
@@ -762,6 +786,10 @@
return !mAccessPoint.isActive();
}
+ private boolean isPasspointConfigurationR1Expired() {
+ return mIsPasspointConfigurationR1 && mIsExpired;
+ }
+
private void refreshIpLayerInfo() {
// Hide IP layer info if not a connected network.
if (!mAccessPoint.isActive() || mNetwork == null || mLinkProperties == null) {
@@ -1109,10 +1137,15 @@
case STATE_NOT_IN_RANGE:
case STATE_FAILED:
case STATE_ENABLE_WIFI_FAILED:
- mButtonsPref.setButton3Text(R.string.wifi_connect)
- .setButton3Icon(R.drawable.ic_settings_wireless)
- .setButton3Enabled(true)
- .setButton3Visible(true);
+ if (isPasspointConfigurationR1Expired()) {
+ // Hide Connect button.
+ mButtonsPref.setButton3Visible(false);
+ } else {
+ mButtonsPref.setButton3Text(R.string.wifi_connect)
+ .setButton3Icon(R.drawable.ic_settings_wireless)
+ .setButton3Enabled(true)
+ .setButton3Visible(true);
+ }
break;
default:
Log.e(TAG, "Invalid connect button state : " + state);
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 631880a..81ac064 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -1877,6 +1877,21 @@
verify(mockMacAddressPref).setTitle(R.string.wifi_advanced_device_mac_address_title);
}
+ @Test
+ public void entityHeader_expiredPasspointR1_shouldHandleExpiration() {
+ setUpForDisconnectedNetwork();
+ when(mockAccessPoint.isPasspoint()).thenReturn(true);
+ when(mockAccessPoint.isPasspointConfigurationR1()).thenReturn(true);
+ when(mockAccessPoint.isExpired()).thenReturn(true);
+ String expireSummary = mContext.getResources().getString(
+ com.android.settingslib.R.string.wifi_passpoint_expired);
+
+ displayAndResume();
+
+ verify(mockButtonsPref).setButton3Visible(false);
+ verify(mockHeaderController).setSummary(expireSummary);
+ }
+
private ActionButtonsPreference createMock() {
final ActionButtonsPreference pref = mock(ActionButtonsPreference.class);
when(pref.setButton1Text(anyInt())).thenReturn(pref);