Added more Credit cards fields.

- Security Code on all credit card activities.
- Expiration Date pn MultiplePartitions.

Also call AFM.cancel() in the clear button of these activities.

Bug: 65384186
Test: manual verification

Change-Id: I205f29c132d1ef0302f4b1ec92c93b21dbaf946b
diff --git a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java
index 2d336fb..e540a36 100644
--- a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java
+++ b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardActivity.java
@@ -20,6 +20,7 @@
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
+import android.view.autofill.AutofillManager;
 import android.widget.ArrayAdapter;
 import android.widget.EditText;
 import android.widget.Spinner;
@@ -38,6 +39,7 @@
     private Spinner mCcExpirationMonthSpinner;
     private Spinner mCcExpirationYearSpinner;
     private EditText mCcCardNumber;
+    private EditText mCcSecurityCode;
 
     public static Intent getStartActivityIntent(Context context) {
         Intent intent = new Intent(context, CreditCardActivity.class);
@@ -52,6 +54,7 @@
         mCcExpirationMonthSpinner = findViewById(R.id.expirationMonth);
         mCcExpirationYearSpinner = findViewById(R.id.expirationYear);
         mCcCardNumber = findViewById(R.id.creditCardNumberField);
+        mCcSecurityCode = findViewById(R.id.creditCardSecurityCode);
 
         // Create an ArrayAdapter using the string array and a default spinner layout
         ArrayAdapter<CharSequence> dayAdapter = ArrayAdapter.createFromResource
@@ -85,6 +88,7 @@
         findViewById(R.id.clear).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                getSystemService(AutofillManager.class).cancel();
                 resetFields();
             }
         });
@@ -95,6 +99,7 @@
         mCcExpirationMonthSpinner.setSelection(0);
         mCcExpirationYearSpinner.setSelection(0);
         mCcCardNumber.setText("");
