New issue
Advanced search Search tips

Issue 602987 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 2
Type: Bug



Sign in to add a comment

Month field of credit card details doesn't populate under payment method.

Reported by vku...@etouch.net, Apr 13 2016

Issue description

Chrome Version:50.0.2661.75 (Official Build) ffad3c52452e415ab24c9cad1bae22eeb7428092-refs/branch-heads/2661@{#573} 32/64 Bit. 
OS:All,Win 7(Aero enabled)

What steps will reproduce the problem?
1.Launch chrome and navigate to chrome://settings/autofill ,click on 'add new new credit card' enter card holder name/card no, expiry month/year
2.Navigate to https://www.ryanair.com/gb/en/ ,select flight options and click on 'checkout' button.
3.Now double click on card no file and observe the month field.

Actual: Month field of credit card details doesn't populate under payment method.

Expected: Month field of credit card details should populate under payment method.

This is a Non-regression issue seen from 'M50' series i.e 50.0.2625.0
 
Actual_Autofill.mp4
388 KB Download
Status: Untriaged (was: Unconfirmed)
marking as untriaged and requesting dev team to check the issue.

Comment 2 by zkoch@chromium.org, Apr 13 2016

Owner: se...@chromium.org
Status: Assigned (was: Untriaged)

Comment 3 by m...@aveni.us, Apr 14 2016

I am seeing the same behavior on a few sites that I maintain as well. To add a bit of detail (because I see the same situation on ryanair.com as with my sites,) I noticed that it is an issue when the month is a select box and the option values are type-qualified (value="number:1" for January, e.g.)

Changing the select box to have non-dynamic options without type qualification allows autofill to work properly. 

Further, this was working for Chrome version 48.0.2564.116, and it broke with the update to 49.0.2623.110 (or one of the updates in between those two versions.)

If I find any more detail that might help the diagnosis, I will add it here.

Comment 4 by ma...@chromium.org, Apr 21 2016

Cc: ma...@chromium.org
Thanks Mark, are you using a library or framework to construct the Month/year expiration fields? Putting value="number:1" is not a standard was of doing things.

Comment 5 by m...@aveni.us, Apr 21 2016

Yes, I am using AngularJS, which is what ryanair.com is using as well (based on looking at their javascript.

Comment 6 by m...@aveni.us, Apr 21 2016

Incidentally, I thought that looked strange, and was curious what part of a standard that would be.

Comment 7 by ma...@chromium.org, Apr 21 2016

Thanks, is there a component that does credit card entry natively in AngularJS or is credit card entry party of a plugin? Sorry, I'm not familiar with it and could not find such a plugin by searching.

Comment 8 by m...@aveni.us, Apr 21 2016

Oh, sorry. No, it is not part of a plugin. We are converting an object (key-value pairs of month name to number) via Angular's ng-options directive:

<select ng-model="payment.ExpMonth" ng-options="cardMonth.Value as cardMonth.Name for cardMonth in cardMonths" class="select" name="expMonth" required>
    <option value="">Month</option>
</select>

Where cardMonths is defined like so:

    $scope.cardMonths = [{
        Name: '01 (January)',
        Value: 1
    }, {
        Name: '02 (February)',
        Value: '02'
    }, {
        Name: '03 (March)',
        Value: '03'
    }, {
        Name: '04 (April)',
        Value: '04'
    }, {
        Name: '05 (May)',
        Value: '05'
    }, {
        Name: '06 (June)',
        Value: '06'
    }, {
        Name: '07 (July)',
        Value: '07'
    }, {
        Name: '08 (August)',
        Value: '08'
    }, {
        Name: '09 (September)',
        Value: '09'
    }, {
        Name: '10 (October)',
        Value: '10'
    }, {
        Name: '11 (November)',
        Value: '11'
    }, {
        Name: '12 (December)',
        Value: '12'
    }];

Thanks for taking a look at this!

Comment 9 by m...@aveni.us, Apr 21 2016

Whoops. I was testing a few things while looking at this, and I botched some of it. All of the Values in cardMonths should be integers, not strings.

Comment 10 by ma...@chromium.org, Apr 21 2016

Owner: ma...@chromium.org
Thanks Mark for the details. So AngularJS will take the "Value" attribute and transform it to "number:<Value>" (e.g. "number:1")? If so, sounds like Autofill should adapt to that.

Comment 11 by m...@aveni.us, Apr 21 2016

Yes, exactly. I believe it puts in the data type so it can keep two-way binding working (I'm speculating on this though.) If the value were a string, it becomes "string:<Value>".

Comment 12 by ma...@chromium.org, Apr 21 2016

Status: Started (was: Assigned)
Looks like we have seen "number:" in the wild for exp month so I'll fix that and hold out of checking for "string:"

Thanks for your help in making Autofill better!

Comment 13 by m...@aveni.us, Apr 21 2016

Thank you!
Project Member

Comment 14 by bugdroid1@chromium.org, Apr 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d9f8818992a4f18090aeca2cfff70dfc9504571b

commit d9f8818992a4f18090aeca2cfff70dfc9504571b
Author: mathp <mathp@chromium.org>
Date: Fri Apr 22 15:50:45 2016

Autofill: Check for common angular js prefix when filling exp month.

BUG= 602987 
TEST=AutofillFieldTest

Review URL: https://codereview.chromium.org/1905143002

Cr-Commit-Position: refs/heads/master@{#389121}

[modify] https://crrev.com/d9f8818992a4f18090aeca2cfff70dfc9504571b/components/autofill/core/browser/autofill_field.cc
[modify] https://crrev.com/d9f8818992a4f18090aeca2cfff70dfc9504571b/components/autofill/core/browser/autofill_field_unittest.cc

Comment 15 by ma...@chromium.org, Apr 22 2016

Status: Fixed (was: Started)

Sign in to add a comment