diff -Nru thunderbird-78.6.1+build1/browser/base/content/browser.js thunderbird-78.7.1+build1/browser/base/content/browser.js --- thunderbird-78.6.1+build1/browser/base/content/browser.js 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/base/content/browser.js 2021-02-05 18:21:07.000000000 +0000 @@ -89,6 +89,7 @@ WebNavigationFrames: "resource://gre/modules/WebNavigationFrames.jsm", fxAccounts: "resource://gre/modules/FxAccounts.jsm", webrtcUI: "resource:///modules/webrtcUI.jsm", + WebsiteFilter: "resource:///modules/policies/WebsiteFilter.jsm", ZoomUI: "resource:///modules/ZoomUI.jsm", }); diff -Nru thunderbird-78.6.1+build1/browser/base/content/nsContextMenu.js thunderbird-78.7.1+build1/browser/base/content/nsContextMenu.js --- thunderbird-78.6.1+build1/browser/base/content/nsContextMenu.js 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/base/content/nsContextMenu.js 2021-02-05 18:21:07.000000000 +0000 @@ -453,6 +453,16 @@ "context-savelink", this.onSaveableLink || this.onPlainTextLink ); + if ( + (this.onSaveableLink || this.onPlainTextLink) && + Services.policies.status === Services.policies.ACTIVE + ) { + this.setItemAttr( + "context-savelink", + "disabled", + !WebsiteFilter.isAllowed(this.linkURL) + ); + } // Save image depends on having loaded its content, video and audio don't. this.showItem("context-saveimage", this.onLoadedImage || this.onCanvas); diff -Nru thunderbird-78.6.1+build1/browser/components/enterprisepolicies/helpers/WebsiteFilter.jsm thunderbird-78.7.1+build1/browser/components/enterprisepolicies/helpers/WebsiteFilter.jsm --- thunderbird-78.6.1+build1/browser/components/enterprisepolicies/helpers/WebsiteFilter.jsm 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/enterprisepolicies/helpers/WebsiteFilter.jsm 2021-02-05 18:21:07.000000000 +0000 @@ -134,4 +134,15 @@ createInstance(outer, iid) { return this.QueryInterface(iid); }, + isAllowed(url) { + if (this._blockPatterns?.matches(url.toLowerCase())) { + if ( + !this._exceptionsPatterns || + !this._exceptionsPatterns.matches(url.toLowerCase()) + ) { + return false; + } + } + return true; + }, }; diff -Nru thunderbird-78.6.1+build1/browser/components/enterprisepolicies/Policies.jsm thunderbird-78.7.1+build1/browser/components/enterprisepolicies/Policies.jsm --- thunderbird-78.6.1+build1/browser/components/enterprisepolicies/Policies.jsm 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/enterprisepolicies/Policies.jsm 2021-02-05 18:21:07.000000000 +0000 @@ -2277,7 +2277,11 @@ )} - {url}` ); }, - onInstallEnded: () => { + /* eslint-disable-next-line no-shadow */ + onInstallEnded: (install, addon) => { + if (addon.type == "theme") { + addon.enable(); + } install.removeListener(listener); log.debug(`Installation succeeded - ${url}`); }, diff -Nru thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/browser/browser.ini thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/browser/browser.ini --- thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/browser/browser.ini 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/browser/browser.ini 2021-02-05 18:21:07.000000000 +0000 @@ -7,6 +7,7 @@ policytest_v0.2.xpi policy_websitefilter_block.html policy_websitefilter_exception.html + policy_websitefilter_savelink.html ../../../../../toolkit/components/antitracking/test/browser/page.html ../../../../../toolkit/components/antitracking/test/browser/subResources.sjs extensionsettings.html diff -Nru thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js --- thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js 2021-02-05 18:21:07.000000000 +0000 @@ -6,6 +6,7 @@ "http://mochi.test:8888/browser/browser/components/enterprisepolicies/tests/browser/"; const BLOCKED_PAGE = "policy_websitefilter_block.html"; const EXCEPTION_PAGE = "policy_websitefilter_exception.html"; +const SAVELINKAS_PAGE = "policy_websitefilter_savelink.html"; add_task(async function test_http() { await setupPolicyEngineWithJson({ @@ -53,3 +54,75 @@ await checkBlockedPage("file:///this_should_be_blocked", true); }); + +add_task(async function test_savelink() { + await setupPolicyEngineWithJson({ + policies: { + WebsiteFilter: { + Block: ["*://mochi.test/*policy_websitefilter_block*"], + }, + }, + }); + + let tab = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + SUPPORT_FILES_PATH + SAVELINKAS_PAGE + ); + + let contextMenu = document.getElementById("contentAreaContextMenu"); + let promiseContextMenuOpen = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + await BrowserTestUtils.synthesizeMouse( + "#savelink_blocked", + 0, + 0, + { + type: "contextmenu", + button: 2, + centered: true, + }, + gBrowser.selectedBrowser + ); + await promiseContextMenuOpen; + + let saveLink = document.getElementById("context-savelink"); + is(saveLink.disabled, true, "Save Link As should be disabled"); + + let promiseContextMenuHidden = BrowserTestUtils.waitForEvent( + contextMenu, + "popuphidden" + ); + contextMenu.hidePopup(); + await promiseContextMenuHidden; + + promiseContextMenuOpen = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + await BrowserTestUtils.synthesizeMouse( + "#savelink_notblocked", + 0, + 0, + { + type: "contextmenu", + button: 2, + centered: true, + }, + gBrowser.selectedBrowser + ); + await promiseContextMenuOpen; + + saveLink = document.getElementById("context-savelink"); + is(saveLink.disabled, false, "Save Link As should not be disabled"); + + promiseContextMenuHidden = BrowserTestUtils.waitForEvent( + contextMenu, + "popuphidden" + ); + contextMenu.hidePopup(); + await promiseContextMenuHidden; + + BrowserTestUtils.removeTab(tab); +}); diff -Nru thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/browser/policy_websitefilter_savelink.html thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/browser/policy_websitefilter_savelink.html --- thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/browser/policy_websitefilter_savelink.html 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/browser/policy_websitefilter_savelink.html 2021-02-05 18:21:07.000000000 +0000 @@ -0,0 +1,11 @@ + + + + + Save Link As test + + + Should not be saveable
+ Should be saveable + + diff -Nru thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/xpcshell/test_extensionsettings.js thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/xpcshell/test_extensionsettings.js --- thunderbird-78.6.1+build1/browser/components/enterprisepolicies/tests/xpcshell/test_extensionsettings.js 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/enterprisepolicies/tests/xpcshell/test_extensionsettings.js 2021-02-05 18:21:07.000000000 +0000 @@ -17,6 +17,7 @@ const BASE_URL = `http://example.com/data`; let addonID = "policytest2@mozilla.com"; +let themeID = "policytheme@mozilla.com"; add_task(async function setup() { await AddonTestUtils.promiseStartupManager(); @@ -219,3 +220,36 @@ ); equal(newRestrictedDomains, restrictedDomains + ",example.com,example.org"); }); + +add_task(async function test_theme() { + let themeFile = AddonTestUtils.createTempWebExtensionFile({ + manifest: { + applications: { + gecko: { + id: themeID, + }, + }, + theme: {}, + }, + }); + + server.registerFile("/data/policy_theme.xpi", themeFile); + + await Promise.all([ + AddonTestUtils.promiseInstallEvent("onInstallEnded"), + setupPolicyEngineWithJson({ + policies: { + ExtensionSettings: { + "policytheme@mozilla.com": { + installation_mode: "normal_installed", + install_url: BASE_URL + "/policy_theme.xpi", + }, + }, + }, + }), + ]); + let currentTheme = Services.prefs.getCharPref("extensions.activeThemeID"); + equal(currentTheme, themeID, "Theme should be active"); + let addon = await AddonManager.getAddonByID(themeID); + await addon.uninstall(); +}); Binary files /tmp/tmpzWDMKe/ChT1BnyQvV/thunderbird-78.6.1+build1/browser/components/newtab/data/content/tippytop/favicons/baidu-com.ico and /tmp/tmpzWDMKe/vU57UfULln/thunderbird-78.7.1+build1/browser/components/newtab/data/content/tippytop/favicons/baidu-com.ico differ Binary files /tmp/tmpzWDMKe/ChT1BnyQvV/thunderbird-78.6.1+build1/browser/components/newtab/data/content/tippytop/favicons/baidu-com.png and /tmp/tmpzWDMKe/vU57UfULln/thunderbird-78.7.1+build1/browser/components/newtab/data/content/tippytop/favicons/baidu-com.png differ Binary files /tmp/tmpzWDMKe/ChT1BnyQvV/thunderbird-78.6.1+build1/browser/components/newtab/data/content/tippytop/images/baidu-com@2x.png and /tmp/tmpzWDMKe/vU57UfULln/thunderbird-78.7.1+build1/browser/components/newtab/data/content/tippytop/images/baidu-com@2x.png differ diff -Nru thunderbird-78.6.1+build1/browser/components/newtab/data/content/tippytop/top_sites.json thunderbird-78.7.1+build1/browser/components/newtab/data/content/tippytop/top_sites.json --- thunderbird-78.6.1+build1/browser/components/newtab/data/content/tippytop/top_sites.json 2021-01-08 18:54:06.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/newtab/data/content/tippytop/top_sites.json 2021-02-05 18:21:07.000000000 +0000 @@ -27,7 +27,7 @@ "title": "baidu", "url": "https://www.baidu.com/", "image_url": "images/baidu-com@2x.png", - "favicon_url": "favicons/baidu-com.ico" + "favicon_url": "favicons/baidu-com.png" }, { "title": "bbc", Binary files /tmp/tmpzWDMKe/ChT1BnyQvV/thunderbird-78.6.1+build1/browser/components/search/extensions/baidu/favicon.ico and /tmp/tmpzWDMKe/vU57UfULln/thunderbird-78.7.1+build1/browser/components/search/extensions/baidu/favicon.ico differ Binary files /tmp/tmpzWDMKe/ChT1BnyQvV/thunderbird-78.6.1+build1/browser/components/search/extensions/bing/favicon.ico and /tmp/tmpzWDMKe/vU57UfULln/thunderbird-78.7.1+build1/browser/components/search/extensions/bing/favicon.ico differ diff -Nru thunderbird-78.6.1+build1/browser/components/search/extensions/bing/manifest.json thunderbird-78.7.1+build1/browser/components/search/extensions/bing/manifest.json --- thunderbird-78.6.1+build1/browser/components/search/extensions/bing/manifest.json 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/search/extensions/bing/manifest.json 2021-02-05 18:21:07.000000000 +0000 @@ -1,8 +1,8 @@ { "name": "Bing", - "description": "Bing. Search by Microsoft.", + "description": "Microsoft Bing", "manifest_version": 2, - "version": "1.1", + "version": "1.1.1", "applications": { "gecko": { "id": "bing@search.mozilla.org" diff -Nru thunderbird-78.6.1+build1/browser/components/search/test/browser/browser_bing.js thunderbird-78.7.1+build1/browser/components/search/test/browser/browser_bing.js --- thunderbird-78.6.1+build1/browser/components/search/test/browser/browser_bing.js 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/components/search/test/browser/browser_bing.js 2021-02-05 18:21:08.000000000 +0000 @@ -47,7 +47,7 @@ const EXPECTED_ENGINE = { name: "Bing", alias: null, - description: "Bing. Search by Microsoft.", + description: "Microsoft Bing", searchForm: "https://www.bing.com/search?pc=MOZI&q=", hidden: false, wrappedJSObject: { diff -Nru thunderbird-78.6.1+build1/browser/config/version_display.txt thunderbird-78.7.1+build1/browser/config/version_display.txt --- thunderbird-78.6.1+build1/browser/config/version_display.txt 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/config/version_display.txt 2021-02-05 18:21:31.000000000 +0000 @@ -1 +1 @@ -78.6.1esr +78.7.0esr diff -Nru thunderbird-78.6.1+build1/browser/config/version.txt thunderbird-78.7.1+build1/browser/config/version.txt --- thunderbird-78.6.1+build1/browser/config/version.txt 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/config/version.txt 2021-02-05 18:21:31.000000000 +0000 @@ -1 +1 @@ -78.6.1 +78.7.0 diff -Nru thunderbird-78.6.1+build1/browser/extensions/pdfjs/content/PdfJsNetwork.jsm thunderbird-78.7.1+build1/browser/extensions/pdfjs/content/PdfJsNetwork.jsm --- thunderbird-78.6.1+build1/browser/extensions/pdfjs/content/PdfJsNetwork.jsm 2021-01-08 18:54:06.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/extensions/pdfjs/content/PdfJsNetwork.jsm 2021-02-05 18:21:07.000000000 +0000 @@ -94,6 +94,7 @@ var rangeStr = args.begin + "-" + (args.end - 1); xhr.setRequestHeader("Range", "bytes=" + rangeStr); pendingRequest.expectedStatus = 206; + xhr.channel.QueryInterface(Ci.nsIHttpChannel).redirectionLimit = 0; } else { pendingRequest.expectedStatus = 200; } diff -Nru thunderbird-78.6.1+build1/browser/installer/windows/nsis/shared.nsh thunderbird-78.7.1+build1/browser/installer/windows/nsis/shared.nsh --- thunderbird-78.6.1+build1/browser/installer/windows/nsis/shared.nsh 2021-01-08 18:54:29.000000000 +0000 +++ thunderbird-78.7.1+build1/browser/installer/windows/nsis/shared.nsh 2021-02-05 18:21:07.000000000 +0000 @@ -1609,7 +1609,22 @@ ${Unless} ${Errors} ; This is all protected by a user choice hash in Windows 8 so it won't ; help, but it also won't hurt. - AppAssocReg::SetAppAsDefaultAll "$R9" + AppAssocReg::SetAppAsDefault "$R9" ".htm" "file" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" ".html" "file" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" ".shtml" "file" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" ".webp" "file" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" ".xht" "file" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" ".xhtml" "file" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" "http" "protocol" + Pop $0 + AppAssocReg::SetAppAsDefault "$R9" "https" "protocol" + Pop $0 ${EndUnless} ${RemoveDeprecatedKeys} ${MigrateTaskBarShortcut} diff -Nru thunderbird-78.6.1+build1/BUILDID thunderbird-78.7.1+build1/BUILDID --- thunderbird-78.6.1+build1/BUILDID 2021-01-08 19:06:36.000000000 +0000 +++ thunderbird-78.7.1+build1/BUILDID 2021-02-05 18:42:46.000000000 +0000 @@ -1 +1 @@ -20210107201950 \ No newline at end of file +20210203182138 \ No newline at end of file diff -Nru thunderbird-78.6.1+build1/comm/calendar/base/themes/common/calendar-task-view.css thunderbird-78.7.1+build1/comm/calendar/base/themes/common/calendar-task-view.css --- thunderbird-78.6.1+build1/comm/calendar/base/themes/common/calendar-task-view.css 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/calendar/base/themes/common/calendar-task-view.css 2021-02-05 18:23:40.000000000 +0000 @@ -4,6 +4,12 @@ @namespace html url("http://www.w3.org/1999/xhtml"); +#calendar-task-details-container { + border-bottom-width: 0; + padding: 0; + overflow: hidden; +} + #calendar-task-details { display: flex; flex-direction: column; @@ -15,10 +21,7 @@ } #calendar-task-details-grid { - padding-top: 1px; - padding-inline-start: 0; - padding-inline-end: 0; - padding-bottom: 0.2em; + padding: 1px 2px 0.2em; width: 100%; } @@ -49,6 +52,10 @@ padding-bottom: 0.3em; } +#task-actions-toolbox { + margin-inline-end: 3px; +} + #task-addition-box { border-bottom: 1px solid ThreeDShadow; } @@ -83,8 +90,12 @@ #calendar-task-details-description { width: 100%; box-sizing: border-box; - font-family: serif; - font-size: 16px; + border-width: 0; + border-top: 1px solid var(--splitter-color); + margin-block: 0; + padding-inline: 4px; + outline: none; + resize: none; } .task-details-name { @@ -100,7 +111,8 @@ } #calendar-task-details-attachment-row { - margin-top: 3px; + border-top: 1px solid var(--splitter-color); + padding-block: 2px; } #calendar-task-details-attachment-rows { diff -Nru thunderbird-78.6.1+build1/comm/calendar/base/themes/linux/lightning.css thunderbird-78.7.1+build1/comm/calendar/base/themes/linux/lightning.css --- thunderbird-78.6.1+build1/comm/calendar/base/themes/linux/lightning.css 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/calendar/base/themes/linux/lightning.css 2021-02-05 18:23:40.000000000 +0000 @@ -43,7 +43,6 @@ /* Lightning sidebar in calendar and task mode */ #ltnSidebar { background-color: -moz-field; - border-bottom: 1px solid ThreeDShadow; } /* Today pane button in status bar */ diff -Nru thunderbird-78.6.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css thunderbird-78.7.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css --- thunderbird-78.6.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css 2021-02-05 18:23:40.000000000 +0000 @@ -6,9 +6,7 @@ #calendar-task-details-container { background-color: ButtonFace; - border-bottom-width: 0; padding-top: 2px; - overflow: hidden; } #other-actions-box { diff -Nru thunderbird-78.6.1+build1/comm/calendar/base/themes/windows/calendar-task-view.css thunderbird-78.7.1+build1/comm/calendar/base/themes/windows/calendar-task-view.css --- thunderbird-78.6.1+build1/comm/calendar/base/themes/windows/calendar-task-view.css 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/calendar/base/themes/windows/calendar-task-view.css 2021-02-05 18:23:40.000000000 +0000 @@ -15,11 +15,7 @@ } #calendar-task-details-container { - border-top: 1px solid ThreeDShadow; - border-left: 1px solid ThreeDShadow; - border-right: 0; - border-bottom: 0; - overflow: hidden; + padding-top: 0; } #other-actions-box { @@ -61,11 +57,6 @@ border-top-width: 0; } -#calendar-task-details-container { - border-top-width: 0; - padding-top: 0; -} - @media (-moz-windows-default-theme) { #task-addition-box { background-color: #f8f8f8; diff -Nru thunderbird-78.6.1+build1/comm/.gecko_rev.yml thunderbird-78.7.1+build1/comm/.gecko_rev.yml --- thunderbird-78.6.1+build1/comm/.gecko_rev.yml 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/.gecko_rev.yml 2021-02-05 18:23:40.000000000 +0000 @@ -1,8 +1,8 @@ --- GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-esr78 -GECKO_HEAD_REF: FIREFOX_78_6_1esr_RELEASE -GECKO_HEAD_REV: df0581e37d875577ff1f2be1d5943e0d03c9e796 +GECKO_HEAD_REF: FIREFOX_78_7_0esr_BUILD1 +GECKO_HEAD_REV: 0b2a3be4915be03d5434bd445234b7145f4d7dab ### For comm-central # GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified diff -Nru thunderbird-78.6.1+build1/comm/mail/app/profile/all-thunderbird.js thunderbird-78.7.1+build1/comm/mail/app/profile/all-thunderbird.js --- thunderbird-78.6.1+build1/comm/mail/app/profile/all-thunderbird.js 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/app/profile/all-thunderbird.js 2021-02-05 18:23:40.000000000 +0000 @@ -104,7 +104,7 @@ #endif // Base URL for web-based support pages. -pref("app.support.baseURL", "https://support.thunderbird.net/%LOCALE%/%APP%/%APPBUILDID%/"); +pref("app.support.baseURL", "https://support.thunderbird.net/%APP%/%VERSION%/%OS%/%LOCALE%/"); // Base url for web-based feedback pages. pref("app.feedback.baseURL", "https://input.mozilla.org/%LOCALE%/feedback/%APP%/%VERSION%/"); diff -Nru thunderbird-78.6.1+build1/comm/mail/base/content/gloda-autocomplete-input.js thunderbird-78.7.1+build1/comm/mail/base/content/gloda-autocomplete-input.js --- thunderbird-78.6.1+build1/comm/mail/base/content/gloda-autocomplete-input.js 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/base/content/gloda-autocomplete-input.js 2021-02-05 18:23:40.000000000 +0000 @@ -28,9 +28,6 @@ const { GlodaIMSearcher } = ChromeUtils.import( "resource:///modules/search_im.jsm" ); - const { XPCOMUtils } = ChromeUtils.import( - "resource://gre/modules/XPCOMUtils.jsm" - ); /** * The MozGlodaAutocompleteInput widget is used to display the autocomplete search bar. @@ -80,17 +77,6 @@ super.connectedCallback(); this.setAttribute("is", "gloda-autocomplete-input"); - - XPCOMUtils.defineLazyPreferenceGetter( - this, - "glodaEnabled", - "mailnews.database.global.indexer.enabled", - true, - (pref, oldVal, newVal) => { - this.toggleAttribute("hidden", !newVal); - } - ); - this.glodaCompleter = null; // @implements {nsIObserver} @@ -175,8 +161,6 @@ "autocomplete-did-enter-text" ); - this.toggleAttribute("hidden", !this.glodaEnabled); - // make sure we set our emptytext here from the get-go if (this.hasAttribute("placeholder")) { this.placeholder = this.getAttribute("placeholder"); diff -Nru thunderbird-78.6.1+build1/comm/mail/base/content/mailWidgets.js thunderbird-78.7.1+build1/comm/mail/base/content/mailWidgets.js --- thunderbird-78.6.1+build1/comm/mail/base/content/mailWidgets.js 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/base/content/mailWidgets.js 2021-02-05 18:23:40.000000000 +0000 @@ -2137,12 +2137,13 @@ }); input.addEventListener("keyup", event => { - // Trigger the onRecipientsChanged method for every letter typed in - // order to properly update the "Send" button and trigger the save as - // draft prompt even before the creation of any pill. + // Trigger the onRecipientsChanged method for every letter typed or + // deleted in order to properly update the "Send" button and trigger + // the save as draft prompt even before the creation of any pill. if ( event.key.length == 1 || - (event.key.length > 1 && /[^a-zA-Z0-9]/.test(event.key)) + (event.key.length > 1 && /[^a-zA-Z0-9]/.test(event.key)) || + ["Backspace", "Delete"].includes(event.key) ) { onRecipientsChanged(false); } diff -Nru thunderbird-78.6.1+build1/comm/mail/base/content/mainMailToolbox.inc.xhtml thunderbird-78.7.1+build1/comm/mail/base/content/mainMailToolbox.inc.xhtml --- thunderbird-78.6.1+build1/comm/mail/base/content/mainMailToolbox.inc.xhtml 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/base/content/mainMailToolbox.inc.xhtml 2021-02-05 18:23:40.000000000 +0000 @@ -325,7 +325,7 @@ title="&glodaSearch.title;" align="center" flex="1" - class="chromeclass-toolbar-additional"> + class="gloda-search-widget chromeclass-toolbar-additional"> { + for (let widget of document.querySelectorAll(".gloda-search-widget")) { + widget.hidden = !newVal; + } + } + ); + for (let widget of document.querySelectorAll(".gloda-search-widget")) { + widget.hidden = !this.gGlodaEnabled; + } + window.addEventListener("AppCommand", HandleAppCommandEvent, true); // Set up the appmenus. (This has to happen after the DOM has loaded.) diff -Nru thunderbird-78.6.1+build1/comm/mail/base/modules/ExtensionsUI.jsm thunderbird-78.7.1+build1/comm/mail/base/modules/ExtensionsUI.jsm --- thunderbird-78.6.1+build1/comm/mail/base/modules/ExtensionsUI.jsm 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/base/modules/ExtensionsUI.jsm 2021-02-05 18:23:40.000000000 +0000 @@ -886,6 +886,30 @@ }); } + // Reject add-ons using the legacy API. We cannot use the general "ignore + // unknown APIs" policy, as add-ons using the Legacy API from TB68 will + // not do anything, confusing the user. + if (data.manifest.legacy) { + let subject = { + wrappedJSObject: { + browser, + originatingURI: null, + installs: [ + { + addon: info.addon, + name: info.addon.name, + error: 0, + }, + ], + install: null, + cancel: null, + }, + }; + Services.obs.notifyObservers(subject, "addon-install-failed"); + info.reject(); + return; + } + this.showPermissionsPrompt(browser, strings, info.icon, histkey).then( answer => { if (answer) { diff -Nru thunderbird-78.6.1+build1/comm/mail/base/modules/ThemeVariableMap.jsm thunderbird-78.7.1+build1/comm/mail/base/modules/ThemeVariableMap.jsm --- thunderbird-78.6.1+build1/comm/mail/base/modules/ThemeVariableMap.jsm 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/base/modules/ThemeVariableMap.jsm 2021-02-05 18:23:40.000000000 +0000 @@ -248,6 +248,12 @@ lwtProperty: "sidebar_border", }, ], + [ + "--sidebar-highlight-border-color", + { + lwtProperty: "sidebar_highlight_border", + }, + ], ]; const ThemeContentPropertyList = [ diff -Nru thunderbird-78.6.1+build1/comm/mail/components/activity/content/activity-widgets.js thunderbird-78.7.1+build1/comm/mail/components/activity/content/activity-widgets.js --- thunderbird-78.6.1+build1/comm/mail/components/activity/content/activity-widgets.js 2021-01-08 18:56:33.000000000 +0000 +++ thunderbird-78.7.1+build1/comm/mail/components/activity/content/activity-widgets.js 2021-02-05 18:23:40.000000000 +0000 @@ -611,7 +611,7 @@