| Index: components/autofill/ios/browser/resources/autofill_controller.js
|
| diff --git a/components/autofill/ios/browser/resources/autofill_controller.js b/components/autofill/ios/browser/resources/autofill_controller.js
|
| index fc26586e421adbd0b3fafbe55f21276cdc756cec..ff5053be9916896b31d682c031a4e612ec87a693 100644
|
| --- a/components/autofill/ios/browser/resources/autofill_controller.js
|
| +++ b/components/autofill/ios/browser/resources/autofill_controller.js
|
| @@ -71,28 +71,6 @@ __gCrWeb.autofill.MAX_DATA_LENGTH = 1024;
|
| __gCrWeb.autofill.MAX_PARSEABLE_FIELDS = 100;
|
|
|
| /**
|
| - * A bit field mask for form or form element requirements for requirement
|
| - * none.
|
| - *
|
| - * This variable is from enum RequirementsMask in
|
| - * chromium/src/components/autofill/content/renderer/form_autofill_util.h
|
| - *
|
| - * @const {number}
|
| - */
|
| -__gCrWeb.autofill.REQUIREMENTS_MASK_NONE = 0;
|
| -
|
| -/**
|
| - * A bit field mask for form or form element requirements for requirement
|
| - * autocomplete != off.
|
| - *
|
| - * This variable is from enum RequirementsMask in
|
| - * chromium/src/components/autofill/content/renderer/form_autofill_util.h
|
| - *
|
| - * @const {number}
|
| - */
|
| -__gCrWeb.autofill.REQUIREMENTS_MASK_REQUIRE_AUTOCOMPLETE = 1;
|
| -
|
| -/**
|
| * A bit field mask to extract data from WebFormControlElement for
|
| * extracting none value.
|
| *
|
| @@ -160,27 +138,23 @@ __gCrWeb.autofill.lastActiveElement = null;
|
| __gCrWeb.autofill.styleInjected = false;
|
|
|
| /**
|
| - * Extracts fields from |controlElements| with |requirements| and |extractMask|
|
| - * to |formFields|. The extracted fields are also placed in |elementArray|.
|
| + * Extracts fields from |controlElements| with |extractMask| to |formFields|.
|
| + * The extracted fields are also placed in |elementArray|.
|
| *
|
| * It is based on the logic in
|
| * bool ExtractFieldsFromControlElements(
|
| * const WebVector<WebFormControlElement>& control_elements,
|
| - * RequirementsMask requirements,
|
| * ExtractMask extract_mask,
|
| * ScopedVector<FormFieldData>* form_fields,
|
| * std::vector<bool>* fields_extracted,
|
| * std::map<WebFormControlElement, FormFieldData*>* element_map)
|
| * in chromium/src/components/autofill/content/renderer/form_autofill_util.cc
|
| *
|
| - * TODO(thestig): Get rid of |requirements| to match the C++ version.
|
| * TODO(thestig): Make |element_map| a Map when Chrome makes iOS 8 and Safari 8
|
| * part of the minimal requirements.
|
| *
|
| * @param {Array<FormControlElement>} controlElements The control elements that
|
| * will be processed.
|
| - * @param {number} requirements The requirement on control element
|
| - * autocompletion.
|
| * @param {number} extractMask Mask controls what data is extracted from
|
| * controlElements.
|
| * @param {Array<AutofillFormFieldData>} formFields The extracted form fields.
|
| @@ -191,8 +165,8 @@ __gCrWeb.autofill.styleInjected = false;
|
| * @return {boolean} Whether there are fields and not too many fields in the
|
| * form.
|
| */
|
| -function extractFieldsFromControlElements_(controlElements, requirements,
|
| - extractMask, formFields, fieldsExtracted, elementArray) {
|
| +function extractFieldsFromControlElements_(controlElements, extractMask,
|
| + formFields, fieldsExtracted, elementArray) {
|
| for (var i = 0; i < controlElements.length; ++i) {
|
| fieldsExtracted[i] = false;
|
| elementArray[i] = null;
|
| @@ -203,14 +177,6 @@ function extractFieldsFromControlElements_(controlElements, requirements,
|
| continue;
|
| }
|
|
|
| - if ((requirements &
|
| - __gCrWeb.autofill.REQUIREMENTS_MASK_REQUIRE_AUTOCOMPLETE) &&
|
| - __gCrWeb.autofill.isAutofillableInputElement(controlElement) &&
|
| - !__gCrWeb.autofill.satisfiesRequireAutocomplete(
|
| - controlElement, false)) {
|
| - continue;
|
| - }
|
| -
|
| // Create a new AutofillFormFieldData, fill it out and map it to the
|
| // field's name.
|
| var formField = new __gCrWeb['common'].JSONSafeObject;
|
| @@ -345,7 +311,6 @@ function matchLabelsAndFields_(labels, formElement, controlElements,
|
| * const blink::WebFormControlElement* form_control_element,
|
| * const std::vector<blink::WebElement>& fieldsets,
|
| * const WebVector<WebFormControlElement>& control_elements,
|
| - * RequirementsMask requirements,
|
| * ExtractMask extract_mask,
|
| * FormData* form,
|
| * FormFieldData* field)
|
| @@ -358,7 +323,6 @@ function matchLabelsAndFields_(labels, formElement, controlElements,
|
| * formElement and formControlElement are not specified.
|
| * @param {Array<FormControlElement>} controlElements The control elements that
|
| * will be processed.
|
| - * @param {number} requirements The requirement on formElement autocompletion.
|
| * @param {number} extractMask Mask controls what data is extracted from
|
| * formElement.
|
| * @param {AutofillFormData} form Form to fill in the AutofillFormData
|
| @@ -369,7 +333,7 @@ function matchLabelsAndFields_(labels, formElement, controlElements,
|
| * form.
|
| */
|
| function formOrFieldsetsToFormData_(formElement, formControlElement,
|
| - fieldsets, controlElements, requirements, extractMask, form, field) {
|
| + fieldsets, controlElements, extractMask, form, field) {
|
| // This should be a map from a control element to the AutofillFormFieldData.
|
| // However, without Map support, it's just an Array of AutofillFormFieldData.
|
| var elementArray = [];
|
| @@ -381,9 +345,9 @@ function formOrFieldsetsToFormData_(formElement, formControlElement,
|
| // meets the requirements and thus will be in the resulting |form|.
|
| var fieldsExtracted = [];
|
|
|
| - if (!extractFieldsFromControlElements_(controlElements, requirements,
|
| - extractMask, formFields,
|
| - fieldsExtracted, elementArray)) {
|
| + if (!extractFieldsFromControlElements_(controlElements, extractMask,
|
| + formFields, fieldsExtracted,
|
| + elementArray)) {
|
| return false;
|
| }
|
|
|
| @@ -439,12 +403,10 @@ function formOrFieldsetsToFormData_(formElement, formControlElement,
|
| *
|
| * @param {number} requiredFields The minimum number of fields forms must have
|
| * to be extracted.
|
| - * @param {number} requirements The requirements mask for forms, e.g.
|
| - * autocomplete attribute state.
|
| * @return {string} A JSON encoded object with object['forms'] containing the
|
| * forms data.
|
| */
|
| -__gCrWeb.autofill['extractForms'] = function(requiredFields, requirements) {
|
| +__gCrWeb.autofill['extractForms'] = function(requiredFields) {
|
| var forms = [];
|
| // Protect against custom implementation of Array.toJSON in host pages.
|
| /** @suppress {checkTypes} */(function() { forms.toJSON = null; })();
|
| @@ -454,7 +416,6 @@ __gCrWeb.autofill['extractForms'] = function(requiredFields, requirements) {
|
| __gCrWeb.autofill.extractNewForms(
|
| window,
|
| requiredFields,
|
| - requirements,
|
| forms);
|
| var results = new __gCrWeb.common.JSONSafeObject;
|
| results['forms'] = forms;
|
| @@ -587,15 +548,13 @@ __gCrWeb.autofill['dispatchAutocompleteErrorEvent'] = function(name, reason) {
|
| * from which the data will be extracted.
|
| * @param {number} minimumRequiredFields The minimum number of fields a form
|
| * should contain for autofill.
|
| - * @param {number} requirements The requirements mask for forms, e.g.
|
| - * autocomplete attribute state.
|
| * @param {Array<AutofillFormData>} forms Forms that will be filled in data of
|
| * forms in frame.
|
| */
|
| __gCrWeb.autofill.extractNewForms = function(
|
| - frame, minimumRequiredFields, requirements, forms) {
|
| + frame, minimumRequiredFields, forms) {
|
| __gCrWeb.autofill.extractFormsAndFormElements(
|
| - frame, minimumRequiredFields, requirements, forms);
|
| + frame, minimumRequiredFields, forms);
|
| }
|
|
|
| /**
|
| @@ -614,8 +573,8 @@ __gCrWeb.autofill.extractNewForms = function(
|
| * Initial values of select and checkable elements are not recorded at the
|
| * moment.
|
| *
|
| - * This version still takes the minimumRequiredFields and requirements
|
| - * parameters. Whereas the C++ version does not.
|
| + * This version still takes the minimumRequiredFields parameters. Whereas the
|
| + * C++ version does not.
|
| *
|
| * TODO(thestig): Update iOS internal callers to use extractNewForms(). Once
|
| * that happens, this can be removed.
|
| @@ -624,15 +583,13 @@ __gCrWeb.autofill.extractNewForms = function(
|
| * from which the data will be extracted.
|
| * @param {number} minimumRequiredFields The minimum number of fields a form
|
| * should contain for autofill.
|
| - * @param {number} requirements The requirements mask for forms, e.g.
|
| - * autocomplete attribute state.
|
| * @param {Array<AutofillFormData>} forms Forms that will be filled in data of
|
| * forms in frame.
|
| * @return {boolean} Whether there are unextracted forms due to
|
| * |minimumRequiredFields| limit.
|
| */
|
| __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| - frame, minimumRequiredFields, requirements, forms) {
|
| + frame, minimumRequiredFields, forms) {
|
| if (!frame) {
|
| return false;
|
| }
|
| @@ -649,8 +606,8 @@ __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| for (var formIndex = 0; formIndex < webForms.length; ++formIndex) {
|
| /** @type {HTMLFormElement} */
|
| var formElement = webForms[formIndex];
|
| - var controlElements = __gCrWeb.autofill.extractAutofillableElementsInForm(
|
| - formElement, requirements);
|
| + var controlElements =
|
| + __gCrWeb.autofill.extractAutofillableElementsInForm(formElement);
|
| var numEditableElements = 0;
|
| for (var elementIndex = 0; elementIndex < controlElements.length;
|
| ++elementIndex) {
|
| @@ -673,8 +630,7 @@ __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| __gCrWeb.autofill.EXTRACT_MASK_OPTIONS;
|
| var form = new __gCrWeb['common'].JSONSafeObject;
|
| if (!__gCrWeb.autofill.webFormElementToFormData(
|
| - frame, formElement, null, requirements, extractMask, form,
|
| - null /* field */)) {
|
| + frame, formElement, null, extractMask, form, null /* field */)) {
|
| continue;
|
| }
|
| numFieldsSeen += form['fields'].length;
|
| @@ -693,7 +649,7 @@ __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| var frames = frame.frames;
|
| for (var i = 0; i < frames.length; i++) {
|
| var hasSkippedInframe = __gCrWeb.autofill.extractFormsAndFormElements(
|
| - frames[i], minimumRequiredFields, requirements, forms);
|
| + frames[i], minimumRequiredFields, forms);
|
| hasSkippedForms = hasSkippedForms || hasSkippedInframe;
|
| }
|
| return hasSkippedForms;
|
| @@ -704,15 +660,13 @@ __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| * If |field| is non-NULL, also fills |field| with the FormField object
|
| * corresponding to the |formControlElement|.
|
| * |extract_mask| controls what data is extracted.
|
| - * Returns true if |form| is filled out; it's possible that the |formElement|
|
| - * won't meet the |requirements|. Also returns false if there are no fields or
|
| + * Returns true if |form| is filled out. Returns false if there are no fields or
|
| * too many fields in the |form|.
|
| *
|
| * It is based on the logic in
|
| * bool WebFormElementToFormData(
|
| * const blink::WebFormElement& form_element,
|
| * const blink::WebFormControlElement& form_control_element,
|
| - * RequirementsMask requirements,
|
| * ExtractMask extract_mask,
|
| * FormData* form,
|
| * FormFieldData* field)
|
| @@ -723,7 +677,6 @@ __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| * @param {HTMLFormElement} formElement The form element that will be processed.
|
| * @param {FormControlElement} formControlElement A control element in
|
| * formElment, the FormField of which will be returned in field.
|
| - * @param {number} requirements The requirement on formElement autocompletion.
|
| * @param {number} extractMask Mask controls what data is extracted from
|
| * formElement.
|
| * @param {AutofillFormData} form Form to fill in the AutofillFormData
|
| @@ -734,18 +687,11 @@ __gCrWeb.autofill.extractFormsAndFormElements = function(
|
| * form.
|
| */
|
| __gCrWeb.autofill.webFormElementToFormData = function(
|
| - frame, formElement, formControlElement, requirements, extractMask, form,
|
| - field) {
|
| + frame, formElement, formControlElement, extractMask, form, field) {
|
| if (!frame) {
|
| return false;
|
| }
|
|
|
| - if ((requirements &
|
| - __gCrWeb.autofill.REQUIREMENTS_MASK_REQUIRE_AUTOCOMPLETE) &&
|
| - !__gCrWeb['common'].autoComplete(formElement)) {
|
| - return false;
|
| - }
|
| -
|
| form['name'] = __gCrWeb.common.getFormIdentifier(formElement);
|
| var method = formElement.getAttribute('method');
|
| if (method) {
|
| @@ -768,8 +714,7 @@ __gCrWeb.autofill.webFormElementToFormData = function(
|
| var controlElements = __gCrWeb['common'].getFormControlElements(formElement);
|
|
|
| return formOrFieldsetsToFormData_(formElement, formControlElement,
|
| - [] /* fieldsets */, controlElements, requirements, extractMask, form,
|
| - field);
|
| + [] /* fieldsets */, controlElements, extractMask, form, field);
|
| };
|
|
|
| /**
|
| @@ -806,27 +751,6 @@ __gCrWeb.autofill.isAutofillableElement = function(element) {
|
| };
|
|
|
| /**
|
| - * Check whether the given field satisfies the
|
| - * __gCrWeb.autofill.REQUIREMENTS_MASK_REQUIRE_AUTOCOMPLETE requirement. When
|
| - * Autocheckout is enabled, all fields are considered to satisfy this
|
| - * requirement.
|
| - *
|
| - * It is based on the logic in
|
| - * bool SatisfiesRequireAutocomplete(const WebInputElement& input_element)
|
| - * in chromium/src/components/autofill/content/renderer/form_autofill_util.cc.
|
| - *
|
| - * @param {Element} element The element to be examined.
|
| - * @param {boolean} isExperimentalFormFillingEnabled Boolean from
|
| - * switches::kEnableExperimentalFormFilling.
|
| - * @return {boolean} Whether the inputElement satisfies the requirement.
|
| - */
|
| -__gCrWeb.autofill.satisfiesRequireAutocomplete = function(
|
| - element, isExperimentalFormFillingEnabled) {
|
| - return __gCrWeb.common.autoComplete(element) ||
|
| - isExperimentalFormFillingEnabled;
|
| -};
|
| -
|
| -/**
|
| * Trims whitespace from the start of the input string.
|
| * Simplified version of string_util::TrimWhitespace.
|
| * @param {string} input String to trim.
|
| @@ -1577,35 +1501,20 @@ __gCrWeb.autofill.value = function(element) {
|
| * It is based on the logic in:
|
| * std::vector<blink::WebFormControlElement>
|
| * ExtractAutofillableElementsFromSet(
|
| - * const WebVector<WebFormControlElement>& control_elements,
|
| - * RequirementsMask requirements);
|
| + * const WebVector<WebFormControlElement>& control_elements);
|
| * in chromium/src/components/autofill/content/renderer/form_autofill_util.h.
|
| *
|
| * @param {Array<FormControlElement>} controlElements Set of control elements.
|
| - * @param {number} requirementsMask A mask on the requirement.
|
| * @return {Array<FormControlElement>} The array of autofillable elements.
|
| */
|
| -__gCrWeb.autofill.extractAutofillableElementsFromSet = function(
|
| - controlElements, requirementsMask) {
|
| +__gCrWeb.autofill.extractAutofillableElementsFromSet =
|
| + function(controlElements) {
|
| var autofillableElements = [];
|
| for (var i = 0; i < controlElements.length; ++i) {
|
| var element = controlElements[i];
|
| if (!__gCrWeb.autofill.isAutofillableElement(element)) {
|
| continue;
|
| }
|
| - if (requirementsMask &
|
| - __gCrWeb.autofill.REQUIREMENTS_MASK_REQUIRE_AUTOCOMPLETE) {
|
| - // Different from method void ExtractAutofillableElements() in
|
| - // chromium/src/components/autofill/content/renderer/form_autofill_util.h,
|
| - // where satisfiesRequireAutocomplete() check is only applied on input
|
| - // controls, here satisfiesRequireAutocomplete() check is also applied on
|
| - // select control element. This is based on the TODO in that file saying
|
| - // "WebKit currently doesn't handle the autocomplete attribute for select
|
| - // control elements, but it probably should."
|
| - if (!__gCrWeb.autofill.satisfiesRequireAutocomplete(element, false)) {
|
| - continue;
|
| - }
|
| - }
|
| autofillableElements.push(element);
|
| }
|
| return autofillableElements;
|
| @@ -1616,19 +1525,15 @@ __gCrWeb.autofill.extractAutofillableElementsFromSet = function(
|
| *
|
| * It is based on the logic in
|
| * void ExtractAutofillableElementsInForm(
|
| - * const blink::WebFormElement& form_element,
|
| - * RequirementsMask requirements);
|
| + * const blink::WebFormElement& form_element);
|
| * in chromium/src/components/autofill/content/renderer/form_autofill_util.h.
|
| *
|
| * @param {HTMLFormElement} formElement A form element to be processed.
|
| - * @param {number} requirementsMask A mask on the requirement.
|
| * @return {Array<FormControlElement>} The array of autofillable elements.
|
| */
|
| -__gCrWeb.autofill.extractAutofillableElementsInForm = function(
|
| - formElement, requirementsMask) {
|
| +__gCrWeb.autofill.extractAutofillableElementsInForm = function(formElement) {
|
| var controlElements = __gCrWeb.common.getFormControlElements(formElement);
|
| - return __gCrWeb.autofill.extractAutofillableElementsFromSet(
|
| - controlElements, requirementsMask);
|
| + return __gCrWeb.autofill.extractAutofillableElementsFromSet(controlElements);
|
| };
|
|
|
| /**
|
|
|