Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f30d10ab authored by Arc Wang's avatar Arc Wang Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] Support passport R1 expiration handling"

parents 29e21c09 4a71bc90
Loading
Loading
Loading
Loading
+40 −7
Original line number Diff line number Diff line
@@ -191,6 +191,13 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController

    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 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
                updateConnectingState(STATE_FAILED);
            }
        };

        mIsExpired = mAccessPoint.isExpired();
        mIsPasspointConfigurationR1 = mAccessPoint.isPasspointConfigurationR1();
    }

    @Override
@@ -406,6 +416,11 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
                .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 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
        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 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController

        boolean canForgetNetwork = canForgetNetwork();
        boolean canSignIntoNetwork = canSignIntoNetwork();
        boolean canConnectNetwork = canConnectNetwork();
        boolean canConnectNetwork = canConnectNetwork() && !isPasspointConfigurationR1Expired();
        boolean canShareNetwork = canShareNetwork();

        mButtonsPref.setButton1Visible(canForgetNetwork);
@@ -762,6 +786,10 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
        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 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
            case STATE_NOT_IN_RANGE:
            case STATE_FAILED:
            case STATE_ENABLE_WIFI_FAILED:
                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);
+15 −0
Original line number Diff line number Diff line
@@ -1877,6 +1877,21 @@ public class WifiDetailPreferenceControllerTest {
        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);