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

Commit 8d40a8ec authored by Quang Luong's avatar Quang Luong
Browse files

Display summary for OSU provisioning status and failures

The OSU provisioning status callbacks now change the summary of
the OSU AccessPoints to a string associated with the current
provisioning status or the failure code of the last provisioning.

Tracking bug for adding robolectric tests: b/122849296

Bug: 118705403
Test: manual, build and tap on osu accesspoint and see summary
Change-Id: I599cc8077a75a4ea4a8943027117e0c741d90a05
parent 4d194845
Loading
Loading
Loading
Loading
+73 −0
Original line number Diff line number Diff line
@@ -127,6 +127,79 @@
    <!-- Status message of Wi-Fi when an available network is a carrier network. [CHAR LIMIT=NONE] -->
    <string name="available_via_carrier">Available via %1$s</string>

    <!-- Status message of OSU Provider on receiving OSU_FAILURE_AP_CONNECTION. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_ap_connection">Connection failed</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVER_URL_INVALID. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_server_url_invalid">Invalid OSU server URL</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVER_CONNECTION. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_server_connection">OSU server connection failed</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVER_VALIDATION. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_server_validation">OSU server validation failed</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_service_provider_verification">Invalid OSU server certificate</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_PROVISIONING_ABORTED. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_provisioning_aborted">Provisioning aborted</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_PROVISIONING_NOT_AVAILABLE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_provisioning_not_available">Provisioning not available</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_INVALID_SERVER_URL. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_invalid_server_url">Invalid OSU server URL</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_UNEXPECTED_COMMAND_TYPE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_unexpected_command_type">Unexpected command type</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_TYPE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_unexpected_soap_message_type">Unexpected SOAP message type</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_SOAP_MESSAGE_EXCHANGE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_soap_message_exchange">SOAP message exchange failed</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_START_REDIRECT_LISTENER. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_start_redirect_listener">Redirect listener failed to start</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_timed_out_redirect_listener">Timed out waiting for redirect</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_OSU_ACTIVITY_FOUND. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_no_osu_activity_found">No OSU activity found</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_STATUS. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_unexpected_soap_message_status">Unexpected SOAP message status</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_PPS_MO. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_no_pps_mo">Failed to find PPS-MO</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_AAA_SERVER_TRUST_ROOT_NODE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_no_aaa_server_trust_root_node">Failed to find trust root node for AAA server</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_REMEDIATION_SERVER_TRUST_ROOT_NODE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_no_remediation_server_trust_root_node">Failed to find trust root node for remediation server</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_POLICY_SERVER_TRUST_ROOT_NODE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_no_policy_server_trust_root_node">Failed to find trust root node for policy server</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_RETRIEVE_TRUST_ROOT_CERTIFICATES. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_retrieve_trust_root_certificates">Failed to retrieve trust root certificates</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_NO_AAA_TRUST_ROOT_CERTIFICATE. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_no_aaa_trust_root_certificate">Failed to find trust root certificate for AAA server</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_ADD_PASSPOINT_CONFIGURATION. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_add_passpoint_configuration">Failed to add PassPoint configuration</string>
    <!-- Status message of OSU Provider on receiving OSU_FAILURE_OSU_PROVIDER_NOT_FOUND. [CHAR LIMIT=NONE] -->
    <string name="osu_failure_osu_provider_not_found">Failed to find an OSU provider</string>

    <!-- Status message of OSU Provider on receiving OSU_STATUS_AP_CONNECTING. [CHAR LIMIT=NONE] -->
    <string name="osu_status_ap_connecting">Connecting</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_AP_CONNECTED. [CHAR LIMIT=NONE] -->
    <string name="osu_status_ap_connected">Connected</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_SERVER_CONNECTING. [CHAR LIMIT=NONE] -->
    <string name="osu_status_server_connecting">Connecting to OSU server</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_SERVER_VALIDATED. [CHAR LIMIT=NONE] -->
    <string name="osu_status_server_validated">OSU server validated</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_SERVER_CONNECTED. [CHAR LIMIT=NONE] -->
    <string name="osu_status_server_connected">Connected to OSU server</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_INIT_SOAP_EXCHANGE. [CHAR LIMIT=NONE] -->
    <string name="osu_status_init_soap_exchange">Initial SOAP exchange</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE. [CHAR LIMIT=NONE] -->
    <string name="osu_status_waiting_for_redirect_response">Waiting for redirect response</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_REDIRECT_RESPONSE_RECEIVED. [CHAR LIMIT=NONE] -->
    <string name="osu_status_redirect_response_received">Received redirect response</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_SECOND_SOAP_EXCHANGE. [CHAR LIMIT=NONE] -->
    <string name="osu_status_second_soap_exchange">Second SOAP exchange</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_THIRD_SOAP_EXCHANGE. [CHAR LIMIT=NONE] -->
    <string name="osu_status_third_soap_exchange">Third SOAP exchange</string>
    <!-- Status message of OSU Provider on receiving OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS. [CHAR LIMIT=NONE] -->
    <string name="osu_status_retrieving_trust_root_certs">Retrieving trust root certificates</string>

    <!-- Status message of OSU Provider on completing provisioning. [CHAR LIMIT=NONE] -->
    <string name="osu_provisioning_complete">Provisioning complete</string>

    <!-- Speed label for very slow network speed -->
    <string name="speed_label_very_slow">Very Slow</string>
    <!-- Speed label for slow network speed -->
