Add progress bar for Wi-Fi DPP handshaking

Bug: 124127483
Test: manual test
Change-Id: I1c3da5bab98da57ca8cf10509f339e99b01ebdbf
diff --git a/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml b/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml
index 0069e93..3a0e659 100644
--- a/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml
+++ b/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml
@@ -33,6 +33,16 @@
 
             <include layout="@layout/wifi_dpp_fragment_header"/>
 
+            <ProgressBar
+                android:id="@+id/indeterminate_bar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:indeterminate="true"
+                android:paddingStart="16dp"
+                android:paddingEnd="16dp"
+                android:layout_marginBottom="8dp"
+                style="?android:attr/progressBarStyleHorizontal"/>
+
             <com.android.settings.wifi.qrcode.QrPreviewLayout
                 android:layout_width="@dimen/qrcode_preview_size"
                 android:layout_height="@dimen/qrcode_preview_size">
diff --git a/res/layout/wifi_dpp_add_device_fragment.xml b/res/layout/wifi_dpp_add_device_fragment.xml
index 479e626..3ffdeef 100644
--- a/res/layout/wifi_dpp_add_device_fragment.xml
+++ b/res/layout/wifi_dpp_add_device_fragment.xml
@@ -34,6 +34,17 @@
 
             <include layout="@layout/wifi_dpp_fragment_header"/>
 
+            <ProgressBar
+                android:id="@+id/indeterminate_bar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:indeterminate="true"
+                android:paddingStart="16dp"
+                android:paddingEnd="16dp"
+                android:layout_marginBottom="8dp"
+                style="?android:attr/progressBarStyleHorizontal"
+                android:visibility="invisible"/>
+
             <ImageView
                 android:id="@+id/wifi_ap_picture_view"
                 android:layout_width="wrap_content"
diff --git a/res/layout/wifi_dpp_qrcode_scanner_fragment.xml b/res/layout/wifi_dpp_qrcode_scanner_fragment.xml
index 9bd066b..4fa8e8b 100644
--- a/res/layout/wifi_dpp_qrcode_scanner_fragment.xml
+++ b/res/layout/wifi_dpp_qrcode_scanner_fragment.xml
@@ -33,6 +33,16 @@
 
             <include layout="@layout/wifi_dpp_fragment_header"/>
 
+            <ProgressBar
+                android:id="@+id/indeterminate_bar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:indeterminate="true"
+                android:paddingStart="16dp"
+                android:paddingEnd="16dp"
+                android:layout_marginBottom="8dp"
+                style="?android:attr/progressBarStyleHorizontal"/>
+
             <com.android.settings.wifi.qrcode.QrPreviewLayout
                 android:layout_width="match_parent"
                 android:layout_height="match_parent">
diff --git a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
index 536924d..97b2ebe 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
@@ -31,6 +31,7 @@
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ImageView;
+import android.widget.ProgressBar;
 
 import androidx.lifecycle.ViewModelProviders;
 
@@ -45,6 +46,7 @@
 public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
     private static final String TAG = "WifiDppAddDeviceFragment";
 
+    private ProgressBar mProgressBar;
     private ImageView mWifiApPictureView;
     private Button mChooseDifferentNetwork;
     private Button mButtonLeft;
@@ -82,6 +84,7 @@
     private void showSuccessUi(boolean isConfigurationChange) {
         setHeaderIconImageResource(R.drawable.ic_devices_check_circle_green);
         mTitle.setText(R.string.wifi_dpp_wifi_shared_with_device);
+        mProgressBar.setVisibility(isGoingInitiator() ? View.VISIBLE : View.INVISIBLE);
         mSummary.setVisibility(View.INVISIBLE);
         mWifiApPictureView.setImageResource(R.drawable.wifi_dpp_success);
         mChooseDifferentNetwork.setVisibility(View.INVISIBLE);
@@ -169,6 +172,7 @@
             mLatestStatusCode = code;
         }
 