+        mCcSecurityCode.setText("");
     }
 
     /**
diff --git a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardCompoundViewActivity.java b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardCompoundViewActivity.java
index 9ff3a74..dc06454 100644
--- a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardCompoundViewActivity.java
+++ b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/CreditCardCompoundViewActivity.java
@@ -21,6 +21,7 @@
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
+import android.view.autofill.AutofillManager;
 import android.widget.EditText;
 
 import com.example.android.autofillframework.R;
@@ -29,6 +30,8 @@
 
     private CreditCardExpirationDateView mCcExpDateView;
     private EditText mCcExpNumber;
+    private EditText mCcSecurityCode;
+
     public static Intent getStartActivityIntent(Context context) {
         Intent intent = new Intent(context, CreditCardCompoundViewActivity.class);
         return intent;
@@ -40,6 +43,7 @@
         setContentView(R.layout.credit_card_compound_view_activity);
         mCcExpDateView = findViewById(R.id.creditCardExpirationView);
         mCcExpNumber = findViewById(R.id.creditCardNumberField);
+        mCcSecurityCode = findViewById(R.id.creditCardSecurityCode);
         findViewById(R.id.submitButton).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -49,6 +53,7 @@
         findViewById(R.id.clearButton).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                getSystemService(AutofillManager.class).cancel();
                 resetFields();
             }
         });
@@ -57,6 +62,7 @@
     private void resetFields() {
         mCcExpDateView.reset();
         mCcExpNumber.setText("");
+        mCcSecurityCode.setText("");
     }
 
     /**
diff --git a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/MultiplePartitionsActivity.java b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/MultiplePartitionsActivity.java
index f3d212e..71542c5 100644
--- a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/MultiplePartitionsActivity.java
+++ b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/app/MultiplePartitionsActivity.java
@@ -80,6 +80,11 @@
                 "         ", true, View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH);
         mCcPartition.addLine("ccYear", getString(R.string.credit_card_expiration_year_label),
                 "         ", true, View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR);
+        // TODO: figure out why expiration date is not being autofilled
+        mCcPartition.addLine("ccDate", getString(R.string.credit_card_expiration_date_label),
+                "         ", true, View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE);
+        mCcPartition.addLine("ccSecurityCode", getString(R.string.credit_card_security_code_label),
+                "         ", true, View.AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE);
 
         // TODO: add ComboBox that changes visibility of partitions
         // mCcPartition.setVisibility(false);
diff --git a/input/autofill/AutofillFramework/Application/src/main/res/layout/activity_main.xml b/input/autofill/AutofillFramework/Application/src/main/res/layout/activity_main.xml
index abe6e08..cbe708a 100644
--- a/input/autofill/AutofillFramework/Application/src/main/res/layout/activity_main.xml
+++ b/input/autofill/AutofillFramework/Application/src/main/res/layout/activity_main.xml
@@ -64,15 +64,6 @@
             app:imageColor="@android:color/holo_orange_dark"/>
 
         <com.example.android.autofillframework.app.NavigationItem
-            android:id="@+id/emailComposeButton"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            app:infoText="@string/email_compose_info"
-            app:labelText="@string/navigation_button_email_compose_label"
-            app:itemLogo="@drawable/ic_email_black_24dp"
-            app:imageColor="@android:color/holo_purple"/>
-
-        <com.example.android.autofillframework.app.NavigationItem
             android:id="@+id/creditCardCompoundViewButton"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -82,6 +73,15 @@
             app:itemLogo="@drawable/ic_view_module_black_24dp" />
 
         <com.example.android.autofillframework.app.NavigationItem
+            android:id="@+id/emailComposeButton"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:infoText="@string/email_compose_info"
+            app:labelText="@string/navigation_button_email_compose_label"
+            app:itemLogo="@drawable/ic_email_black_24dp"
+            app:imageColor="@android:color/holo_purple"/>
+
+        <com.example.android.autofillframework.app.NavigationItem
             android:id="@+id/multiplePartitionsButton"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_activity.xml b/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_activity.xml
index 7f78c4e..ca7e560 100644
--- a/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_activity.xml
+++ b/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_activity.xml
@@ -119,6 +119,30 @@
         app:layout_constraintTop_toTopOf="@+id/expirationMonth" />
 
     <TextView
+        android:id="@+id/creditCardSecurityCodeLabel"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/spacing_large"
+        android:importantForAutofill="no"
+        android:text="@string/credit_card_security_code_label"
+        app:layout_constraintEnd_toStartOf="@+id/expirationDate"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/creditCardExpirationLabel" />
+
+    <EditText
+        android:id="@+id/creditCardSecurityCode"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_alignBaseline="@+id/creditCardSecurityCodeLabel"
+        android:layout_marginEnd="8dp"
+        android:inputType="number"
+        android:autofillHints="creditCardSecurityCode"
+        app:layout_constraintBottom_toBottomOf="@+id/creditCardSecurityCodeLabel"
+        app:layout_constraintEnd_toEndOf="@+id/expirationMonth"
+        app:layout_constraintStart_toStartOf="@+id/expirationDay"
+        app:layout_constraintTop_toTopOf="@+id/creditCardSecurityCodeLabel" />
+
+    <TextView
         android:id="@+id/clear"
         style="@style/Widget.AppCompat.Button.Borderless"
         android:layout_width="wrap_content"
@@ -131,7 +155,7 @@
         app:layout_constraintHorizontal_bias="0.5"
         app:layout_constraintHorizontal_chainStyle="packed"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/creditCardExpirationLabel" />
+        app:layout_constraintTop_toBottomOf="@+id/creditCardSecurityCodeLabel" />
 
     <TextView
         android:id="@+id/submit"
diff --git a/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_compound_view_activity.xml b/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_compound_view_activity.xml
index e95d052..7fae6b6 100644
--- a/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_compound_view_activity.xml
+++ b/input/autofill/AutofillFramework/Application/src/main/res/layout/credit_card_compound_view_activity.xml
@@ -104,6 +104,32 @@
         app:layout_constraintTop_toTopOf="@+id/creditCardExpirationLabel" />
 
     <TextView
+        android:id="@+id/creditCardSecurityCodeLabel"
+        style="@style/TextAppearance.AppCompat.Body1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/spacing_large"
+        android:importantForAutofill="no"
+        android:text="@string/credit_card_security_code_label"
+        app:layout_constraintEnd_toStartOf="@+id/expirationDate"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/creditCardExpirationView" />
+
+    <!--  TODO: it's overlapping with @+id/creditCardExpirationView -->
+    <EditText
+        android:id="@+id/creditCardSecurityCode"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_alignBaseline="@+id/creditCardSecurityCodeLabel"
+        android:layout_marginEnd="8dp"
+        android:inputType="number"
+        android:autofillHints="creditCardSecurityCode"
+        app:layout_constraintBottom_toBottomOf="@+id/creditCardSecurityCodeLabel"
+        app:layout_constraintEnd_toEndOf="@+id/creditCardExpirationView"
+        app:layout_constraintStart_toStartOf="@+id/creditCardExpirationView"
+        app:layout_constraintTop_toTopOf="@+id/creditCardSecurityCodeLabel" />
+
+    <TextView
         android:id="@+id/clearButton"
         style="@style/Widget.AppCompat.Button.Borderless"
         android:layout_width="wrap_content"
@@ -116,7 +142,7 @@
         app:layout_constraintHorizontal_bias="0.5"
         app:layout_constraintHorizontal_chainStyle="packed"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/creditCardExpirationView" />
+        app:layout_constraintTop_toBottomOf="@+id/creditCardSecurityCodeLabel" />
 
     <TextView
         android:id="@+id/submitButton"
diff --git a/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml b/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml
index 35674e5..177c5e6 100644
--- a/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml
+++ b/input/autofill/AutofillFramework/Application/src/main/res/values/strings.xml
@@ -34,6 +34,7 @@
     <string name="autofill_sign_in_prompt">Tap to sign in.</string>
     <string name="credit_card_number_label">CC Number</string>
     <string name="credit_card_expiration_label">CC Exp</string>
+    <string name="credit_card_expiration_date_label">CC Exp Date</string>
     <string name="credit_card_expiration_day_label">CC Exp Day</string>
     <string name="credit_card_expiration_month_label">CC Exp Month</string>
     <string name="credit_card_expiration_year_label">CC Exp Year</string>