Backed out changeset 9a0528095590 (bug 1550165) for browser chrome failures in browser_all_files_referenced.js on a CLOSED TREE
authorOana Pop Rus <opoprus@mozilla.com>
Thu, 15 Aug 2019 21:32:12 +0300
changeset 488323 195166db95ccaae18f182af7ef11e576b29d13e4
parent 488322 956ab93a93c7ab130819d6d7c9a3fb05ec6093fa
child 488324 4678b2d85df43ab5869f50df5ce616ef484ebcd6
push id113906
push userncsoregi@mozilla.com
push dateFri, 16 Aug 2019 04:07:24 +0000
treeherdermozilla-inbound@d887276421d3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1550165
milestone70.0a1
backs out9a0528095590ff18f2e7fc87d1e1f2d81dd098d3
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 9a0528095590 (bug 1550165) for browser chrome failures in browser_all_files_referenced.js on a CLOSED TREE
browser/app/profile/firefox.js
browser/components/BrowserGlue.jsm
browser/components/aboutlogins/AboutLoginsChild.jsm
browser/components/aboutlogins/AboutLoginsParent.jsm
browser/components/aboutlogins/content/aboutLogins.css
browser/components/aboutlogins/content/aboutLogins.html
browser/components/aboutlogins/content/aboutLogins.js
browser/components/aboutlogins/content/components/login-footer.css
browser/components/aboutlogins/content/components/login-footer.js
browser/components/aboutlogins/content/components/menu-button.js
browser/components/aboutlogins/content/third-party/LICENSE
browser/components/aboutlogins/content/third-party/app-store/app_ar.png
browser/components/aboutlogins/content/third-party/app-store/app_az.png
browser/components/aboutlogins/content/third-party/app-store/app_bg.png
browser/components/aboutlogins/content/third-party/app-store/app_cs.png
browser/components/aboutlogins/content/third-party/app-store/app_da.png
browser/components/aboutlogins/content/third-party/app-store/app_de.png
browser/components/aboutlogins/content/third-party/app-store/app_el.png
browser/components/aboutlogins/content/third-party/app-store/app_en.png
browser/components/aboutlogins/content/third-party/app-store/app_es-mx.png
browser/components/aboutlogins/content/third-party/app-store/app_es.png
browser/components/aboutlogins/content/third-party/app-store/app_et.png
browser/components/aboutlogins/content/third-party/app-store/app_fi.png
browser/components/aboutlogins/content/third-party/app-store/app_fr.png
browser/components/aboutlogins/content/third-party/app-store/app_he.png
browser/components/aboutlogins/content/third-party/app-store/app_hu.png
browser/components/aboutlogins/content/third-party/app-store/app_id.png
browser/components/aboutlogins/content/third-party/app-store/app_it.png
browser/components/aboutlogins/content/third-party/app-store/app_ja.png
browser/components/aboutlogins/content/third-party/app-store/app_ko.png
browser/components/aboutlogins/content/third-party/app-store/app_lt.png
browser/components/aboutlogins/content/third-party/app-store/app_lv.png
browser/components/aboutlogins/content/third-party/app-store/app_my.png
browser/components/aboutlogins/content/third-party/app-store/app_nb.png
browser/components/aboutlogins/content/third-party/app-store/app_nl.png
browser/components/aboutlogins/content/third-party/app-store/app_nn.png
browser/components/aboutlogins/content/third-party/app-store/app_pl.png
browser/components/aboutlogins/content/third-party/app-store/app_pt-br.png
browser/components/aboutlogins/content/third-party/app-store/app_pt-pt.png
browser/components/aboutlogins/content/third-party/app-store/app_ro.png
browser/components/aboutlogins/content/third-party/app-store/app_ru.png
browser/components/aboutlogins/content/third-party/app-store/app_si.png
browser/components/aboutlogins/content/third-party/app-store/app_sk.png
browser/components/aboutlogins/content/third-party/app-store/app_sv.png
browser/components/aboutlogins/content/third-party/app-store/app_th.png
browser/components/aboutlogins/content/third-party/app-store/app_tl.png
browser/components/aboutlogins/content/third-party/app-store/app_tr.png
browser/components/aboutlogins/content/third-party/app-store/app_vi.png
browser/components/aboutlogins/content/third-party/app-store/app_zh-hans.png
browser/components/aboutlogins/content/third-party/app-store/app_zh-hant.png
browser/components/aboutlogins/content/third-party/play-store/play_af.png
browser/components/aboutlogins/content/third-party/play-store/play_ar.png
browser/components/aboutlogins/content/third-party/play-store/play_az.png
browser/components/aboutlogins/content/third-party/play-store/play_be.png
browser/components/aboutlogins/content/third-party/play-store/play_bg.png
browser/components/aboutlogins/content/third-party/play-store/play_bn.png
browser/components/aboutlogins/content/third-party/play-store/play_bs.png
browser/components/aboutlogins/content/third-party/play-store/play_ca.png
browser/components/aboutlogins/content/third-party/play-store/play_cs.png
browser/components/aboutlogins/content/third-party/play-store/play_da.png
browser/components/aboutlogins/content/third-party/play-store/play_de.png
browser/components/aboutlogins/content/third-party/play-store/play_el.png
browser/components/aboutlogins/content/third-party/play-store/play_en.png
browser/components/aboutlogins/content/third-party/play-store/play_es.png
browser/components/aboutlogins/content/third-party/play-store/play_et.png
browser/components/aboutlogins/content/third-party/play-store/play_eu.png
browser/components/aboutlogins/content/third-party/play-store/play_fa.png
browser/components/aboutlogins/content/third-party/play-store/play_fr.png
browser/components/aboutlogins/content/third-party/play-store/play_gl.png
browser/components/aboutlogins/content/third-party/play-store/play_gu.png
browser/components/aboutlogins/content/third-party/play-store/play_he.png
browser/components/aboutlogins/content/third-party/play-store/play_hi.png
browser/components/aboutlogins/content/third-party/play-store/play_hr.png
browser/components/aboutlogins/content/third-party/play-store/play_hu.png
browser/components/aboutlogins/content/third-party/play-store/play_hy.png
browser/components/aboutlogins/content/third-party/play-store/play_id.png
browser/components/aboutlogins/content/third-party/play-store/play_is.png
browser/components/aboutlogins/content/third-party/play-store/play_it.png
browser/components/aboutlogins/content/third-party/play-store/play_ja.png
browser/components/aboutlogins/content/third-party/play-store/play_ka.png
browser/components/aboutlogins/content/third-party/play-store/play_kk.png
browser/components/aboutlogins/content/third-party/play-store/play_km.png
browser/components/aboutlogins/content/third-party/play-store/play_kn.png
browser/components/aboutlogins/content/third-party/play-store/play_ko.png
browser/components/aboutlogins/content/third-party/play-store/play_lo.png
browser/components/aboutlogins/content/third-party/play-store/play_lt.png
browser/components/aboutlogins/content/third-party/play-store/play_lv.png
browser/components/aboutlogins/content/third-party/play-store/play_mk.png
browser/components/aboutlogins/content/third-party/play-store/play_mr.png
browser/components/aboutlogins/content/third-party/play-store/play_ms.png
browser/components/aboutlogins/content/third-party/play-store/play_my.png
browser/components/aboutlogins/content/third-party/play-store/play_nb.png
browser/components/aboutlogins/content/third-party/play-store/play_ne.png
browser/components/aboutlogins/content/third-party/play-store/play_nl.png
browser/components/aboutlogins/content/third-party/play-store/play_nn.png
browser/components/aboutlogins/content/third-party/play-store/play_pa.png
browser/components/aboutlogins/content/third-party/play-store/play_pl.png
browser/components/aboutlogins/content/third-party/play-store/play_pt-br.png
browser/components/aboutlogins/content/third-party/play-store/play_pt.png
browser/components/aboutlogins/content/third-party/play-store/play_ro.png
browser/components/aboutlogins/content/third-party/play-store/play_ru.png
browser/components/aboutlogins/content/third-party/play-store/play_si.png
browser/components/aboutlogins/content/third-party/play-store/play_sk.png
browser/components/aboutlogins/content/third-party/play-store/play_sl.png
browser/components/aboutlogins/content/third-party/play-store/play_sq.png
browser/components/aboutlogins/content/third-party/play-store/play_sr.png
browser/components/aboutlogins/content/third-party/play-store/play_sv.png
browser/components/aboutlogins/content/third-party/play-store/play_ta.png
browser/components/aboutlogins/content/third-party/play-store/play_te.png
browser/components/aboutlogins/content/third-party/play-store/play_th.png
browser/components/aboutlogins/content/third-party/play-store/play_tl.png
browser/components/aboutlogins/content/third-party/play-store/play_tr.png
browser/components/aboutlogins/content/third-party/play-store/play_uk.png
browser/components/aboutlogins/content/third-party/play-store/play_ur.png
browser/components/aboutlogins/content/third-party/play-store/play_uz.png
browser/components/aboutlogins/content/third-party/play-store/play_vi.png
browser/components/aboutlogins/content/third-party/play-store/play_zh-cn.png
browser/components/aboutlogins/content/third-party/play-store/play_zh-tw.png
browser/components/aboutlogins/jar.mn
browser/components/aboutlogins/tests/browser/browser.ini
browser/components/aboutlogins/tests/browser/browser_dismissFooter.js
browser/components/aboutlogins/tests/browser/browser_openPreferencesExternal.js
browser/installer/allowed-dupes.mn
browser/locales/en-US/browser/aboutLogins.ftl
testing/mochitest/BrowserTestUtils/ContentTaskUtils.jsm
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1778,26 +1778,21 @@ pref("signon.management.page.breach-aler
 #ifdef NIGHTLY_BUILD
 // Bug 1563330 tracks shipping this by default.
 pref("signon.showAutoCompleteOrigins", true);
 pref("signon.includeOtherSubdomainsInLookup", true);
 #endif
 pref("signon.management.page.faqURL", "https://lockwise.firefox.com/faq.html");
 pref("signon.management.page.feedbackURL",
      "https://www.surveygizmo.com/s3/5036102/Lockwise-feedback?ver=%VERSION%");
-// The utm_creative value is appended within the code (specific to the location on
-// where it is clicked). Be sure that if these two prefs are updated, that
-// the utm_creative param be last. 
-pref("signon.management.page.mobileAndroidURL", "https://app.adjust.com/6tteyjo?redirect=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dmozilla.lockbox&utm_campaign=Desktop&utm_adgroup=InProduct&utm_creative=");
-pref("signon.management.page.mobileAppleURL", "https://app.adjust.com/6tteyjo?redirect=https%3A%2F%2Fitunes.apple.com%2Fapp%2Fid1314000270%3Fmt%3D8&utm_campaign=Desktop&utm_adgroup=InProduct&utm_creative=");
+pref("signon.management.page.mobileAndroidURL", "https://app.adjust.com/6tteyjo?redirect=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dmozilla.lockbox&utm_campaign=Desktop&utm_adgroup=InProduct&utm_creative=Elipsis_Menu");
+pref("signon.management.page.mobileAppleURL", "https://app.adjust.com/6tteyjo?redirect=https%3A%2F%2Fitunes.apple.com%2Fapp%2Fid1314000270%3Fmt%3D8&utm_campaign=Desktop&utm_adgroup=InProduct&utm_creative=Elipsis_Menu");
 pref("signon.management.page.breachAlertUrl",
      "https://monitor.firefox.com/breach-details/");
 
-pref("signon.management.page.hideMobileFooter", false);
-
 // Enable the "Simplify Page" feature in Print Preview. This feature
 // is disabled by default in toolkit.
 pref("print.use_simplify_page", true);
 
 // Space separated list of URLS that are allowed to send objects (instead of
 // only strings) through webchannels. This list is duplicated in mobile/android/app/mobile.js
 pref("webchannel.allowObject.urlWhitelist", "https://content.cdn.mozilla.net https://support.mozilla.org https://install.mozilla.org");
 
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -130,33 +130,31 @@ let LEGACY_ACTORS = {
   AboutLogins: {
     child: {
       matches: ["about:logins", "about:logins?*"],
       module: "resource:///actors/AboutLoginsChild.jsm",
       events: {
         AboutLoginsCopyLoginDetail: { wantUntrusted: true },
         AboutLoginsCreateLogin: { wantUntrusted: true },
         AboutLoginsDeleteLogin: { wantUntrusted: true },
-        AboutLoginsHideFooter: { wantUntrusted: true },
         AboutLoginsImport: { wantUntrusted: true },
         AboutLoginsInit: { wantUntrusted: true },
         AboutLoginsOpenFAQ: { wantUntrusted: true },
         AboutLoginsOpenFeedback: { wantUntrusted: true },
         AboutLoginsOpenMobileAndroid: { wantUntrusted: true },
         AboutLoginsOpenMobileIos: { wantUntrusted: true },
         AboutLoginsOpenPreferences: { wantUntrusted: true },
         AboutLoginsOpenSite: { wantUntrusted: true },
         AboutLoginsRecordTelemetryEvent: { wantUntrusted: true },
         AboutLoginsSyncEnable: { wantUntrusted: true },
         AboutLoginsSyncOptions: { wantUntrusted: true },
         AboutLoginsUpdateLogin: { wantUntrusted: true },
       },
       messages: [
         "AboutLogins:AllLogins",
-        "AboutLogins:LocalizeBadges",
         "AboutLogins:LoginAdded",
         "AboutLogins:LoginModified",
         "AboutLogins:LoginRemoved",
         "AboutLogins:MasterPasswordResponse",
         "AboutLogins:SendFavicons",
         "AboutLogins:SyncState",
         "AboutLogins:UpdateBreaches",
       ],
@@ -633,17 +631,16 @@ const listeners = {
 
     "webrtc:UpdateGlobalIndicators": ["webrtcUI"],
     "webrtc:UpdatingIndicators": ["webrtcUI"],
   },
 
   mm: {
     "AboutLogins:CreateLogin": ["AboutLoginsParent"],
     "AboutLogins:DeleteLogin": ["AboutLoginsParent"],
-    "AboutLogins:HideFooter": ["AboutLoginsParent"],
     "AboutLogins:Import": ["AboutLoginsParent"],
     "AboutLogins:MasterPasswordRequest": ["AboutLoginsParent"],
     "AboutLogins:OpenFAQ": ["AboutLoginsParent"],
     "AboutLogins:OpenFeedback": ["AboutLoginsParent"],
     "AboutLogins:OpenPreferences": ["AboutLoginsParent"],
     "AboutLogins:OpenMobileAndroid": ["AboutLoginsParent"],
     "AboutLogins:OpenMobileIos": ["AboutLoginsParent"],
     "AboutLogins:OpenSite": ["AboutLoginsParent"],
--- a/browser/components/aboutlogins/AboutLoginsChild.jsm
+++ b/browser/components/aboutlogins/AboutLoginsChild.jsm
@@ -29,18 +29,16 @@ XPCOMUtils.defineLazyServiceGetter(
   "@mozilla.org/widget/clipboardhelper;1",
   "nsIClipboardHelper"
 );
 
 const TELEMETRY_EVENT_CATEGORY = "pwmgr";
 
 let masterPasswordPromise;
 
-const HIDE_MOBILE_FOOTER_PREF = "signon.management.page.hideMobileFooter";
-
 class AboutLoginsChild extends ActorChild {
   handleEvent(event) {
     switch (event.type) {
       case "AboutLoginsInit": {
         let messageManager = this.mm;
         messageManager.sendAsyncMessage("AboutLogins:Subscribe");
 
         let documentElement = this.content.document.documentElement;
@@ -69,20 +67,16 @@ class AboutLoginsChild extends ActorChil
         };
         waivedContent.AboutLoginsUtils = Cu.cloneInto(
           AboutLoginsUtils,
           waivedContent,
           {
             cloneFunctions: true,
           }
         );
-        this.sendToContent("InitialInfo", {
-          hideMobileFooter: Services.prefs.getBoolPref(HIDE_MOBILE_FOOTER_PREF),
-          appLocales: Services.locale.appLocalesAsBCP47,
-        });
         break;
       }
       case "AboutLoginsCopyLoginDetail": {
         ClipboardHelper.copyString(event.detail);
         break;
       }
       case "AboutLoginsCreateLogin": {
         this.mm.sendAsyncMessage("AboutLogins:CreateLogin", {
@@ -91,38 +85,30 @@ class AboutLoginsChild extends ActorChil
         break;
       }
       case "AboutLoginsDeleteLogin": {
         this.mm.sendAsyncMessage("AboutLogins:DeleteLogin", {
           login: event.detail,
         });
         break;
       }
-      case "AboutLoginsHideFooter": {
-        this.mm.sendAsyncMessage("AboutLogins:HideFooter");
-        break;
-      }
       case "AboutLoginsImport": {
         this.mm.sendAsyncMessage("AboutLogins:Import");
         break;
       }
       case "AboutLoginsOpenFAQ": {
         this.mm.sendAsyncMessage("AboutLogins:OpenFAQ");
         break;
       }
       case "AboutLoginsOpenMobileAndroid": {
-        this.mm.sendAsyncMessage("AboutLogins:OpenMobileAndroid", {
-          source: event.detail,
-        });
+        this.mm.sendAsyncMessage("AboutLogins:OpenMobileAndroid");
         break;
       }
       case "AboutLoginsOpenMobileIos": {
-        this.mm.sendAsyncMessage("AboutLogins:OpenMobileIos", {
-          source: event.detail,
-        });
+        this.mm.sendAsyncMessage("AboutLogins:OpenMobileIos");
         break;
       }
       case "AboutLoginsOpenFeedback": {
         this.mm.sendAsyncMessage("AboutLogins:OpenFeedback");
         break;
       }
       case "AboutLoginsOpenPreferences": {
         this.mm.sendAsyncMessage("AboutLogins:OpenPreferences");
@@ -166,19 +152,16 @@ class AboutLoginsChild extends ActorChil
     }
   }
 
   receiveMessage(message) {
     switch (message.name) {
       case "AboutLogins:AllLogins":
         this.sendToContent("AllLogins", message.data);
         break;
-      case "AboutLogins:LocalizeBadges":
-        this.sendToContent("LocalizeBadges", message.data);
-        break;
       case "AboutLogins:LoginAdded":
         this.sendToContent("LoginAdded", message.data);
         break;
       case "AboutLogins:LoginModified":
         this.sendToContent("LoginModified", message.data);
         break;
       case "AboutLogins:LoginRemoved":
         this.sendToContent("LoginRemoved", message.data);
--- a/browser/components/aboutlogins/AboutLoginsParent.jsm
+++ b/browser/components/aboutlogins/AboutLoginsParent.jsm
@@ -50,18 +50,16 @@ XPCOMUtils.defineLazyPreferenceGetter(
   "signon.management.page.breach-alerts.enabled",
   false
 );
 
 const ABOUT_LOGINS_ORIGIN = "about:logins";
 const MASTER_PASSWORD_NOTIFICATION_ID = "master-password-login-required";
 const PASSWORD_SYNC_NOTIFICATION_ID = "enable-password-sync";
 
-const HIDE_MOBILE_FOOTER_PREF = "signon.management.page.hideMobileFooter";
-
 // about:logins will always use the privileged content process,
 // even if it is disabled for other consumers such as about:newtab.
 const EXPECTED_ABOUTLOGINS_REMOTE_TYPE = E10SUtils.PRIVILEGEDABOUT_REMOTE_TYPE;
 
 const convertSubjectToLogin = subject => {
   subject.QueryInterface(Ci.nsILoginMetaInfo).QueryInterface(Ci.nsILoginInfo);
   const login = LoginHelper.loginToVanillaObject(subject);
   if (!LoginHelper.isUserFacingLogin(login)) {
@@ -120,20 +118,16 @@ var AboutLoginsParent = {
         Services.logins.addLogin(LoginHelper.vanillaObjectToLogin(newLogin));
         break;
       }
       case "AboutLogins:DeleteLogin": {
         let login = LoginHelper.vanillaObjectToLogin(message.data.login);
         Services.logins.removeLogin(login);
         break;
       }
-      case "AboutLogins:HideFooter": {
-        Services.prefs.setBoolPref(HIDE_MOBILE_FOOTER_PREF, true);
-        break;
-      }
       case "AboutLogins:SyncEnable": {
         message.target.ownerGlobal.gSync.openFxAEmailFirstPage(
           "password-manager"
         );
         break;
       }
       case "AboutLogins:SyncOptions": {
         message.target.ownerGlobal.gSync.openFxAManagePage("password-manager");
@@ -165,33 +159,29 @@ var AboutLoginsParent = {
         message.target.ownerGlobal.openWebLinkIn(FAQ_URL, "tab", {
           relatedToCurrent: true,
         });
         break;
       }
       case "AboutLogins:OpenMobileAndroid": {
         const MOBILE_ANDROID_URL_PREF =
           "signon.management.page.mobileAndroidURL";
-        const linkTrackingSource = message.data.source;
-        let MOBILE_ANDROID_URL = Services.prefs.getStringPref(
+        const MOBILE_ANDROID_URL = Services.prefs.getStringPref(
           MOBILE_ANDROID_URL_PREF
         );
-        // Append the `utm_creative` query parameter value:
-        MOBILE_ANDROID_URL += linkTrackingSource;
         message.target.ownerGlobal.openWebLinkIn(MOBILE_ANDROID_URL, "tab", {
           relatedToCurrent: true,
         });
         break;
       }
       case "AboutLogins:OpenMobileIos": {
         const MOBILE_IOS_URL_PREF = "signon.management.page.mobileAppleURL";
-        const linkTrackingSource = message.data.source;
-        let MOBILE_IOS_URL = Services.prefs.getStringPref(MOBILE_IOS_URL_PREF);
-        // Append the `utm_creative` query parameter value:
-        MOBILE_IOS_URL += linkTrackingSource;
+        const MOBILE_IOS_URL = Services.prefs.getStringPref(
+          MOBILE_IOS_URL_PREF
+        );
         message.target.ownerGlobal.openWebLinkIn(MOBILE_IOS_URL, "tab", {
           relatedToCurrent: true,
         });
         break;
       }
       case "AboutLogins:OpenPreferences": {
         message.target.ownerGlobal.openPreferences("privacy-logins");
         break;
@@ -273,157 +263,16 @@ var AboutLoginsParent = {
         const logins = await this.getAllLogins();
         try {
           messageManager.sendAsyncMessage("AboutLogins:AllLogins", logins);
 
           let syncState = this.getSyncState();
           messageManager.sendAsyncMessage("AboutLogins:SyncState", syncState);
           this.updatePasswordSyncNotificationState();
 
-          // App store badges sourced from https://developer.apple.com/app-store/marketing/guidelines/#section-badges.
-          // This array mirrors the file names from the App store directory (./content/third-party/app-store)
-          const appStoreLocales = [
-            "az",
-            "ar",
-            "bg",
-            "cs",
-            "da",
-            "de",
-            "el",
-            "en",
-            "es-mx",
-            "es",
-            "et",
-            "fi",
-            "fr",
-            "he",
-            "hu",
-            "id",
-            "it",
-            "ja",
-            "ko",
-            "lt",
-            "lv",
-            "my",
-            "nb",
-            "nl",
-            "nn",
-            "pl",
-            "pt-br",
-            "pt-pt",
-            "ro",
-            "ru",
-            "si",
-            "sk",
-            "sv",
-            "th",
-            "tl",
-            "tr",
-            "vi",
-            "zh-hans",
-            "zh-hant",
-          ];
-
-          // Google play badges sourced from https://play.google.com/intl/en_us/badges/
-          // This array mirrors the file names from the play store directory (./content/third-party/play-store)
-          const playStoreLocales = [
-            "af",
-            "ar",
-            "az",
-            "be",
-            "bg",
-            "bn",
-            "bs",
-            "ca",
-            "cs",
-            "da",
-            "de",
-            "el",
-            "en",
-            "es",
-            "et",
-            "eu",
-            "fa",
-            "fr",
-            "gl",
-            "gu",
-            "he",
-            "hi",
-            "hr",
-            "hu",
-            "hy",
-            "id",
-            "is",
-            "it",
-            "ja",
-            "ka",
-            "kk",
-            "km",
-            "kn",
-            "ko",
-            "lo",
-            "lt",
-            "lv",
-            "mk",
-            "mr",
-            "ms",
-            "my",
-            "nb",
-            "ne",
-            "nl",
-            "nn",
-            "pa",
-            "pl",
-            "pt-br",
-            "pt",
-            "ro",
-            "ru",
-            "si",
-            "sk",
-            "sl",
-            "sq",
-            "sr",
-            "sv",
-            "ta",
-            "te",
-            "th",
-            "tl",
-            "tr",
-            "uk",
-            "ur",
-            "uz",
-            "vi",
-            "zh-cn",
-            "zh-tw",
-          ];
-
-          const playStoreBadgeLanguage = Services.locale.negotiateLanguages(
-            Services.locale.appLocalesAsBCP47,
-            playStoreLocales,
-            "en-US",
-            Services.locale.langNegStrategyLookup
-          );
-
-          const appStoreBadgeLanguage = Services.locale.negotiateLanguages(
-            Services.locale.appLocalesAsBCP47,
-            appStoreLocales,
-            "en-US",
-            Services.locale.langNegStrategyLookup
-          );
-
-          const selectedBadgeLanguages = {
-            appStoreBadge: appStoreBadgeLanguage,
-            playStoreBadge: playStoreBadgeLanguage,
-          };
-
-          messageManager.sendAsyncMessage(
-            "AboutLogins:LocalizeBadges",
-            selectedBadgeLanguages
-          );
-
           if (BREACH_ALERTS_ENABLED) {
             const breachesByLoginGUID = await LoginHelper.getBreachesForLogins(
               logins
             );
             messageManager.sendAsyncMessage(
               "AboutLogins:UpdateBreaches",
               breachesByLoginGUID
             );
--- a/browser/components/aboutlogins/content/aboutLogins.css
+++ b/browser/components/aboutlogins/content/aboutLogins.css
@@ -46,20 +46,16 @@ login-intro,
 login-item {
   grid-area: login;
 }
 
 login-item {
   max-width: 800px;
 }
 
-login-footer {
-  grid-area: login;
-}
-
 #branding-logo {
   height: 32px;
   margin-inline-end: 18px;
   -moz-context-properties: fill;
   fill: #20123a;
 }
 
 @supports -moz-bool-pref("browser.in-content.dark-mode") {
--- a/browser/components/aboutlogins/content/aboutLogins.html
+++ b/browser/components/aboutlogins/content/aboutLogins.html
@@ -11,17 +11,16 @@
     <link rel="localization" href="branding/brand.ftl">
     <link rel="localization" href="browser/branding/sync-brand.ftl">
     <link rel="localization" href="browser/branding/brandings.ftl">
     <link rel="localization" href="browser/aboutLogins.ftl">
     <script type="module" src="chrome://browser/content/aboutlogins/components/confirmation-dialog.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/fxaccounts-button.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/login-filter.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/login-intro.js"></script>
-    <script type="module" src="chrome://browser/content/aboutlogins/components/login-footer.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/login-item.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/login-list.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/login-list-item.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/components/menu-button.js"></script>
     <script type="module" src="chrome://browser/content/aboutlogins/aboutLogins.js"></script>
     <link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
     <link rel="stylesheet" href="chrome://browser/content/aboutlogins/aboutLogins.css">
     <link rel="stylesheet" href="chrome://browser/content/aboutlogins/common.css">
@@ -32,17 +31,16 @@
       <img id="branding-logo" src="chrome://branding/content/aboutlogins.svg" alt=""/>
       <login-filter></login-filter>
       <fxaccounts-button></fxaccounts-button>
       <menu-button></menu-button>
     </header>
     <login-list></login-list>
     <login-item></login-item>
     <login-intro></login-intro>
-    <login-footer hidden></login-footer>
     <confirmation-dialog hidden></confirmation-dialog>
 
     <template id="confirmation-dialog-template">
       <link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
       <link rel="stylesheet" href="chrome://browser/content/aboutlogins/common.css">
       <link rel="stylesheet" href="chrome://browser/content/aboutlogins/components/confirmation-dialog.css">
       <div class="overlay">
         <div class="container" role="dialog" aria-labelledby="title" aria-describedby="message">
@@ -210,30 +208,10 @@
         <hr role="separator" class="menuitem-separator"></hr>
         <button role="menuitem" class="menuitem-button menuitem-feedback ghost-button" data-event-name="AboutLoginsOpenFeedback" data-l10n-id="menu-menuitem-feedback"></button>
         <button role="menuitem" class="menuitem-button menuitem-faq ghost-button" data-event-name="AboutLoginsOpenFAQ" data-l10n-id="menu-menuitem-faq"></button>
         <hr role="separator" class="menuitem-separator"></hr>
         <button role="menuitem" class="menuitem-button menuitem-mobile menuitem-mobile-android ghost-button" data-event-name="AboutLoginsOpenMobileAndroid" data-l10n-id="menu-menuitem-android-app"></button>
         <button role="menuitem" class="menuitem-button menuitem-mobile menuitem-mobile-ios ghost-button" data-event-name="AboutLoginsOpenMobileIos" data-l10n-id="menu-menuitem-iphone-app"></button>
       </ul>
     </template>
-
-    <template id="login-footer-template">
-      <link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
-      <link rel="stylesheet" href="chrome://browser/content/aboutlogins/components/login-footer.css">
-      <footer>
-        <div class="footer-content message-bar">
-          <span class="close" data-event-name="AboutLoginsHideFooter"></span>
-          <p>
-            <strong data-l10n-id="login-app-promo-title"></strong><br>
-            <span data-l10n-id="login-app-promo-subtitle"></span>
-          </p>
-          <button class="app-store">
-            <img class="image-app-store" data-event-name="AboutLoginsOpenMobileIos" data-l10n-id="login-app-promo-apple" src="" alt=""/>
-          </button>
-          <button class="play-store" >
-            <img class="image-play-store" data-event-name="AboutLoginsOpenMobileAndroid" data-l10n-id="login-app-promo-android" src="" alt=""/>
-          </button>
-        </div>
-      </footer>
-    </template>
   </body>
 </html>
--- a/browser/components/aboutlogins/content/aboutLogins.js
+++ b/browser/components/aboutlogins/content/aboutLogins.js
@@ -5,49 +5,41 @@
 // The init code isn't wrapped in a DOMContentLoaded/load event listener so the
 // page works properly when restored from session restore.
 const gElements = {
   fxAccountsButton: document.querySelector("fxaccounts-button"),
   loginList: document.querySelector("login-list"),
   loginIntro: document.querySelector("login-intro"),
   loginItem: document.querySelector("login-item"),
   loginFilter: document.querySelector("login-filter"),
-  loginFooter: document.querySelector("login-footer"),
 };
-
 let numberOfLogins = 0;
 
 let { searchParams } = new URL(document.location);
 if (searchParams.get("filter")) {
   gElements.loginFilter.value = searchParams.get("filter");
 }
 
+document.dispatchEvent(new CustomEvent("AboutLoginsInit", { bubbles: true }));
+
 gElements.loginFilter.focus();
 
 function updateNoLogins() {
   document.documentElement.classList.toggle("no-logins", numberOfLogins == 0);
   gElements.loginList.classList.toggle("no-logins", numberOfLogins == 0);
 }
 
 window.addEventListener("AboutLoginsChromeToContent", event => {
   switch (event.detail.messageType) {
     case "AllLogins": {
       gElements.loginList.setLogins(event.detail.value);
       numberOfLogins = event.detail.value.length;
       updateNoLogins();
       break;
     }
-    case "InitialInfo": {
-      gElements.loginFooter.hidden = event.detail.value.hideMobileFooter;
-      break;
-    }
-    case "LocalizeBadges": {
-      gElements.loginFooter.showStoreIconsForLocales(event.detail.value);
-      break;
-    }
     case "LoginAdded": {
       gElements.loginList.loginAdded(event.detail.value);
       gElements.loginItem.loginAdded(event.detail.value);
       numberOfLogins++;
       updateNoLogins();
       break;
     }
     case "LoginModified": {
@@ -72,10 +64,8 @@ window.addEventListener("AboutLoginsChro
     }
     case "UpdateBreaches": {
       gElements.loginList.updateBreaches(event.detail.value);
       gElements.loginItem.updateBreaches(event.detail.value);
       break;
     }
   }
 });
-
-document.dispatchEvent(new CustomEvent("AboutLoginsInit", { bubbles: true }));
deleted file mode 100644
--- a/browser/components/aboutlogins/content/components/login-footer.css
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 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/. */
-
-footer {
-  display: flex;
-  flex-flow: row nowrap;
-  align-items: center;
-  position: absolute;
-  margin-inline-start: 40px;
-  bottom: 40px;
-}
-
-.footer-content {
-  background-color: var(--in-content-box-background);
-  box-shadow: var(--shadow-10);
-  max-width: 700px;
-  position: relative;
-  display: flex;
-  flex-flow: row nowrap;
-  align-items: center;
-  padding-inline-start: 40px;
-  padding-inline-end: 80px;
-}
-
-.footer-content > p {
-  font-size: 15px;
-  margin: 0;
-  line-height: 1.5;
-  padding-inline-end: 40px;
-}
-
-.footer-content button {
-  background-color: transparent;
-  padding: 0;
-}
-
-.footer-content button:hover {
-  cursor: pointer;
-  background-color: transparent;
-}
-
-.footer-content button img {
-  width: auto;
-  height: 40px;
-  display: block;
-}
-
-.footer-content button + button img {
-  height: 60px;
-}
-
-.footer-content .close {
-  -moz-context-properties: fill, fill-opacity;
-  background-image: url("chrome://global/skin/icons/close.svg");
-  background-repeat: no-repeat;
-  background-position: center;
-  cursor: pointer;
-  display: block;
-  fill: currentColor;
-  fill-opacity: 0;
-  height: 16px;
-  position: absolute;
-  inset-inline-end: 12px;
-  top: 12px;
-  width: 16px;
-}
deleted file mode 100644
--- a/browser/components/aboutlogins/content/components/login-footer.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/* 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/. */
-
-export default class LoginFooter extends HTMLElement {
-  connectedCallback() {
-    if (this.shadowRoot) {
-      return;
-    }
-
-    let LoginFooterTemplate = document.querySelector("#login-footer-template");
-    let shadowRoot = this.attachShadow({ mode: "open" });
-    document.l10n.connectRoot(shadowRoot);
-    shadowRoot.appendChild(LoginFooterTemplate.content.cloneNode(true));
-
-    this.shadowRoot.querySelector(".app-store").addEventListener("click", this);
-    this.shadowRoot
-      .querySelector(".play-store")
-      .addEventListener("click", this);
-    this.shadowRoot.querySelector(".close").addEventListener("click", this);
-    this._imageAppStore = shadowRoot.querySelector(".image-app-store");
-    this._imagePlayStore = shadowRoot.querySelector(".image-play-store");
-  }
-
-  handleEvent(event) {
-    switch (event.type) {
-      case "click": {
-        let classList = event.originalTarget.classList;
-
-        if (
-          classList.contains("image-play-store") ||
-          classList.contains("image-app-store") ||
-          classList.contains("close")
-        ) {
-          let eventName = event.originalTarget.dataset.eventName;
-          const linkTrackingSource = "Footer_Menu";
-          document.dispatchEvent(
-            new CustomEvent(eventName, {
-              bubbles: true,
-              detail: linkTrackingSource,
-            })
-          );
-
-          if (classList.contains("close")) {
-            this.shadowRoot.host.hidden = true;
-          }
-        }
-        break;
-      }
-    }
-  }
-
-  _setAppStoreImage(lang) {
-    const currLang = lang.toLowerCase();
-    let appStoreLink =
-      "chrome://browser/content/aboutlogins/third-party/app-store/app_" +
-      currLang +
-      ".png";
-    this._imageAppStore.setAttribute("src", appStoreLink);
-  }
-
-  _setPlayStoreImage(lang) {
-    const currLang = lang.toLowerCase();
-    let playStoreLink =
-      "chrome://browser/content/aboutlogins/third-party/play-store/play_" +
-      currLang +
-      ".png";
-    this._imagePlayStore.setAttribute("src", playStoreLink);
-  }
-
-  showStoreIconsForLocales(appLocales) {
-    this._setAppStoreImage(appLocales.appStoreBadge[0]);
-    this._setPlayStoreImage(appLocales.playStoreBadge[0]);
-  }
-}
-customElements.define("login-footer", LoginFooter);
--- a/browser/components/aboutlogins/content/components/menu-button.js
+++ b/browser/components/aboutlogins/content/components/menu-button.js
@@ -62,21 +62,19 @@ export default class MenuButton extends 
             this._menuButton.focus();
           }
           return;
         }
 
         let classList = event.originalTarget.classList;
         if (classList.contains("menuitem-button")) {
           let eventName = event.originalTarget.dataset.eventName;
-          const linkTrackingSource = "Elipsis_Menu";
           document.dispatchEvent(
             new CustomEvent(eventName, {
               bubbles: true,
-              detail: linkTrackingSource,
             })
           );
         }
         this._hideMenu();
         break;
       }
       case "keydown": {
         this._handleKeyDown(event);
deleted file mode 100644
--- a/browser/components/aboutlogins/content/third-party/LICENSE
+++ /dev/null
@@ -1,2 +0,0 @@
-// The image files in this folder are trademarks of Google and Apple.
-// Google and Apple's trademark policies govern their use.
deleted file mode 100644
index f5dcd4965af469f82ffbf48663e1af0528eb61ae..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 277247c5b13f5efa0e08452b61958804ce84c52c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ceca3eaa817f0305d4bc5fc8eda8b7de06bc65de..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6e2c919c9ad79534fa205176d58b367777dc4e39..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f952d3af6adef037659802cfdb9bb049152f8c03..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 55af9c54f7e5dae31c2233570e6fa51735f18e93..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0e5dc5e564622a53480beb460a476785476c9aa9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index d1350e6e7365d05cbde865c76dbdeb67da5d3772..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e75d694460ab1bededab15c7fd683f4e5a8b250d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1fc9378532f535351b34205283943b84f26dc9b8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 91ed4813606d94210589fc682cb170cfbdb3340f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a92138a1ff4e0155db5a625415d514e1fdc02513..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index bb91baf4db1ddeb5e0a41ae42a17eb10b40b50f7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 91316bff0a6d9c55a90f43d592b993a353ba1cd6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index bd0fefdd72b8ca6524da48159f9827b204ff0827..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 28a435b297ebc4cc0b02d5103b2d5996543072ba..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 68ff97cabc5ba1327f1038cbb251b25f9c6fa677..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e58b1c6747262a9ca3305421acb47458b1db2d15..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 16cb8bfe4a89f59bd39cbd80765a2daa8112ca07..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index af07ac1b6871eeec88936f3fc1866695f7f1b3b8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index efc8cd773b97d033b8393770febc1b18d5192455..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a1f8eb2c0d94f7f6ff423fe16526e2ff56ff4ba6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c295cff79a0988660ed3a6902aba160cd276f072..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6a8de99df448ae822abf0aad48459f1fd76b9328..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c295cff79a0988660ed3a6902aba160cd276f072..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a729b7ceab1fd2f8265b50e18df64476b49f1fe8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f758a7ac2cc558495cb238f75c42d9405450ea83..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b71e6e2c94d409fd6b3ee428896ef17e6fa336fd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index adbccd224e10ddc742e63adcb2cf86d8d35efc0b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index acb08b0dfb16f5fb08a48f2fadbdfa3dbd9fb2d2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6e905349e961f78d00a9c6ec36fb4a1552a0f2f5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 3cb90821e2aba9a6a0cb747bdd9d4bf8ee585d0f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 20b0829185c2256c9a302ca5d4bd40800cc91197..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7ef79146b76d3c18f4409f4764ac084e897241ef..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 3ba5dafa1b002c8c4f0416d27eba444dcc82488f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e49e185fe65e35a175ea2a2d6b618bce9d886d29..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b4330e847f52f15dcdd1d776e55baad26bf15428..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a41967e859f947cf3507169584461dad6704e9da..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 4635231c7a23f57c682971ab8bff0b1c2d09b2f9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 9dbb70b3aebe830757ae9855a0fa0e064c08fff1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a2e777fb37cda6b33b10bfebb6064e6ae4a16f28..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index df0bad9149ef084a77111a132f4aefc1e6bbc966..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 8d56b8a1e23117de6b4e8b262c0a3c1d76d31dd5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ccd59950e722fc1f78a17e2de17d853bc6449623..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 14b0b92ae7ad2baad9aa02ca96ba30c024d49743..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7d79a8393844daf723ccfc7ca5d8c9f6a13944de..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index bbff41f5c12bca2e52798e1527b92df5500ab2d1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0fadff07dee5224a5cb4e31b6c10c978ecc73994..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6a564aa52bff67f79f1fd622434b80decd95c754..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0e9af62986f0e4436c8db7805f72d1cdc1015855..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e5fa74dd0e4fa0582a6fba9bfccfa930342eb5bd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b9f69c49197c0c94ad5cdc01a3c04da0b094e890..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6d2d5f65ccc6c344a756d9685fee14451827b89a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c2563b0940b5ad1f96c21b54fc77c518c2da38d0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index d039d97ab1fc4bf4158c7b329b0c4f4a832da190..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b3f934f9db01d41c75fdf6ca8e639284e4e6f038..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0cdcc6ed5cb96b4544a26fcdfcff83b2eefe1910..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1dbed6cbe2f603fd24ea0e14d309286d20ac95e9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 75bcdf0918ff58e4f912e766ec7230d8df8927ef..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 72072308907f0926ce49a9ccf7fbee16e83d279b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 58ec04ef9fa54c5133c023827fba5c752d1a0209..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 3f7499dbfadee946e603b8c89f032de403311275..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f8cc979037e5bb24f911d1519514121b08d42168..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0fd0496cc718d0dd83339a91abb6436b65c4e688..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 230219c881a73828a6ea3351075f26ca513c695c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e5c00a9c94a098cebc8e15edcd823edaf2bbd164..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ccc51396b02440322079b45ad06b4bb22281d9f1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e34f5161037af9ce5f27c4733f6ea484f3a39973..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 612d25922870bde65922181b661de49863f2ee4b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 81761fdf01175bf4a165f8e273f159333ec73e25..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f4c66597777d6b25e19e2027d3bd0a4de6c69312..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 443143da0b1738bf9c535b89d7dc9697b49ed7f6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b3c138144dccf8a5f73657d6ee5512ec8ba288b1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2b33c6d520d37362305256e84960e8afece4c894..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 421652bc64e824f26e4dc018ee7b5df833c65d29..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 57da125245b4d451608e27c3679e140dfbbc7377..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 234f24ac9bd6ed9cddffcd484f82b263c7c48993..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index de57f97b221f649920d55429e7c6c07d02e70886..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2134e152c48d4b8ddd0c9347561462398b494d12..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c210b5040d9ea3e7a48c640b6794dc2312bac38f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b0d547c865d6ce19b6847778b5b2e4895e8638d9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1a7e26563541cc8cf451a5858f04e5d58ae4bea6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 91cce1a39647e76536e00f0ed916953cd6e4fb9d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b0d547c865d6ce19b6847778b5b2e4895e8638d9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b1c4f734abdafab3a5608312d4fc550987adef34..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 265f1a42eea16a47eb6ab4df5e751c5d7969bc45..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index d7532f20b3cfb8de74182f291cd1ce457ed0850d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 776a41b85704afc24186d276c44af1f75b9cf9bb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b696de06662a1cfa23604860a84c6b75c38fe303..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e3f8541864a67dffe683b6f52d1e7a7e491633fb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f3c74fa1d2dad3ce78efcf31a6843a07cde701b1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 794c291455c622efefb4ceb7b8e7c2d53dde72ab..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7376bf61881fa8e47ea1b06e87653ad74fe30780..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index dbdc1a12c35e61f02ba46970ee92938b6337b806..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 98ca1cc97d192e1e25d85f5ca929aac6b9997df9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a92cffc4f4ffac61ac5eda5db6a46359373f0119..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e61a1d4f4a02337231dce4c6cbb96d0e51508994..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a057942321a6a161f17cad0305d85042969270b1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2f38d21f72810b141f59d853449457c419b922f4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 5c34760aa928bb255cfcd7f1a1a7732c452cfaae..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 60e5fa394c5dd7388c814562d6411ee14fa65322..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e2608d8696b84e5b241baa96c6081c5700284d36..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 5426bfe9561604190967dcd2a11be172bb05e7e3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index bdd340a5e8a92712c2d460661b266f8bb2948a67..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7871467a4ce0e0d47176d6f4c729c1792705f3b8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f3e23c4ce787b99f0c8e05ec8785d7c306700a97..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 5830bf86347ad7cf39b9fc261c9f5ecf7d9a7afb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/components/aboutlogins/jar.mn
+++ b/browser/components/aboutlogins/jar.mn
@@ -1,34 +1,31 @@
 # 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/.
 
 browser.jar:
-  content/browser/aboutlogins/third-party/app-store/   (content/third-party/app-store/*.png)
-  content/browser/aboutlogins/third-party/play-store/  (content/third-party/play-store/*.png)
   content/browser/aboutlogins/components/confirmation-dialog.css      (content/components/confirmation-dialog.css)
   content/browser/aboutlogins/components/confirmation-dialog.js       (content/components/confirmation-dialog.js)
   content/browser/aboutlogins/components/fxaccounts-button.css (content/components/fxaccounts-button.css)
   content/browser/aboutlogins/components/fxaccounts-button.js  (content/components/fxaccounts-button.js)
   content/browser/aboutlogins/components/login-filter.css      (content/components/login-filter.css)
   content/browser/aboutlogins/components/login-filter.js       (content/components/login-filter.js)
   content/browser/aboutlogins/components/login-intro.css       (content/components/login-intro.css)
   content/browser/aboutlogins/components/login-intro.js        (content/components/login-intro.js)
-  content/browser/aboutlogins/components/login-footer.css      (content/components/login-footer.css)
-  content/browser/aboutlogins/components/login-footer.js       (content/components/login-footer.js)
   content/browser/aboutlogins/components/login-item.css        (content/components/login-item.css)
   content/browser/aboutlogins/components/login-item.js         (content/components/login-item.js)
   content/browser/aboutlogins/components/login-list.css        (content/components/login-list.css)
   content/browser/aboutlogins/components/login-list.js         (content/components/login-list.js)
   content/browser/aboutlogins/components/login-list-item.js    (content/components/login-list-item.js)
   content/browser/aboutlogins/components/menu-button.css       (content/components/menu-button.css)
   content/browser/aboutlogins/components/menu-button.js        (content/components/menu-button.js)
   content/browser/aboutlogins/icons/delete.svg        (content/icons/delete.svg)
   content/browser/aboutlogins/icons/edit.svg          (content/icons/edit.svg)
+  content/browser/aboutlogins/icons/favicon.svg       (content/icons/favicon.svg)
   content/browser/aboutlogins/icons/hide-password.svg (content/icons/hide-password.svg)
   content/browser/aboutlogins/icons/show-password.svg (content/icons/show-password.svg)
   content/browser/aboutlogins/icons/intro-illustration.svg (content/icons/intro-illustration.svg)
   content/browser/aboutlogins/aboutLogins.css   (content/aboutLogins.css)
   content/browser/aboutlogins/aboutLogins.js    (content/aboutLogins.js)
   content/browser/aboutlogins/aboutLogins.html  (content/aboutLogins.html)
   content/browser/aboutlogins/aboutLoginsUtils.js (content/aboutLoginsUtils.js)
   content/browser/aboutlogins/common.css        (content/common.css)
--- a/browser/components/aboutlogins/tests/browser/browser.ini
+++ b/browser/components/aboutlogins/tests/browser/browser.ini
@@ -7,17 +7,16 @@ support-files =
 # Run first so content events from previous tests won't trickle in.
 # Skip ASAN and debug since waiting for content events is already slow.
 [browser_aaa_eventTelemetry_run_first.js]
 skip-if = asan || debug
 [browser_confirmDeleteDialog.js]
 [browser_copyToClipboardButton.js]
 [browser_createLogin.js]
 [browser_deleteLogin.js]
-[browser_dismissFooter.js]
 [browser_fxAccounts.js]
 [browser_loginListChanges.js]
 [browser_masterPassword.js]
 skip-if = (os == 'linux') # bug 1569789
 [browser_noLoginsView.js]
 [browser_openFiltered.js]
 [browser_openImport.js]
 skip-if = (os != "win") # import is only available on Windows
deleted file mode 100644
--- a/browser/components/aboutlogins/tests/browser/browser_dismissFooter.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-add_task(async function setup() {
-  await BrowserTestUtils.openNewForegroundTab({
-    gBrowser,
-    url: "about:logins",
-  });
-  registerCleanupFunction(() => {
-    BrowserTestUtils.removeTab(gBrowser.selectedTab);
-  });
-});
-
-add_task(async function test_open_links() {
-  // urlFinal is what the full link should be. urlBase is what gets Footer_Menu
-  // appended to it.
-  const linkArray = [
-    {
-      urlFinal: "https://example.com/android?utm_creative=Footer_Menu",
-      urlBase: "https://example.com/android?utm_creative=",
-      pref: "signon.management.page.mobileAndroidURL",
-      selector: ".image-play-store",
-    },
-    {
-      urlFinal: "https://example.com/apple?utm_creative=Footer_Menu",
-      urlBase: "https://example.com/apple?utm_creative=",
-      pref: "signon.management.page.mobileAppleURL",
-      selector: ".image-app-store",
-    },
-  ];
-
-  for (const { urlFinal, urlBase, pref, selector } of linkArray) {
-    info("Test on " + urlFinal);
-
-    await SpecialPowers.pushPrefEnv({
-      set: [[pref, urlBase]],
-    });
-
-    let promiseNewTab = BrowserTestUtils.waitForNewTab(gBrowser, urlFinal);
-    let browser = gBrowser.selectedBrowser;
-
-    await ContentTask.spawn(browser, selector, async buttonClass => {
-      let footer = Cu.waiveXrays(
-        content.document.querySelector("login-footer")
-      );
-      ok(ContentTaskUtils.is_visible(footer), "Footer is visible");
-      let button = footer.shadowRoot.querySelector(buttonClass);
-
-      button.click();
-    });
-
-    info("waiting for new tab to get opened");
-    let newTab = await promiseNewTab;
-    ok(true, "New tab opened to " + urlFinal);
-
-    BrowserTestUtils.removeTab(newTab);
-  }
-});
-
-add_task(async function dismissFooter() {
-  let browser = gBrowser.selectedBrowser;
-
-  await ContentTask.spawn(browser, null, async () => {
-    let footer = Cu.waiveXrays(content.document.querySelector("login-footer"));
-    let dismissButton = footer.shadowRoot.querySelector(".close");
-
-    dismissButton.click();
-    await ContentTaskUtils.waitForCondition(
-      () => ContentTaskUtils.is_hidden(footer),
-      "Waiting for the footer to be hidden"
-    );
-    ok(
-      ContentTaskUtils.is_hidden(footer),
-      "Footer should be hidden after clicking dismiss button"
-    );
-  });
-});
--- a/browser/components/aboutlogins/tests/browser/browser_openPreferencesExternal.js
+++ b/browser/components/aboutlogins/tests/browser/browser_openPreferencesExternal.js
@@ -8,50 +8,49 @@ add_task(async function setup() {
   });
   registerCleanupFunction(() => {
     BrowserTestUtils.removeTab(gBrowser.selectedTab);
   });
 });
 
 add_task(async function test_open_feedback() {
   const menuArray = [
-    {
-      urlFinal: "https://example.com/feedback",
-      urlBase: "https://example.com/feedback",
-      pref: "signon.management.page.feedbackURL",
-      selector: ".menuitem-feedback",
-    },
-    {
-      urlFinal: "https://example.com/faqs",
-      urlBase: "https://example.com/faqs",
-      pref: "signon.management.page.faqURL",
-      selector: ".menuitem-faq",
-    },
-    {
-      urlFinal: "https://example.com/android?utm_creative=Elipsis_Menu",
-      urlBase: "https://example.com/android?utm_creative=",
-      pref: "signon.management.page.mobileAndroidURL",
-      selector: ".menuitem-mobile-android",
-    },
-    {
-      urlFinal: "https://example.com/apple?utm_creative=Elipsis_Menu",
-      urlBase: "https://example.com/apple?utm_creative=",
-      pref: "signon.management.page.mobileAppleURL",
-      selector: ".menuitem-mobile-ios",
-    },
+    [
+      "https://example.com/feedback",
+      "signon.management.page.feedbackURL",
+      ".menuitem-feedback",
+    ],
+    [
+      "https://example.com/faqs",
+      "signon.management.page.faqURL",
+      ".menuitem-faq",
+    ],
+    [
+      "https://example.com/android",
+      "signon.management.page.mobileAndroidURL",
+      ".menuitem-mobile-android",
+    ],
+    [
+      "https://example.com/apple",
+      "signon.management.page.mobileAppleURL",
+      ".menuitem-mobile-ios",
+    ],
   ];
 
-  for (const { urlFinal, urlBase, pref, selector } of menuArray) {
-    info("Test on " + urlFinal);
+  for (let i = 0; i < menuArray.length; i++) {
+    info("Test on " + menuArray[i][1]);
+
+    const TEST_URL = menuArray[i][0];
+    const pref = menuArray[i][1];
 
     await SpecialPowers.pushPrefEnv({
-      set: [[pref, urlBase]],
+      set: [[pref, TEST_URL]],
     });
 
-    let promiseNewTab = BrowserTestUtils.waitForNewTab(gBrowser, urlFinal);
+    let promiseNewTab = BrowserTestUtils.waitForNewTab(gBrowser, TEST_URL);
 
     let browser = gBrowser.selectedBrowser;
     await BrowserTestUtils.synthesizeMouseAtCenter("menu-button", {}, browser);
     await ContentTask.spawn(browser, null, async () => {
       return ContentTaskUtils.waitForCondition(() => {
         let menuButton = Cu.waiveXrays(
           content.document.querySelector("menu-button")
         );
@@ -61,26 +60,26 @@ add_task(async function test_open_feedba
 
     // Not using synthesizeMouseAtCenter here because the element we want clicked on
     // is in the shadow DOM. BrowserTestUtils.synthesizeMouseAtCenter/AsyncUtilsContent
     // thinks that the shadow DOM element is in another document and throws an exception
     // when trying to call element.ownerGlobal on the targeted shadow DOM node. This is
     // on file as bug 1557489. As a workaround, this manually calculates the position to click.
     let { x, y } = await ContentTask.spawn(
       browser,
-      selector,
+      menuArray[i][2],
       async menuItemSelector => {
         let menuButton = Cu.waiveXrays(
           content.document.querySelector("menu-button")
         );
         let prefsItem = menuButton.shadowRoot.querySelector(menuItemSelector);
         return prefsItem.getBoundingClientRect();
       }
     );
     await BrowserTestUtils.synthesizeMouseAtPoint(x + 5, y + 5, {}, browser);
 
     info("waiting for new tab to get opened");
     let newTab = await promiseNewTab;
-    ok(true, "New tab opened to" + urlFinal);
+    ok(true, "New tab opened to https://example.com/test");
 
     BrowserTestUtils.removeTab(newTab);
   }
 });
--- a/browser/installer/allowed-dupes.mn
+++ b/browser/installer/allowed-dupes.mn
@@ -146,13 +146,8 @@ gmp-clearkey/0.1/manifest.json
 i686/gmp-clearkey/0.1/manifest.json
 #endif
 # Bug 1496075 - Switch searchplugins to Web Extensions
 browser/chrome/browser/search-extensions/amazon/favicon.ico
 browser/chrome/browser/search-extensions/amazondotcn/favicon.ico
 browser/chrome/browser/search-extensions/amazondotcom/favicon.ico
 browser/chrome/browser/search-extensions/mercadolibre/favicon.ico
 browser/chrome/browser/search-extensions/mercadolivre/favicon.ico
-# Bug 1550165 - We want to support both Norwegian languages codes (nb and nn) for App Store and Play Store icons
-browser/chrome/browser/content/browser/aboutlogins/third-party/app-store/app_nb.png
-browser/chrome/browser/content/browser/aboutlogins/third-party/app-store/app_nn.png
-browser/chrome/browser/content/browser/aboutlogins/third-party/play-store/play_nb.png
-browser/chrome/browser/content/browser/aboutlogins/third-party/play-store/play_nn.png
--- a/browser/locales/en-US/browser/aboutLogins.ftl
+++ b/browser/locales/en-US/browser/aboutLogins.ftl
@@ -1,23 +1,14 @@
 # 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/.
 
 about-logins-page-title = Logins & Passwords
 
-# "Google Play" and "App Store" are both branding and should not be translated
-
-login-app-promo-title = Take your passwords everywhere
-login-app-promo-subtitle = Get the free { -lockwise-brand-name } app
-login-app-promo-android =
-  .alt = Get it on Google Play
-login-app-promo-apple =
-  .alt = Download on the App Store
-
 login-filter =
   .placeholder = Search Logins
 
 create-login-button = Create New Login
 
 # This string is used as alternative text for favicon images.
 # Variables:
 #   $title (String) - The title of the website associated with the favicon.
--- a/testing/mochitest/BrowserTestUtils/ContentTaskUtils.jsm
+++ b/testing/mochitest/BrowserTestUtils/ContentTaskUtils.jsm
@@ -5,20 +5,16 @@
 /*
  * This module implements a number of utility functions that can be loaded
  * into content scope.
  *
  * All asynchronous helper methods should return promises, rather than being
  * callback based.
  */
 
-// Disable ownerGlobal use since that's not available on content-privileged elements.
-
-/* eslint-disable mozilla/use-ownerGlobal */
-
 "use strict";
 
 var EXPORTED_SYMBOLS = ["ContentTaskUtils"];
 
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 const { clearInterval, setInterval, setTimeout } = ChromeUtils.import(
   "resource://gre/modules/Timer.jsm"
 );
@@ -28,17 +24,17 @@ var ContentTaskUtils = {
    * Checks if a DOM element is hidden.
    *
    * @param {Element} element
    *        The element which is to be checked.
    *
    * @return {boolean}
    */
   is_hidden(element) {
-    let style = element.ownerDocument.defaultView.getComputedStyle(element);
+    var style = element.ownerGlobal.getComputedStyle(element);
     if (style.display == "none") {
       return true;
     }
     if (style.visibility != "visible") {
       return true;
     }
 
     // Hiding a parent element will hide all its children
@@ -53,17 +49,17 @@ var ContentTaskUtils = {
    * Checks if a DOM element is visible.
    *
    * @param {Element} element
    *        The element which is to be checked.
    *
    * @return {boolean}
    */
   is_visible(element) {
-    let style = element.ownerDocument.defaultView.getComputedStyle(element);
+    var style = element.ownerGlobal.getComputedStyle(element);
     if (style.display == "none") {
       return false;
     }
     if (style.visibility != "visible") {
       return false;
     }
 
     // Hiding a parent element will hide all its children