Autofill needs better sectioning to avoid field by field cases. See: go/autofill-hidden-sections.
Issue 769113 has been merged into this issue.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6a33ef3d957cc9715d0e2c858d23cee97f969ee7 commit 6a33ef3d957cc9715d0e2c858d23cee97f969ee7 Author: Parastoo Geranmayeh <parastoog@google.com> Date: Wed Jan 24 17:17:40 2018 [Autofill] Better sectioning for hidden fields. Sometimes we have multiple sections on a form, but only the first one is visible, and the next one will appear as the user is interacting with the page. Currently, as a general rule, we ignore hidden fields and never start a new section on one. This rule does not apply for this case. Example: A hidden billing address section after a shipping one which appears if the user has different addresses for billing and shipping. Solution: Change the general rule so that: If current field is a hidden one, start a new section if two following fields are seen in the previous section. Also, keep the status of the already seen visible fields. When back to the visible fields, assume that the hidden section never existed. Depending on the field types, decide if the visible field belongs to a new section or it belongs to the previous visible section. Tests adjusted, one test added/149. Fixes: backcountry.com, https://www.crutchfield.com/, https://www.eddiebauer.com/, etc. Bug: 803670 Change-Id: I96eb258cbdca3c96c31199552e4acfc2467a8647 Reviewed-on: https://chromium-review.googlesource.com/879233 Commit-Queue: Parastoo Geranmayeh <parastoog@google.com> Reviewed-by: Sebastien Seguin-Gagnon <sebsg@chromium.org> Cr-Commit-Position: refs/heads/master@{#531577} [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/autofill/core/browser/form_structure.cc [add] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/input/149_checkout_qvc.com_non_hidden.html [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/023_checkout_gamestop.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/025_checkout_hsn.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/037_checkout_qvc.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/062_register_newegg.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/080_crbug_53075.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/083_crbug_87517.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/092_checkout_alaskaair.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/096_llbean.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/097_register_alaskaair.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/112_checkout_m_llbean.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/118_checkout_cvs.com.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/127_bug_463986.out [modify] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/140_checkout_nike.com.out [add] https://crrev.com/6a33ef3d957cc9715d0e2c858d23cee97f969ee7/components/test/data/autofill/heuristics/output/149_checkout_qvc.com_non_hidden.out
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/89f128f6486e5efe7e8f44ebf8cddcdfad627cd3 commit 89f128f6486e5efe7e8f44ebf8cddcdfad627cd3 Author: Moe Ahmadi <mahmadi@chromium.org> Date: Mon Mar 12 19:23:40 2018 [AF] optional callback for __gCrWeb.fill.setInputElementValue Replaces an unused boolean argument with an optional callback that indicates whether the input element's value was changed. This callback is used to mark elements as autofilled only when the value has actually changed. This fixes cases where a <select> element is marked as autofilled while its value hasn't actually changed from its default value. e.g., www.crutchfield.com Bug: 803670 Change-Id: Iced545fb0f43fa351342b6b51dbacf789f150f8a Reviewed-on: https://chromium-review.googlesource.com/959052 Commit-Queue: Moe Ahmadi <mahmadi@chromium.org> Reviewed-by: Olivier Robin <olivierrobin@chromium.org> Cr-Commit-Position: refs/heads/master@{#542562} [modify] https://crrev.com/89f128f6486e5efe7e8f44ebf8cddcdfad627cd3/components/autofill/ios/browser/resources/autofill_controller.js [modify] https://crrev.com/89f128f6486e5efe7e8f44ebf8cddcdfad627cd3/components/autofill/ios/fill/resources/fill.js
Comment 1 by parastoog@chromium.org
, Jan 23 2018