Bug 1426561 - Fix the null pointer issue caused by FormAutofillContent. r=lchang
MozReview-Commit-ID: 6yIYl4NQGuh
--- a/browser/extensions/formautofill/FormAutofillContent.jsm
+++ b/browser/extensions/formautofill/FormAutofillContent.jsm
@@ -441,16 +441,19 @@ var FormAutofillContent = {
*
* @param {HTMLInputElement} element Focused input which triggered profile searching
* @returns {Array<Object>|null}
* Return target form's handler from content cache
* (or return null if the information is not found in the cache).
*
*/
_getFormHandler(element) {
+ if (!element) {
+ return null;
+ }
let rootElement = FormLikeFactory.findRootForField(element);
return this._formsDetails.get(rootElement);
},
/**
* Get the active form's information from cache which is created after page
* identified.
*
@@ -469,30 +472,35 @@ var FormAutofillContent = {
* `formFillController.focusedInput`. All of them including element,
* handler, section, and field detail, can be retrieved by their own getters.
*
* @param {HTMLElement|null} element The active item should be updated based
* on this or `formFillController.focusedInput` will be taken.
*/
updateActiveInput(element) {
element = element || formFillController.focusedInput;
+ if (!element) {
+ this._activeItems = {};
+ return;
+ }
let handler = this._getFormHandler(element);
if (handler) {
handler.focusedInput = element;
}
this._activeItems = {
handler,
elementWeakRef: Cu.getWeakReference(element),
section: handler ? handler.activeSection : null,
fieldDetail: null,
};
},
get activeInput() {
- return this._activeItems.elementWeakRef.get();
+ let elementWeakRef = this._activeItems.elementWeakRef;
+ return elementWeakRef ? elementWeakRef.get() : null;
},
get activeHandler() {
return this._activeItems.handler;
},
get activeSection() {
return this._activeItems.section;