| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Installs Autofill management functions on the |__gCrWeb| object. | 5 // Installs Autofill management functions on the |__gCrWeb| object. |
| 6 // | 6 // |
| 7 // It scans the DOM, extracting and storing forms and returns a JSON string | 7 // It scans the DOM, extracting and storing forms and returns a JSON string |
| 8 // representing an array of objects, each of which represents an Autofill form | 8 // representing an array of objects, each of which represents an Autofill form |
| 9 // with information about a form to be filled and/or submitted and it can be | 9 // with information about a form to be filled and/or submitted and it can be |
| 10 // translated to struct FormData | 10 // translated to struct FormData |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 __gCrWeb.autofill.ROLE_ATTRIBUTE_PRESENTATION = 0; | 130 __gCrWeb.autofill.ROLE_ATTRIBUTE_PRESENTATION = 0; |
| 131 | 131 |
| 132 /** | 132 /** |
| 133 * The last element that was autofilled. | 133 * The last element that was autofilled. |
| 134 * | 134 * |
| 135 * @type {Element} | 135 * @type {Element} |
| 136 */ | 136 */ |
| 137 __gCrWeb.autofill.lastAutoFilledElement = null; | 137 __gCrWeb.autofill.lastAutoFilledElement = null; |
| 138 | 138 |
| 139 /** | 139 /** |
| 140 * The last element that was active (used to restore focus if necessary). | |
| 141 * | |
| 142 * @type {Element} | |
| 143 */ | |
| 144 __gCrWeb.autofill.lastActiveElement = null; | |
| 145 | |
| 146 /** | |
| 147 * Whether CSS for autofilled elements has been injected into the page. | 140 * Whether CSS for autofilled elements has been injected into the page. |
| 148 * | 141 * |
| 149 * @type {boolean} | 142 * @type {boolean} |
| 150 */ | 143 */ |
| 151 __gCrWeb.autofill.styleInjected = false; | 144 __gCrWeb.autofill.styleInjected = false; |
| 152 | 145 |
| 153 /** | 146 /** |
| 154 * Searches an element's ancestors to see if the element is inside a <form> or | 147 * Searches an element's ancestors to see if the element is inside a <form> or |
| 155 * <fieldset>. | 148 * <fieldset>. |
| 156 * | 149 * |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 * @return {string} A JSON encoded object with object['forms'] containing the | 542 * @return {string} A JSON encoded object with object['forms'] containing the |
| 550 * forms data. | 543 * forms data. |
| 551 */ | 544 */ |
| 552 __gCrWeb.autofill['extractForms'] = function(requiredFields) { | 545 __gCrWeb.autofill['extractForms'] = function(requiredFields) { |
| 553 var results = new __gCrWeb.common.JSONSafeObject; | 546 var results = new __gCrWeb.common.JSONSafeObject; |
| 554 results['forms'] = __gCrWeb.autofill.extractNewForms(requiredFields); | 547 results['forms'] = __gCrWeb.autofill.extractNewForms(requiredFields); |
| 555 return __gCrWeb.stringify(results); | 548 return __gCrWeb.stringify(results); |
| 556 }; | 549 }; |
| 557 | 550 |
| 558 /** | 551 /** |
| 559 * Stores the current active element. This is used to make the element active | 552 * Fills data into the active form field. |
| 560 * again in case the web view loses focus when a dialog is presented over it. | |
| 561 */ | |
| 562 __gCrWeb.autofill['storeActiveElement'] = function() { | |
| 563 __gCrWeb.autofill.lastActiveElement = document.activeElement; | |
| 564 } | |
| 565 | |
| 566 /** | |
| 567 * Clears the current active element by setting it to null. | |
| 568 */ | |
| 569 __gCrWeb.autofill['clearActiveElement'] = function() { | |
| 570 __gCrWeb.autofill.lastActiveElement = null; | |
| 571 } | |
| 572 | |
| 573 /** | |
| 574 * Fills data into the active form field. The active form field is either | |
| 575 * document.activeElement or the value of lastActiveElement if that value is | |
| 576 * non-null. | |
| 577 * | 553 * |
| 578 * @param {AutofillFormFieldData} data The data to fill in. | 554 * @param {AutofillFormFieldData} data The data to fill in. |
| 579 */ | 555 */ |
| 580 __gCrWeb.autofill['fillActiveFormField'] = function(data) { | 556 __gCrWeb.autofill['fillActiveFormField'] = function(data) { |
| 581 var activeElement = document.activeElement; | 557 var activeElement = document.activeElement; |
| 582 if (__gCrWeb.autofill.lastActiveElement) { | |
| 583 activeElement = __gCrWeb.autofill.lastActiveElement; | |
| 584 activeElement.focus(); | |
| 585 __gCrWeb.autofill.lastActiveElement = null; | |
| 586 } | |
| 587 if (data['name'] !== __gCrWeb['common'].nameForAutofill(activeElement)) { | 558 if (data['name'] !== __gCrWeb['common'].nameForAutofill(activeElement)) { |
| 588 return; | 559 return; |
| 589 } | 560 } |
| 590 __gCrWeb.autofill.lastAutoFilledElement = activeElement; | 561 __gCrWeb.autofill.lastAutoFilledElement = activeElement; |
| 591 __gCrWeb.autofill.fillFormField(data, activeElement); | 562 __gCrWeb.autofill.fillFormField(data, activeElement); |
| 592 }; | 563 }; |
| 593 | 564 |
| 594 /** | 565 /** |
| 595 * Fills a number of fields in the same named form for full-form Autofill. | 566 * Fills a number of fields in the same named form for full-form Autofill. |
| 596 * Applies Autofill CSS (i.e. yellow background) to filled elements. | 567 * Applies Autofill CSS (i.e. yellow background) to filled elements. |
| (...skipping 1487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2084 continue; | 2055 continue; |
| 2085 } | 2056 } |
| 2086 var elementName = __gCrWeb['common'].nameForAutofill(element); | 2057 var elementName = __gCrWeb['common'].nameForAutofill(element); |
| 2087 var value = formData[elementName]; | 2058 var value = formData[elementName]; |
| 2088 if (value) { | 2059 if (value) { |
| 2089 element.placeholder = value; | 2060 element.placeholder = value; |
| 2090 } | 2061 } |
| 2091 } | 2062 } |
| 2092 } | 2063 } |
| 2093 }; | 2064 }; |
| OLD | NEW |