diff -Nru thunderbird-102.11.0+build1/browser/app/moz.build thunderbird-102.13.0+build1/browser/app/moz.build --- thunderbird-102.11.0+build1/browser/app/moz.build 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/app/moz.build 2023-07-05 05:43:52.000000000 +0000 @@ -53,11 +53,6 @@ "/xpcom/build", ] -# The pthred_create() interposer needs to be linked as early as possible so -# that it will appear before libpthread when resolving symbols. -if CONFIG["OS_ARCH"] == "Linux" and CONFIG["MOZ_CRASHREPORTER"]: - USE_LIBS += ["pthread_create_interposer"] - if CONFIG["LIBFUZZER"]: USE_LIBS += ["fuzzer"] LOCAL_INCLUDES += [ diff -Nru thunderbird-102.11.0+build1/browser/base/content/certerror/aboutNetError.js thunderbird-102.13.0+build1/browser/base/content/certerror/aboutNetError.js --- thunderbird-102.11.0+build1/browser/base/content/certerror/aboutNetError.js 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/base/content/certerror/aboutNetError.js 2023-07-05 05:43:52.000000000 +0000 @@ -153,18 +153,16 @@ .addEventListener("click", togglePanelVisibility); function togglePanelVisibility() { - panel.hidden = !panel.hidden; - if (gIsCertError) { - // Toggling the advanced panel must ensure that the debugging - // information panel is hidden as well, since it's opened by the - // error code link in the advanced panel. - toggleCertErrorDebugInfoVisibility(false); - } + if (panel.hidden) { + // Reveal + revealAdvancedPanelSlowlyAsync(); - if (panel.style.display == "block") { // send event to trigger telemetry ping var event = new CustomEvent("AboutNetErrorUIExpanded", { bubbles: true }); document.dispatchEvent(event); + } else { + // Hide + panel.hidden = true; } } @@ -173,12 +171,61 @@ } if (getCSSClass() == "expertBadCert") { - panel.hidden = false; + revealAdvancedPanelSlowlyAsync(); } disallowCertOverridesIfNeeded(); } +async function revealAdvancedPanelSlowlyAsync() { + const badCertAdvancedPanel = document.getElementById("badCertAdvancedPanel"); + const exceptionDialogButton = document.getElementById( + "exceptionDialogButton" + ); + + // Toggling the advanced panel must ensure that the debugging + // information panel is hidden as well, since it's opened by the + // error code link in the advanced panel. + toggleCertErrorDebugInfoVisibility(false); + + // Reveal, but disabled (and grayed-out) for 3.0s. + badCertAdvancedPanel.hidden = false; + exceptionDialogButton.disabled = true; + + // - + + if (exceptionDialogButton.resetReveal) { + exceptionDialogButton.resetReveal(); // Reset if previous is pending. + } + let wasReset = false; + exceptionDialogButton.resetReveal = () => { + wasReset = true; + }; + + // Wait for 10 frames to ensure that the warning text is rendered + // and gets all the way to the screen for the user to read it. + // This is only ~0.160s at 60Hz, so it's not too much extra time that we're + // taking to ensure that we're caught up with rendering, on top of the + // (by default) whole second(s) we're going to wait based on the + // security.dialog_enable_delay pref. + // The catching-up to rendering is the important part, not the + // N-frame-delay here. + for (let i = 0; i < 10; i++) { + await new Promise(requestAnimationFrame); + } + + // Wait another Nms (default: 1000) for the user to be very sure. (Sorry speed readers!) + const securityDelayMs = RPMGetIntPref("security.dialog_enable_delay", 1000); + await new Promise(go => setTimeout(go, securityDelayMs)); + + if (wasReset) { + return; + } + + // Enable and un-gray-out. + exceptionDialogButton.disabled = false; +} + function disallowCertOverridesIfNeeded() { var cssClass = getCSSClass(); // Disallow overrides if this is a Strict-Transport-Security @@ -973,7 +1020,6 @@ } let cssClass = getCSSClass(); - let error = gErrorCode; let hostString = HOST_NAME; let port = document.location.port; @@ -1084,14 +1130,10 @@ // If we set a link, meaning there's something helpful for // the user here, expand the section by default if (href && cssClass != "expertBadCert") { - document.getElementById("badCertAdvancedPanel").style.display = - "block"; - if (error == "nssBadCert") { - // Toggling the advanced panel must ensure that the debugging - // information panel is hidden as well, since it's opened by the - // error code link in the advanced panel. - toggleCertErrorDebugInfoVisibility(false); - } + // Previously, this would cause AboutNetErrorUIExpanded to send to + // telemetry, but we probably don't want to do that when + // auto-revealing. + revealAdvancedPanelSlowlyAsync(); } // Set the link if we want it. diff -Nru thunderbird-102.11.0+build1/browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js thunderbird-102.13.0+build1/browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js --- thunderbird-102.11.0+build1/browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js 2023-07-05 05:43:52.000000000 +0000 @@ -113,8 +113,12 @@ let tab = await openCaptivePortalErrorTab(); let browser = tab.linkedBrowser; + const waitForLocationChange = (async () => { + await BrowserTestUtils.waitForLocationChange(gBrowser, BAD_CERT_PAGE); + info("(waitForLocationChange resolved)"); + })(); await SpecialPowers.spawn(browser, [BAD_CERT_PAGE], async expectedURL => { - let doc = content.document; + const doc = content.document; let advancedButton = doc.getElementById("advancedButton"); await ContentTaskUtils.waitForCondition( () => ContentTaskUtils.is_visible(advancedButton), @@ -122,12 +126,13 @@ ); info("Clicking on the advanced button"); - await EventUtils.synthesizeMouseAtCenter(advancedButton, {}, content); - let advPanelContainer = doc.getElementById("advancedPanelContainer"); + const advPanel = doc.getElementById("badCertAdvancedPanel"); ok( - ContentTaskUtils.is_visible(advPanelContainer), - "Advanced panel is now visible" + !ContentTaskUtils.is_visible(advPanel), + "Advanced panel is not yet visible" ); + await EventUtils.synthesizeMouseAtCenter(advancedButton, {}, content); + ok(ContentTaskUtils.is_visible(advPanel), "Advanced panel is now visible"); let advPanelContent = doc.getElementById("badCertTechnicalInfo"); ok( @@ -142,17 +147,58 @@ "Cert error code is visible in the advanced panel" ); - let advPanelExceptionButton = doc.getElementById("exceptionDialogButton"); + // - + + const advPanelExceptionButton = doc.getElementById("exceptionDialogButton"); + + function isOnCertErrorPage() { + return ContentTaskUtils.is_visible(advPanel); + } + + ok(isOnCertErrorPage(), "On cert error page before adding exception"); + ok( + advPanelExceptionButton.disabled, + "Exception button should start disabled" + ); await EventUtils.synthesizeMouseAtCenter( advPanelExceptionButton, {}, content + ); // Click + const clickTime = content.performance.now(); + ok( + isOnCertErrorPage(), + "Still on cert error page because clicked too early" ); + + // Now waitForCondition now that it's possible. + try { + await ContentTaskUtils.waitForCondition( + () => !advPanelExceptionButton.disabled, + "Wait for exception button enabled" + ); + } catch (rejected) { + ok(false, rejected); + return; + } ok( - doc.location.href.startsWith(expectedURL), - "Accept the risk and continue button works on the captive portal page" + !advPanelExceptionButton.disabled, + "Exception button should be enabled after waiting" ); + const msSinceClick = content.performance.now() - clickTime; + const expr = `${msSinceClick} > 1000`; + /* eslint-disable no-eval */ + ok(eval(expr), `Exception button should stay disabled for ${expr} ms`); + + await EventUtils.synthesizeMouseAtCenter( + advPanelExceptionButton, + {}, + content + ); // Click + info("Clicked"); }); + await waitForLocationChange; + info("Page reloaded after adding cert exception"); // Clear the certificate exception. let certOverrideService = Cc[ @@ -160,9 +206,16 @@ ].getService(Ci.nsICertOverrideService); certOverrideService.clearValidityOverride("expired.example.com", -1, {}); - let errorTabReloaded = BrowserTestUtils.waitForErrorPage(browser); - Services.obs.notifyObservers(null, "captive-portal-login-success"); - await errorTabReloaded; + info("After clearing cert override, asking for reload..."); + const waitForErrorPage = BrowserTestUtils.waitForErrorPage(browser); + await SpecialPowers.spawn(browser, [], async () => { + info("reload..."); + content.location.reload(); + }); + info("waitForErrorPage..."); + await waitForErrorPage; + info("removeTab..."); await BrowserTestUtils.removeTab(tab); + info("Done!"); }); diff -Nru thunderbird-102.11.0+build1/browser/components/enterprisepolicies/content/aboutPolicies.js thunderbird-102.13.0+build1/browser/components/enterprisepolicies/content/aboutPolicies.js --- thunderbird-102.11.0+build1/browser/components/enterprisepolicies/content/aboutPolicies.js 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/components/enterprisepolicies/content/aboutPolicies.js 2023-07-05 05:43:52.000000000 +0000 @@ -293,6 +293,7 @@ Permissions: "Permissions2", BackgroundAppUpdate: "BackgroundAppUpdate2", WindowsSSO: "Windows10SSO", + SecurityDevices: "SecurityDevices2", }; for (let policyName in schema.properties) { diff -Nru thunderbird-102.11.0+build1/browser/components/enterprisepolicies/Policies.jsm thunderbird-102.13.0+build1/browser/components/enterprisepolicies/Policies.jsm --- thunderbird-102.11.0+build1/browser/components/enterprisepolicies/Policies.jsm 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/components/enterprisepolicies/Policies.jsm 2023-07-05 05:43:53.000000000 +0000 @@ -1706,6 +1706,7 @@ "security.insecure_connection_text.pbmode.enabled", "security.insecure_field_warning.contextual.enabled", "security.mixed_content.block_active_content", + "security.osclientcerts.assume_rsa_pss_support", "security.osclientcerts.autoload", "security.OCSP.enabled", "security.OCSP.require", @@ -2158,14 +2159,34 @@ SecurityDevices: { onProfileAfterChange(manager, param) { - let securityDevices = param; let pkcs11db = Cc["@mozilla.org/security/pkcs11moduledb;1"].getService( Ci.nsIPKCS11ModuleDB ); - let moduleList = pkcs11db.listModules(); + let securityDevices; + if (param.Add || param.Delete) { + // We're using the new syntax. + securityDevices = param.Add; + if (param.Delete) { + for (let deviceName of param.Delete) { + try { + pkcs11db.deleteModule(deviceName); + } catch (e) { + // Ignoring errors here since it might stick around in policy + // after removing. Alternative would be to listModules and + // make sure it's there before removing, but that seems + // like unnecessary work. + } + } + } + } else { + securityDevices = param; + } + if (!securityDevices) { + return; + } for (let deviceName in securityDevices) { let foundModule = false; - for (let module of moduleList) { + for (let module of pkcs11db.listModules()) { if (module && module.libName === securityDevices[deviceName]) { foundModule = true; break; diff -Nru thunderbird-102.11.0+build1/browser/components/enterprisepolicies/schemas/policies-schema.json thunderbird-102.13.0+build1/browser/components/enterprisepolicies/schemas/policies-schema.json --- thunderbird-102.11.0+build1/browser/components/enterprisepolicies/schemas/policies-schema.json 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/components/enterprisepolicies/schemas/policies-schema.json 2023-07-05 05:43:52.000000000 +0000 @@ -1242,6 +1242,20 @@ "type": "object", "patternProperties": { "^.*$": { "type": "string" } + }, + "properties": { + "Add": { + "type": "object", + "patternProperties": { + "^.*$": { "type": "string" } + } + }, + "Delete": { + "type": "array", + "items": { + "type": "string" + } + } } }, @@ -1311,7 +1325,7 @@ }, "WebsiteFilter": { - "type": "object", + "type": ["object", "JSON"], "properties": { "Block": { "type": "array", diff -Nru thunderbird-102.11.0+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js thunderbird-102.13.0+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js --- thunderbird-102.11.0+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/components/enterprisepolicies/tests/browser/browser_policy_websitefilter.js 2023-07-05 05:43:53.000000000 +0000 @@ -8,6 +8,17 @@ const EXCEPTION_PAGE = "policy_websitefilter_exception.html"; const SAVELINKAS_PAGE = "policy_websitefilter_savelink.html"; +async function clearWebsiteFilter() { + await setupPolicyEngineWithJson({ + policies: { + WebsiteFilter: { + Block: [], + Exceptions: [], + }, + }, + }); +} + add_task(async function test_http() { await setupPolicyEngineWithJson({ policies: { @@ -36,6 +47,7 @@ await checkBlockedPage(SUPPORT_FILES_PATH + "301.sjs", true); await checkBlockedPage(SUPPORT_FILES_PATH + "302.sjs", true); + await clearWebsiteFilter(); }); add_task(async function test_http_mixed_case() { @@ -53,6 +65,7 @@ SUPPORT_FILES_PATH + EXCEPTION_PAGE.toUpperCase(), false ); + await clearWebsiteFilter(); }); add_task(async function test_file() { @@ -65,6 +78,7 @@ }); await checkBlockedPage("file:///this_should_be_blocked", true); + await clearWebsiteFilter(); }); add_task(async function test_savelink() { @@ -137,4 +151,36 @@ await promiseContextMenuHidden; BrowserTestUtils.removeTab(tab); + await clearWebsiteFilter(); +}); + +add_task(async function test_http_json_policy() { + await setupPolicyEngineWithJson({ + policies: { + WebsiteFilter: `{ + "Block": ["*://mochi.test/*policy_websitefilter_*"], + "Exceptions": ["*://mochi.test/*_websitefilter_exception*"] + }`, + }, + }); + + await checkBlockedPage(SUPPORT_FILES_PATH + BLOCKED_PAGE, true); + await checkBlockedPage( + "view-source:" + SUPPORT_FILES_PATH + BLOCKED_PAGE, + true + ); + await checkBlockedPage( + "about:reader?url=" + SUPPORT_FILES_PATH + BLOCKED_PAGE, + true + ); + await checkBlockedPage( + "about:READER?url=" + SUPPORT_FILES_PATH + BLOCKED_PAGE, + true + ); + await checkBlockedPage(SUPPORT_FILES_PATH + EXCEPTION_PAGE, false); + + await checkBlockedPage(SUPPORT_FILES_PATH + "301.sjs", true); + + await checkBlockedPage(SUPPORT_FILES_PATH + "302.sjs", true); + await clearWebsiteFilter(); }); diff -Nru thunderbird-102.11.0+build1/browser/components/search/extensions/gulesider-NO/manifest.json thunderbird-102.13.0+build1/browser/components/search/extensions/gulesider-NO/manifest.json --- thunderbird-102.11.0+build1/browser/components/search/extensions/gulesider-NO/manifest.json 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/components/search/extensions/gulesider-NO/manifest.json 2023-07-05 05:43:53.000000000 +0000 @@ -2,7 +2,7 @@ "name": "Gule sider", "description": "Gule sider person og firmasøk", "manifest_version": 2, - "version": "1.0", + "version": "1.2", "applications": { "gecko": { "id": "gulesider-NO@search.mozilla.org" @@ -12,15 +12,13 @@ "icons": { "16": "favicon.ico" }, - "web_accessible_resources": [ - "favicon.ico" - ], + "web_accessible_resources": ["favicon.ico"], "chrome_settings_overrides": { "search_provider": { "name": "Gule sider", - "search_url": "https://www.gulesider.no/query", + "search_url": "https://www.gulesider.no/search", "search_form": "https://www.gulesider.no/", - "search_url_get_params": "what=all&search_word={searchTerms}&cmpid=fre_partner_fire_gssbtop" + "search_url_get_params": "what=all&cmpid=fre_partner_fire_gssbtop&q={searchTerms}" } } -} \ No newline at end of file +} diff -Nru thunderbird-102.11.0+build1/browser/components/search/test/unit/test_urlTelemetry.js thunderbird-102.13.0+build1/browser/components/search/test/unit/test_urlTelemetry.js --- thunderbird-102.11.0+build1/browser/components/search/test/unit/test_urlTelemetry.js 2023-05-04 05:45:20.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/components/search/test/unit/test_urlTelemetry.js 2023-07-05 05:43:53.000000000 +0000 @@ -142,7 +142,7 @@ }, { title: "DuckDuckGo organic", - trackingUrl: "https://duckduckgo.com/?q=test&t=hi&ia=news", + trackingUrl: "https://duckduckgo.com/?q=test&t=other&ia=news", expectedSearchCountEntry: "duckduckgo.in-content:organic:other", expectedAdKey: "duckduckgo:organic", adUrls: ["https://duckduckgo.com/y.js?ad_provider=foo"], diff -Nru thunderbird-102.11.0+build1/browser/config/version_display.txt thunderbird-102.13.0+build1/browser/config/version_display.txt --- thunderbird-102.11.0+build1/browser/config/version_display.txt 2023-05-04 05:45:20.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/config/version_display.txt 2023-07-05 05:44:36.000000000 +0000 @@ -1 +1 @@ -102.11.0esr +102.13.0esr diff -Nru thunderbird-102.11.0+build1/browser/config/version.txt thunderbird-102.13.0+build1/browser/config/version.txt --- thunderbird-102.11.0+build1/browser/config/version.txt 2023-05-04 05:45:20.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/config/version.txt 2023-07-05 05:44:36.000000000 +0000 @@ -1 +1 @@ -102.11.0 +102.13.0 diff -Nru thunderbird-102.11.0+build1/browser/locales/en-US/browser/policies/policies-descriptions.ftl thunderbird-102.13.0+build1/browser/locales/en-US/browser/policies/policies-descriptions.ftl --- thunderbird-102.11.0+build1/browser/locales/en-US/browser/policies/policies-descriptions.ftl 2023-05-04 05:45:20.000000000 +0000 +++ thunderbird-102.13.0+build1/browser/locales/en-US/browser/policies/policies-descriptions.ftl 2023-07-05 05:43:53.000000000 +0000 @@ -191,8 +191,8 @@ policy-SearchSuggestEnabled = Enable or disable search suggestions. -# For more information, see https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/Module_Installation -policy-SecurityDevices = Install PKCS #11 modules. +# For more information, see https://wikipedia.org/wiki/PKCS_11 +policy-SecurityDevices2 = Add or delete PKCS #11 modules. policy-ShowHomeButton = Show the home button on the toolbar. diff -Nru thunderbird-102.11.0+build1/BUILDID thunderbird-102.13.0+build1/BUILDID --- thunderbird-102.11.0+build1/BUILDID 2023-05-04 05:53:23.000000000 +0000 +++ thunderbird-102.13.0+build1/BUILDID 2023-07-05 05:52:09.000000000 +0000 @@ -1 +1 @@ -20230503190012 \ No newline at end of file +20230704155023 \ No newline at end of file diff -Nru thunderbird-102.11.0+build1/Cargo.lock thunderbird-102.13.0+build1/Cargo.lock --- thunderbird-102.11.0+build1/Cargo.lock 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/Cargo.lock 2023-07-05 05:43:52.000000000 +0000 @@ -394,8 +394,6 @@ [[package]] name = "bindgen" version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" dependencies = [ "bitflags", "cexpr", @@ -1082,10 +1080,23 @@ ] [[package]] +name = "crypto_hash" +version = "0.1.0" +dependencies = [ + "base64 0.10.1", + "digest", + "libc", + "md-5", + "nserror", + "nsstring", + "sha1", + "sha2", + "xpcom", +] + +[[package]] name = "cssparser" version = "0.29.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" dependencies = [ "cssparser-macros", "dtoa-short", @@ -1101,8 +1112,6 @@ [[package]] name = "cssparser-macros" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" dependencies = [ "quote", "syn", @@ -1333,9 +1342,9 @@ [[package]] name = "digest" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -2048,6 +2057,7 @@ "cert_storage", "chardetng_c", "cose-c", + "crypto_hash", "cubeb-coreaudio", "cubeb-pulse", "cubeb-sys", @@ -3064,6 +3074,15 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest", +] + +[[package]] name = "mdns_service" version = "0.1.0" dependencies = [ @@ -3409,7 +3428,6 @@ [[package]] name = "mp4parse" version = "0.13.0" -source = "git+https://github.com/mozilla/mp4parse-rust?rev=3bfc47d9a571d0842676043ba60716318e946c06#3bfc47d9a571d0842676043ba60716318e946c06" dependencies = [ "bitreader", "byteorder", @@ -4739,6 +4757,17 @@ dependencies = [ "cfg-if 1.0.0", "cpufeatures", + "digest", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", "digest", ] diff -Nru thunderbird-102.11.0+build1/Cargo.toml thunderbird-102.13.0+build1/Cargo.toml --- thunderbird-102.11.0+build1/Cargo.toml 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/Cargo.toml 2023-07-05 05:43:52.000000000 +0000 @@ -106,6 +106,13 @@ # Overrides to allow easier use of common internal crates. moz_asserts = { path = "mozglue/static/rust/moz_asserts" } +# cherry-pick of LLVM16 fixes. +cssparser = { path = "third_party/rust/cssparser" } +cssparser-macros = { path = "third_party/rust/cssparser-macros" } + +# Patch bindgen to work around issues with some unsound transmutes when compiling with LLVM 16+. +bindgen = { path = "third_party/rust/bindgen" } + # Other overrides async-task = { git = "https://github.com/smol-rs/async-task", rev="f6488e35beccb26eb6e85847b02aa78a42cd3d0e" } chardetng = { git = "https://github.com/hsivonen/chardetng", rev="3484d3e3ebdc8931493aa5df4d7ee9360a90e76b" } @@ -125,3 +132,6 @@ # Patch fallible_collections for issues with rustc 1.65. [patch.crates-io.fallible_collections] path = "third_party/rust/fallible_collections" + +[patch."https://github.com/mozilla/mp4parse-rust"] +mp4parse = { path = "third_party/rust/mp4parse" } diff -Nru thunderbird-102.11.0+build1/CLOBBER thunderbird-102.13.0+build1/CLOBBER --- thunderbird-102.11.0+build1/CLOBBER 2023-05-04 05:45:19.000000000 +0000 +++ thunderbird-102.13.0+build1/CLOBBER 2023-07-05 05:44:36.000000000 +0000 @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Merge day clobber 2023-04-10 \ No newline at end of file +Merge day clobber 2023-06-05 \ No newline at end of file diff -Nru thunderbird-102.11.0+build1/comm/.gecko_rev.yml thunderbird-102.13.0+build1/comm/.gecko_rev.yml --- thunderbird-102.11.0+build1/comm/.gecko_rev.yml 2023-05-04 05:46:19.000000000 +0000 +++ thunderbird-102.13.0+build1/comm/.gecko_rev.yml 2023-07-05 05:44:52.000000000 +0000 @@ -1,8 +1,8 @@ --- GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-esr102 -GECKO_HEAD_REF: FIREFOX_102_11_0esr_BUILD1 -GECKO_HEAD_REV: 350c74fdc5e2ddd6d706908cf7a2e67ea90db887 +GECKO_HEAD_REF: FIREFOX_102_13_0esr_BUILD2 +GECKO_HEAD_REV: 3ba84f15ffa6092b5587de58f09dbc4240bcf8e2 ### For comm-central # GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified diff -Nru thunderbird-102.11.0+build1/comm/mail/app/profile/all-thunderbird.js thunderbird-102.13.0+build1/comm/mail/app/profile/all-thunderbird.js --- thunderbird-102.11.0+build1/comm/mail/app/profile/all-thunderbird.js 2023-05-04 05:46:19.000000000 +0000 +++ thunderbird-102.13.0+build1/comm/mail/app/profile/all-thunderbird.js 2023-07-05 05:44:52.000000000 +0000 @@ -1342,3 +1342,9 @@ pref("app.donation.eoy.version.viewed", 0); pref("app.donation.eoy.url", "https://www.thunderbird.net/thunderbird/102.0/eoy/"); +// Beta appeal +pref("app.beta_appeal.version", 1); +pref("app.beta_appeal.version.viewed", 0); +pref("app.beta_appeal.url", "https://www.thunderbird.net/thunderbird/102.0/beta-appeal/?locale=%LOCALE%&version=%VERSION%&channel=%CHANNEL%&os=%OS%&buildid=%APPBUILDID%"); +// June 21st expiry. +pref("app.beta_appeal.expiry", 1687323600); diff -Nru thunderbird-102.11.0+build1/comm/mail/base/content/aboutDialog.xhtml thunderbird-102.13.0+build1/comm/mail/base/content/aboutDialog.xhtml --- thunderbird-102.11.0+build1/comm/mail/base/content/aboutDialog.xhtml 2023-05-04 05:46:19.000000000 +0000 +++ thunderbird-102.13.0+build1/comm/mail/base/content/aboutDialog.xhtml 2023-07-05 05:44:52.000000000 +0000 @@ -46,7 +46,10 @@ #expand - +