+        mProgressBar.setVisibility(isGoingInitiator() ? View.VISIBLE : View.INVISIBLE);
         mButtonRight.setVisibility(isGoingInitiator() ? View.INVISIBLE : View.VISIBLE);
     }
 
@@ -240,6 +244,8 @@
 
         setHeaderIconImageResource(R.drawable.ic_devices_other_opaque_black);
 
+        mProgressBar = view.findViewById(R.id.indeterminate_bar);
+
         final WifiQrCode wifiQrCode = ((WifiDppConfiguratorActivity) getActivity())
                 .getWifiDppQrCode();
         final String information = wifiQrCode.getInformation();
@@ -264,6 +270,7 @@
         mButtonRight = view.findViewById(R.id.button_right);
         mButtonRight.setText(R.string.wifi_dpp_share_wifi);
         mButtonRight.setOnClickListener(v -> {
+            mProgressBar.setVisibility(View.VISIBLE);
             mButtonRight.setVisibility(View.INVISIBLE);
             startWifiDppConfiguratorInitiator();
         });
@@ -272,6 +279,7 @@
             if (mLatestStatusCode == WifiDppUtils.EASY_CONNECT_EVENT_SUCCESS) {
                 showSuccessUi(/* isConfigurationChange */ true);
             } else if (mLatestStatusCode == WifiDppUtils.EASY_CONNECT_EVENT_FAILURE_NONE) {
+                mProgressBar.setVisibility(isGoingInitiator() ? View.VISIBLE : View.INVISIBLE);
                 mButtonRight.setVisibility(isGoingInitiator() ? View.INVISIBLE : View.VISIBLE);
             } else {
                 showErrorUi(mLatestStatusCode, /* isConfigurationChange */ true);
diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
index c88313b..e664a05 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
@@ -42,6 +42,7 @@
 import android.view.TextureView.SurfaceTextureListener;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ProgressBar;
 import android.widget.TextView;
 
 import androidx.lifecycle.ViewModelProviders;
@@ -77,6 +78,7 @@
     private static final String KEY_IS_CONFIGURATOR_MODE = "key_is_configurator_mode";
     private static final String KEY_LATEST_ERROR_CODE = "key_latest_error_code";
 
+    private ProgressBar mProgressBar;
     private QrCamera mCamera;
     private TextureView mTextureView;
     private QrDecorateView mDecorateView;
@@ -205,6 +207,10 @@
         mDecorateView = (QrDecorateView) view.findViewById(R.id.decorate_view);
 
         setHeaderIconImageResource(R.drawable.ic_scan_24dp);
+
+        mProgressBar = view.findViewById(R.id.indeterminate_bar);
+        mProgressBar.setVisibility(isGoingInitiator() ? View.VISIBLE : View.INVISIBLE);
+
         if (mIsConfiguratorMode) {
             mTitle.setText(R.string.wifi_dpp_add_device_to_network);
 
@@ -402,6 +408,7 @@
                     mScanWifiDppSuccessListener.onScanWifiDppSuccess((WifiQrCode)msg.obj);
 
                     if (!mIsConfiguratorMode) {
+                        mProgressBar.setVisibility(View.VISIBLE);
                         startWifiDppEnrolleeInitiator((WifiQrCode)msg.obj);
                     }
                     break;
@@ -446,6 +453,7 @@
 
             Log.e(TAG, "Invalid networkId " + newNetworkId);
             mLatestStatusCode = EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_GENERIC;
+            mProgressBar.setVisibility(View.INVISIBLE);
             showErrorMessage(getString(R.string.wifi_dpp_check_connection_try_again));
             restartCamera();
         }
@@ -512,6 +520,7 @@
             }
 
             mLatestStatusCode = code;
+            mProgressBar.setVisibility(View.INVISIBLE);
             restartCamera();
         }
 
@@ -540,6 +549,7 @@
     public void onFailure(int reason) {
         Log.d(TAG, "Wi-Fi connect onFailure reason - " + reason);
 
+        mProgressBar.setVisibility(View.INVISIBLE);
         showErrorMessage(getString(R.string.wifi_dpp_check_connection_try_again));
         restartCamera();
     }