From 7fa8371641ad33ce39f36a3bbd589b85ca2c9e45 Mon Sep 17 00:00:00 2001 From: lesleynorton Date: Wed, 14 Aug 2019 22:56:55 +0000 Subject: [PATCH] Bug 1569846: Add breach alert dismissal. r=MattN,fluent-reviewers,flod Differential Revision: https://phabricator.services.mozilla.com/D41034 --HG-- extra : moz-landing-system : lando --- browser/components/BrowserGlue.jsm | 2 + .../aboutlogins/AboutLoginsChild.jsm | 6 ++ .../aboutlogins/AboutLoginsParent.jsm | 15 +++++ .../aboutlogins/content/aboutLogins.html | 1 + .../content/components/login-item.css | 23 +++++++ .../content/components/login-item.js | 21 ++++++ .../content/components/login-list.js | 11 ++-- .../aboutlogins/tests/browser/browser.ini | 1 + .../browser/browser_breachAlertDismissals.js | 66 +++++++++++++++++++ .../aboutlogins/tests/browser/head.js | 11 ++++ .../tests/chrome/test_login_item.html | 4 +- .../tests/unit/test_getBreachesForLogins.js | 38 +++++++++++ browser/locales/en-US/browser/aboutLogins.ftl | 2 + .../components/passwordmgr/LoginHelper.jsm | 20 +++++- toolkit/components/passwordmgr/LoginStore.jsm | 4 ++ .../passwordmgr/nsILoginManager.idl | 1 + .../components/passwordmgr/storage-json.js | 17 +++++ 17 files changed, 234 insertions(+), 9 deletions(-) create mode 100644 browser/components/aboutlogins/tests/browser/browser_breachAlertDismissals.js diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm index 0c46edc46e24..bb82f5aaacdc 100644 --- a/browser/components/BrowserGlue.jsm +++ b/browser/components/BrowserGlue.jsm @@ -135,6 +135,7 @@ let LEGACY_ACTORS = { AboutLoginsCopyLoginDetail: { wantUntrusted: true }, AboutLoginsCreateLogin: { wantUntrusted: true }, AboutLoginsDeleteLogin: { wantUntrusted: true }, + AboutLoginsDismissBreachAlert: { wantUntrusted: true }, AboutLoginsImport: { wantUntrusted: true }, AboutLoginsInit: { wantUntrusted: true }, AboutLoginsOpenFAQ: { wantUntrusted: true }, @@ -636,6 +637,7 @@ const listeners = { mm: { "AboutLogins:CreateLogin": ["AboutLoginsParent"], "AboutLogins:DeleteLogin": ["AboutLoginsParent"], + "AboutLogins:DismissBreachAlert": ["AboutLoginsParent"], "AboutLogins:Import": ["AboutLoginsParent"], "AboutLogins:MasterPasswordRequest": ["AboutLoginsParent"], "AboutLogins:OpenFAQ": ["AboutLoginsParent"], diff --git a/browser/components/aboutlogins/AboutLoginsChild.jsm b/browser/components/aboutlogins/AboutLoginsChild.jsm index 2749d387b994..e72124ce55ec 100644 --- a/browser/components/aboutlogins/AboutLoginsChild.jsm +++ b/browser/components/aboutlogins/AboutLoginsChild.jsm @@ -90,6 +90,12 @@ class AboutLoginsChild extends ActorChild { }); break; } + case "AboutLoginsDismissBreachAlert": { + this.mm.sendAsyncMessage("AboutLogins:DismissBreachAlert", { + login: event.detail, + }); + break; + } case "AboutLoginsImport": { this.mm.sendAsyncMessage("AboutLogins:Import"); break; diff --git a/browser/components/aboutlogins/AboutLoginsParent.jsm b/browser/components/aboutlogins/AboutLoginsParent.jsm index 03e3ef850d9f..7d7070d50dcc 100644 --- a/browser/components/aboutlogins/AboutLoginsParent.jsm +++ b/browser/components/aboutlogins/AboutLoginsParent.jsm @@ -123,6 +123,21 @@ var AboutLoginsParent = { Services.logins.removeLogin(login); break; } + case "AboutLogins:DismissBreachAlert": { + const login = message.data.login; + + await LoginHelper.recordBreachAlertDismissal(login.guid); + const logins = await this.getAllLogins(); + const breachesByLoginGUID = await LoginHelper.getBreachesForLogins( + logins + ); + const messageManager = message.target.messageManager; + messageManager.sendAsyncMessage( + "AboutLogins:UpdateBreaches", + breachesByLoginGUID + ); + break; + } case "AboutLogins:SyncEnable": { message.target.ownerGlobal.gSync.openFxAEmailFirstPage( "password-manager" diff --git a/browser/components/aboutlogins/content/aboutLogins.html b/browser/components/aboutlogins/content/aboutLogins.html index 238bd5ad9175..6c251c378f4c 100644 --- a/browser/components/aboutlogins/content/aboutLogins.html +++ b/browser/components/aboutlogins/content/aboutLogins.html @@ -137,6 +137,7 @@
+