Bug 1455087 - Support deleting autofill records with the delete key. r?MattN draft
authormbkupfer <mbkupfer@gmail.com>
Thu, 19 Apr 2018 13:06:59 -0700
changeset 785378 8316abb6ebc63ce79fae735fae1c783f3223cb51
parent 784732 a0c804993efc599a95e97bea39fa1528fd0195d8
push id107207
push userbmo:mbkupfer@gmail.com
push dateThu, 19 Apr 2018 23:31:29 +0000
reviewersMattN
bugs1455087
milestone61.0a1
Bug 1455087 - Support deleting autofill records with the delete key. r?MattN MozReview-Commit-ID: FiqauWe5oDh
browser/extensions/formautofill/content/manageDialog.js
browser/extensions/formautofill/test/browser/browser_manageAddressesDialog.js
browser/extensions/formautofill/test/browser/browser_manageCreditCardsDialog.js
--- a/browser/extensions/formautofill/content/manageDialog.js
+++ b/browser/extensions/formautofill/content/manageDialog.js
@@ -232,16 +232,19 @@ class ManageRecords {
    * Handle key press events
    *
    * @param  {DOMEvent} event
    */
   handleKeyPress(event) {
     if (event.keyCode == KeyEvent.DOM_VK_ESCAPE) {
       window.close();
     }
+    if (event.keyCode == KeyEvent.DOM_VK_DELETE) {
+      this.removeRecords(this._selectedOptions);
+    }
   }
 
   observe(subject, topic, data) {
     switch (topic) {
       case "formautofill-storage-changed": {
         this.loadRecords();
       }
     }
--- a/browser/extensions/formautofill/test/browser/browser_manageAddressesDialog.js
+++ b/browser/extensions/formautofill/test/browser/browser_manageAddressesDialog.js
@@ -62,16 +62,33 @@ add_task(async function test_removingSin
 
   EventUtils.synthesizeMouseAtCenter(btnRemove, {}, win);
   await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
   is(selRecords.length, 0, "All addresses are removed");
 
   win.close();
 });
 
+add_task(async function test_removingAdressViaKeyboardDelete() {
+  await saveAddress(TEST_ADDRESS_1);
+  let win = window.openDialog(MANAGE_ADDRESSES_DIALOG_URL, null, DIALOG_SIZE);
+  await waitForFocusAndFormReady(win);
+
+  let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
+
+  is(selRecords.length, 1, "One address");
+
+  EventUtils.synthesizeMouseAtCenter(selRecords.children[0], {}, win);
+  EventUtils.synthesizeKey("VK_DELETE", {}, win);
+  await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
+  is(selRecords.length, 0, "No addresses left");
+
+  win.close();
+});
+
 add_task(async function test_addressesDialogWatchesStorageChanges() {
   let win = window.openDialog(MANAGE_ADDRESSES_DIALOG_URL, null, DIALOG_SIZE);
   await waitForFocusAndFormReady(win);
 
   let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
 
   await saveAddress(TEST_ADDRESS_1);
   await BrowserTestUtils.waitForEvent(selRecords, "RecordsLoaded");
--- a/browser/extensions/formautofill/test/browser/browser_manageCreditCardsDialog.js
+++ b/browser/extensions/formautofill/test/browser/browser_manageCreditCardsDialog.js
@@ -69,16 +69,33 @@ add_task(async function test_removingSin
 
   EventUtils.synthesizeMouseAtCenter(btnRemove, {}, win);
   await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
   is(selRecords.length, 0, "All credit cards are removed");
 
   win.close();
 });
 
+add_task(async function test_removingCreditCardsViaKeyboardDelete() {
+  await saveCreditCard(TEST_CREDIT_CARD_1);
+  let win = window.openDialog(MANAGE_CREDIT_CARDS_DIALOG_URL, null, DIALOG_SIZE);
+  await waitForFocusAndFormReady(win);
+
+  let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
+
+  is(selRecords.length, 1, "One credit card");
+
+  EventUtils.synthesizeMouseAtCenter(selRecords.children[0], {}, win);
+  EventUtils.synthesizeKey("VK_DELETE", {}, win);
+  await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
+  is(selRecords.length, 0, "No credit cards left");
+
+  win.close();
+});
+
 add_task(async function test_creditCardsDialogWatchesStorageChanges() {
   let win = window.openDialog(MANAGE_CREDIT_CARDS_DIALOG_URL, null, DIALOG_SIZE);
   await waitForFocusAndFormReady(win);
 
   let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
 
   await saveCreditCard(TEST_CREDIT_CARD_1);
   await BrowserTestUtils.waitForEvent(selRecords, "RecordsLoaded");