+158 −6
Original line number Diff line number Diff line
@@ -220,6 +220,11 @@ public class AccessPoint implements Comparable<AccessPoint> {
    private boolean mIsCarrierAp = false;

    private OsuProvider mOsuProvider;

    private String mOsuStatus;
    private String mOsuFailure;
    private boolean mOsuProvisioningComplete = false;

    /**
     * The EAP type {@link WifiEnterpriseConfig.Eap} associated with this AP if it is a carrier AP.
     */
@@ -928,7 +933,15 @@ public class AccessPoint implements Comparable<AccessPoint> {
                summary.append(String.format(mContext.getString(
                        R.string.available_via_carrier), mCarrierName));
            } else if (isOsuProvider()) {
                if (mOsuProvisioningComplete) {
                    summary.append(mContext.getString(R.string.osu_provisioning_complete));
                } else if (mOsuFailure != null) {
                    summary.append(mOsuFailure);
                } else if (mOsuStatus != null) {
                    summary.append(mOsuStatus);
                } else {
                    summary.append(mContext.getString(R.string.tap_to_set_up));
                }
            } else if (!isReachable()) { // Wifi out of range
                summary.append(mContext.getString(R.string.wifi_not_in_range));
            } else { // In range, not disabled.
@@ -1515,17 +1528,156 @@ public class AccessPoint implements Comparable<AccessPoint> {
        // TODO: Remove logs and implement summary changing logic for these provisioning callbacks.
        @Override
        @MainThread public void onProvisioningFailure(int status) {
            Log.i(TAG, "[qal] Provisioning failed with status: " + status);
            switch (status) {
                case OSU_FAILURE_AP_CONNECTION:
                    mOsuFailure = mContext.getString(R.string.osu_failure_ap_connection);
                    break;
                case OSU_FAILURE_SERVER_URL_INVALID:
                    mOsuFailure = mContext.getString(R.string.osu_failure_server_url_invalid);
                    break;
                case OSU_FAILURE_SERVER_CONNECTION:
                    mOsuFailure = mContext.getString(R.string.osu_failure_server_connection);
                    break;
                case OSU_FAILURE_SERVER_VALIDATION:
                    mOsuFailure = mContext.getString(R.string.osu_failure_server_validation);
                    break;
                case OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_service_provider_verification);
                    break;
                case OSU_FAILURE_PROVISIONING_ABORTED:
                    mOsuFailure = mContext.getString(R.string.osu_failure_provisioning_aborted);
                    break;
                case OSU_FAILURE_PROVISIONING_NOT_AVAILABLE:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_provisioning_not_available);
                    break;
                case OSU_FAILURE_INVALID_SERVER_URL:
                    mOsuFailure = mContext.getString(R.string.osu_failure_invalid_server_url);
                    break;
                case OSU_FAILURE_UNEXPECTED_COMMAND_TYPE:
                    mOsuFailure = mContext.getString(R.string.osu_failure_unexpected_command_type);
                    break;
                case OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_TYPE:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_unexpected_soap_message_type);
                    break;
                case OSU_FAILURE_SOAP_MESSAGE_EXCHANGE:
                    mOsuFailure = mContext.getString(R.string.osu_failure_soap_message_exchange);
                    break;
                case OSU_FAILURE_START_REDIRECT_LISTENER:
                    mOsuFailure = mContext.getString(R.string.osu_failure_start_redirect_listener);
                    break;
                case OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_timed_out_redirect_listener);
                    break;
                case OSU_FAILURE_NO_OSU_ACTIVITY_FOUND:
                    mOsuFailure = mContext.getString(R.string.osu_failure_no_osu_activity_found);
                    break;
                case OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_STATUS:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_unexpected_soap_message_status);
                    break;
                case OSU_FAILURE_NO_PPS_MO:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_no_pps_mo);
                    break;
                case OSU_FAILURE_NO_AAA_SERVER_TRUST_ROOT_NODE:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_no_aaa_server_trust_root_node);
                    break;
                case OSU_FAILURE_NO_REMEDIATION_SERVER_TRUST_ROOT_NODE:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_no_remediation_server_trust_root_node);
                    break;
                case OSU_FAILURE_NO_POLICY_SERVER_TRUST_ROOT_NODE:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_no_policy_server_trust_root_node);
                    break;
                case OSU_FAILURE_RETRIEVE_TRUST_ROOT_CERTIFICATES:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_retrieve_trust_root_certificates);
                    break;
                case OSU_FAILURE_NO_AAA_TRUST_ROOT_CERTIFICATE:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_no_aaa_trust_root_certificate);
                    break;
                case OSU_FAILURE_ADD_PASSPOINT_CONFIGURATION:
                    mOsuFailure = mContext.getString(
                            R.string.osu_failure_add_passpoint_configuration);
                    break;
                case OSU_FAILURE_OSU_PROVIDER_NOT_FOUND:
                    mOsuFailure = mContext.getString(R.string.osu_failure_osu_provider_not_found);
                    break;
            }
            mOsuStatus = null;
            mOsuProvisioningComplete = false;
            ThreadUtils.postOnMainThread(() -> {
                if (mAccessPointListener != null) {
                    mAccessPointListener.onAccessPointChanged(AccessPoint.this);
                }
            });
        }

        @Override
        @MainThread public void onProvisioningComplete() {
            Log.i(TAG, "[qal] Provisioning Complete");
        @MainThread public void onProvisioningStatus(int status) {
            switch (status) {
                case OSU_STATUS_AP_CONNECTING:
                    mOsuStatus = mContext.getString(R.string.osu_status_ap_connecting);
                    break;
                case OSU_STATUS_AP_CONNECTED:
                    mOsuStatus = mContext.getString(R.string.osu_status_ap_connected);
                    break;
                case OSU_STATUS_SERVER_CONNECTING:
                    mOsuStatus = mContext.getString(R.string.osu_status_server_connecting);
                    break;
                case OSU_STATUS_SERVER_VALIDATED:
                    mOsuStatus = mContext.getString(R.string.osu_status_server_validated);
                    break;
                case OSU_STATUS_SERVER_CONNECTED:
                    mOsuStatus = mContext.getString(R.string.osu_status_server_connected);
                    break;
                case OSU_STATUS_INIT_SOAP_EXCHANGE:
                    mOsuStatus = mContext.getString(R.string.osu_status_init_soap_exchange);
                    break;
                case OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE:
                    mOsuStatus = mContext.getString(
                            R.string.osu_status_waiting_for_redirect_response);
                    break;
                case OSU_STATUS_REDIRECT_RESPONSE_RECEIVED:
                    mOsuStatus = mContext.getString(R.string.osu_status_redirect_response_received);
                    break;
                case OSU_STATUS_SECOND_SOAP_EXCHANGE:
                    mOsuStatus = mContext.getString(R.string.osu_status_second_soap_exchange);
                    break;
                case OSU_STATUS_THIRD_SOAP_EXCHANGE:
                    mOsuStatus = mContext.getString(R.string.osu_status_third_soap_exchange);
                    break;
                case OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS:
                    mOsuStatus = mContext.getString(
                            R.string.osu_status_retrieving_trust_root_certs);
                    break;
            }
            mOsuFailure = null;
            mOsuProvisioningComplete = false;
            ThreadUtils.postOnMainThread(() -> {
                if (mAccessPointListener != null) {
                    mAccessPointListener.onAccessPointChanged(AccessPoint.this);
                }
            });
        }

        @Override
        @MainThread public void onProvisioningStatus(int status) {
            Log.i(TAG, "[qal] Provisioning status: " + status);
        @MainThread public void onProvisioningComplete() {
            mOsuProvisioningComplete = true;
            mOsuFailure = null;
            mOsuStatus = null;
            ThreadUtils.postOnMainThread(() -> {
                if (mAccessPointListener != null) {
                    mAccessPointListener.onAccessPointChanged(AccessPoint.this);
                }
            });
        }
    }
}