Bug 1303515 - Part 1: Add form autofill update doorhanger. r=MattN
MozReview-Commit-ID: I7LhGcIDGre
--- a/browser/extensions/formautofill/FormAutofillDoorhanger.jsm
+++ b/browser/extensions/formautofill/FormAutofillDoorhanger.jsm
@@ -46,16 +46,39 @@ const CONTENT = {
accessKey: "C",
callbackState: "open-pref",
},
options: {
persistWhileVisible: true,
popupIconURL: "chrome://formautofill/content/icon-address-save.svg",
},
},
+ update: {
+ notificationId: "autofill-address",
+ message: GetStringFromName("updateAddressMessage"),
+ anchor: {
+ id: "autofill-address-notification-icon",
+ URL: "chrome://formautofill/content/formfill-anchor.svg",
+ tooltiptext: GetStringFromName("openAutofillMessagePanel"),
+ },
+ mainAction: {
+ label: GetStringFromName("updateAddressLabel"),
+ accessKey: "U",
+ callbackState: "update",
+ },
+ secondaryActions: [{
+ label: GetStringFromName("createAddressLabel"),
+ accessKey: "C",
+ callbackState: "create",
+ }],
+ options: {
+ persistWhileVisible: true,
+ popupIconURL: "chrome://formautofill/content/icon-address-update.svg",
+ },
+ },
};
let FormAutofillDoorhanger = {
/**
* Generate the main action and secondary actions from content parameters and
* promise resolve.
*
* @private
--- a/browser/extensions/formautofill/FormAutofillParent.jsm
+++ b/browser/extensions/formautofill/FormAutofillParent.jsm
@@ -275,17 +275,35 @@ FormAutofillParent.prototype = {
this._updateStatus();
},
_onFormSubmit(data, target) {
let {address} = data;
if (address.guid) {
if (!this.profileStorage.addresses.mergeIfPossible(address.guid, address.record)) {
- // TODO: Show update doorhanger(bug 1303513) and set probe(bug 990200)
+ FormAutofillDoorhanger.show(target, "update").then((state) => {
+ let changedGUIDs = this.profileStorage.addresses.mergeToStorage(address.record);
+ switch (state) {
+ case "create":
+ if (!changedGUIDs.length) {
+ changedGUIDs.push(this.profileStorage.addresses.add(address.record));
+ }
+ break;
+ case "update":
+ if (!changedGUIDs.length) {
+ this.profileStorage.addresses.update(address.guid, address.record);
+ changedGUIDs.push(address.guid);
+ } else {
+ this.profileStorage.addresses.remove(address.guid);
+ }
+ break;
+ }
+ changedGUIDs.forEach(guid => this.profileStorage.addresses.notifyUsed(guid));
+ });
return;
}
this.profileStorage.addresses.notifyUsed(address.guid);
} else {
let changedGUIDs = this.profileStorage.addresses.mergeToStorage(address.record);
if (!changedGUIDs.length) {
changedGUIDs.push(this.profileStorage.addresses.add(address.record));
}
new file mode 100644
--- /dev/null
+++ b/browser/extensions/formautofill/content/icon-address-update.svg
@@ -0,0 +1,6 @@
+<!-- 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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#999899" d="M22 13.7H9.4c-.6 0-1.2.5-1.2 1.2 0 .6.5 1.2 1.2 1.2H22c.6 0 1.2-.5 1.2-1.2s-.6-1.2-1.2-1.2zM6.1 26.6V5.5c0-.8.7-1.5 1.5-1.5h16c.9 0 1.5.6 1.5 1.5V16h2V3.8c0-1-.7-1.8-1.8-1.8H5.9c-1 0-1.8.8-1.8 1.8v24.5c0 1 .8 1.7 1.8 1.7h9.3v-2H7.6c-.8 0-1.5-.6-1.5-1.4zm9.8-7.5H9.4c-.6 0-1.2.5-1.2 1.2s.5 1.2 1.2 1.2h6.5c.6 0 1.2-.5 1.2-1.2s-.6-1.2-1.2-1.2zM22 7.8H9.4c-.6 0-1.2.5-1.2 1.2s.5 1.2 1.2 1.2H22c.6 0 1.2-.5 1.2-1.2s-.6-1.2-1.2-1.2zm-5.7 16l4.4-4.3c.2-.2.5-.3.8-.3s.6.1.8.3l4.4 4.3c.5.5.3.8-.3.8h-2.6v4.7c0 .4-.4.8-.8.8h-3c-.4 0-.8-.4-.8-.8v-4.7h-2.5c-.7 0-.8-.4-.4-.8z"/>
+</svg>
--- a/browser/extensions/formautofill/locale/en-US/formautofill.properties
+++ b/browser/extensions/formautofill/locale/en-US/formautofill.properties
@@ -5,13 +5,16 @@
preferenceGroupTitle = Form Autofill
enableProfileAutofill = Enable Profile Autofill
savedProfiles = Saved Profiles…
saveAddressesMessage = Firefox now saves addresses so you can fill out forms faster.
viewAutofillOptionsLink = View Form Autofill Options
changeAutofillOptions = Change Form Autofill Options
viewAutofillOptionsOSX = View Form Autofill preferences…
changeAutofillOptionsOSX = Change Form Autofill Preferences
+updateAddressMessage = Would you like to update your address with this new information?
+createAddressLabel = Create New Address
+updateAddressLabel = Update Address
openAutofillMessagePanel = Open Form Autofill message panel
autocompleteFooterOption = Form Autofill Options
autocompleteFooterOptionShort = Options
autocompleteFooterOptionOSX = Form Autofill Preferences
autocompleteFooterOptionOSXShort = Preferences