diff -ru a/chrome/content/integration/contentAreaUtils.js b/chrome/content/integration/contentAreaUtils.js --- a/chrome/content/integration/contentAreaUtils.js 2017-09-03 19:40:22.000000000 -0400 +++ b/chrome/content/integration/contentAreaUtils.js 2018-07-01 21:03:08.000000000 -0400 @@ -148,6 +148,7 @@ // The ExactPersist component can also save XML and SVG, but not as // accurately as the browser's standard save system. persistObject = new MozillaArchiveFormat.ExactPersist(); + persistObject.includeOriginalUrl = true; } // Wrap the persist object for propagation to makeWebBrowserPersist. diff -ru a/chrome/content/integration/mafCommandsOverlay.js b/chrome/content/integration/mafCommandsOverlay.js --- a/chrome/content/integration/mafCommandsOverlay.js 2017-02-27 17:51:18.000000000 -0500 +++ b/chrome/content/integration/mafCommandsOverlay.js 2018-07-01 21:03:08.000000000 -0400 @@ -148,7 +148,8 @@ // Determine which class of MAF menu item we are handling. var command = element.getAttribute("command"); - if (command.slice(0, "mafCmd".length) == "mafCmd") { + if (command.startsWith("mafCmd") && + command != "mafCmdConvertSavedPages") { // If the element has a different label based on whether the page will // be saved automatically, change the label accordingly. @@ -167,10 +168,7 @@ Array.forEach(aEvent.target.getElementsByTagNameNS( aEvent.target.namespaceURI, "menuseparator"), function(element) { - // Filter out unrelated separators. - if (["mafMenuSaveSeparator_fileMenu", - "mafMenuConvertSeparator_fileMenu", - "mafMenuSaveSeparator_tabsContextMenu"].indexOf(element.id) >= 0) { + if (element.id == "mafMenuSaveSeparator_tabsContextMenu") { // Set visibility assuming that at least one MAF item is visible in the // menus that actually have a separator, if the user preference for // showing items in the menu is enabled. @@ -204,9 +202,9 @@ */ saveTabsInArchive: function() { // Ensure all the background tabs are loaded while the selection is made. - for (let browser of gBrowser.browsers) { - if (browser.hasAttribute("pending")) { - browser.reload(); + for (let tab of gBrowser.tabs) { + if (tab.hasAttribute("pending")) { + tab.linkedBrowser.reload(); } } // Open a dialog that lets the user select which tabs will be saved. See diff -ru a/chrome/content/integration/mafInterfaceOverlay.js b/chrome/content/integration/mafInterfaceOverlay.js --- a/chrome/content/integration/mafInterfaceOverlay.js 2015-09-13 21:33:58.000000000 -0400 +++ b/chrome/content/integration/mafInterfaceOverlay.js 2018-07-01 21:24:58.000000000 -0400 @@ -97,10 +97,6 @@ if (aEvent.button != 0) return; - // Make sure that clicking outside the popup cannot reopen it accidentally. - this._archiveInfoPopup.popupBoxObject. - setConsumeRollupEvent(Ci.nsIPopupBoxObject.ROLLUP_CONSUME); - // Open the popup near the address bar icon. this._archiveInfoPopup.openPopup(this._archiveInfoUrlbarButton, "bottomcenter topright"); diff -ru a/chrome/content/MozillaArchiveFormat.jsm b/chrome/content/MozillaArchiveFormat.jsm --- a/chrome/content/MozillaArchiveFormat.jsm 2017-02-27 11:29:50.000000000 -0500 +++ b/chrome/content/MozillaArchiveFormat.jsm 2018-07-01 20:44:48.000000000 -0400 @@ -5,7 +5,9 @@ const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Promise.jsm"); Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); Cu.import("resource://gre/modules/NetUtil.jsm"); let objectsByFolder = { diff -ru a/chrome/content/preferences/prefsDialog.xul b/chrome/content/preferences/prefsDialog.xul --- a/chrome/content/preferences/prefsDialog.xul 2017-07-09 13:35:44.000000000 -0400 +++ b/chrome/content/preferences/prefsDialog.xul 2018-07-01 21:09:45.000000000 -0400 @@ -130,22 +130,6 @@ accesskey= "&info.bar.accesskey;" /> - - - @@ -162,26 +146,6 @@ - - -