diff options
Diffstat (limited to 'toolkit/components/formautofill/content/RequestAutocompleteUI.jsm')
-rw-r--r-- | toolkit/components/formautofill/content/RequestAutocompleteUI.jsm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/toolkit/components/formautofill/content/RequestAutocompleteUI.jsm b/toolkit/components/formautofill/content/RequestAutocompleteUI.jsm new file mode 100644 index 000000000..74c4834ba --- /dev/null +++ b/toolkit/components/formautofill/content/RequestAutocompleteUI.jsm @@ -0,0 +1,58 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* + * Handles the requestAutocomplete user interface. + */ + +"use strict"; + +this.EXPORTED_SYMBOLS = [ + "RequestAutocompleteUI", +]; + +const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); + +XPCOMUtils.defineLazyModuleGetter(this, "Promise", + "resource://gre/modules/Promise.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Task", + "resource://gre/modules/Task.jsm"); + +/** + * Handles the requestAutocomplete user interface. + */ +this.RequestAutocompleteUI = function (aAutofillData) { + this._autofillData = aAutofillData; +} + +this.RequestAutocompleteUI.prototype = { + _autofillData: null, + + show: Task.async(function* () { + // Create a new promise and store the function that will resolve it. This + // will be called by the UI once the selection has been made. + let resolveFn; + let uiPromise = new Promise(resolve => resolveFn = resolve); + + // Wrap the callback function so that it survives XPCOM. + let args = { + resolveFn: resolveFn, + autofillData: this._autofillData, + }; + args.wrappedJSObject = args; + + // Open the window providing the function to call when it closes. + Services.ww.openWindow(null, + "chrome://formautofill/content/requestAutocomplete.xhtml", + "Toolkit:RequestAutocomplete", + "chrome,dialog=no,resizable", + args); + + // Wait for the window to be closed and the operation confirmed. + return yield uiPromise; + }), +}; |