diff -Nru thunderbird-68.8.0+build2/browser/app/blocklist.xml thunderbird-68.10.0+build1/browser/app/blocklist.xml --- thunderbird-68.8.0+build2/browser/app/blocklist.xml 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/app/blocklist.xml 2020-07-01 08:51:20.000000000 +0000 @@ -1,5 +1,5 @@ - + @@ -116,7 +116,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -583,7 +583,7 @@ - + @@ -682,7 +682,7 @@ - + @@ -694,7 +694,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1099,7 +1099,7 @@ - + @@ -1279,7 +1279,7 @@ - + @@ -1379,7 +1379,7 @@ - + @@ -1399,12 +1399,12 @@ - + - + @@ -1484,7 +1484,7 @@ - + @@ -3681,10 +3681,6 @@ - - - - @@ -3810,10 +3806,6 @@ - - - - @@ -3834,45 +3826,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + https://get.adobe.com/flashplayer/ - + - - + + https://get.adobe.com/flashplayer/ - + - + https://get.adobe.com/shockwave/ - + https://get.adobe.com/shockwave/ - + https://get.adobe.com/flashplayer/ - + https://get.adobe.com/flashplayer/ diff -Nru thunderbird-68.8.0+build2/browser/base/content/test/plugins/browser_enable_DRM_prompt.js thunderbird-68.10.0+build1/browser/base/content/test/plugins/browser_enable_DRM_prompt.js --- thunderbird-68.8.0+build2/browser/base/content/test/plugins/browser_enable_DRM_prompt.js 2020-05-07 16:09:43.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/base/content/test/plugins/browser_enable_DRM_prompt.js 2020-07-01 08:50:04.000000000 +0000 @@ -89,3 +89,55 @@ ); }); }); + +add_task(async function test_eme_locked() { + await BrowserTestUtils.withNewTab(TEST_URL, async function(browser) { + // Reset prefs manually since we need to unlock them. + let emeWasEnabled = Services.prefs.getBoolPref("media.eme.enabled", false); + + // Restore the preferences to their pre-test state on test finish. + registerCleanupFunction(function() { + Services.prefs.setBoolPref("media.eme.enabled", emeWasEnabled); + Services.prefs.unlockPref("media.eme.enabled"); + }); + + // Turn off EME and Widevine CDM. + Services.prefs.setBoolPref("media.eme.enabled", false); + Services.prefs.lockPref("media.eme.enabled"); + + // Have content request access to Widevine, UI should drop down to + // prompt user to enable DRM. + let result = await ContentTask.spawn(browser, null, async function() { + try { + let config = [ + { + initDataTypes: ["webm"], + videoCapabilities: [{ contentType: 'video/webm; codecs="vp9"' }], + }, + ]; + await content.navigator.requestMediaKeySystemAccess( + "com.widevine.alpha", + config + ); + } catch (ex) { + return { rejected: true }; + } + return { rejected: false }; + }); + is( + result.rejected, + true, + "EME request should be denied because EME disabled." + ); + + // Verify the UI prompt did not show. + let box = gBrowser.getNotificationBox(browser); + let notification = box.currentNotification; + + is( + notification, + null, + "Notification should not be displayed since pref is locked" + ); + }); +}); diff -Nru thunderbird-68.8.0+build2/browser/components/enterprisepolicies/Policies.jsm thunderbird-68.10.0+build1/browser/components/enterprisepolicies/Policies.jsm --- thunderbird-68.8.0+build2/browser/components/enterprisepolicies/Policies.jsm 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/components/enterprisepolicies/Policies.jsm 2020-07-01 08:51:20.000000000 +0000 @@ -155,6 +155,13 @@ ); } } + if ("PrivateBrowsing" in param) { + setDefaultPref( + "network.auth.private-browsing-sso", + param.PrivateBrowsing, + locked + ); + } }, }, @@ -746,6 +753,18 @@ } }, }, + + EncryptedMediaExtensions: { + onBeforeAddons(manager, param) { + let locked = false; + if ("Locked" in param) { + locked = param.Locked; + } + if ("Enabled" in param) { + setDefaultPref("media.eme.enabled", param.Enabled, locked); + } + }, + }, Extensions: { onBeforeUIStartup(manager, param) { diff -Nru thunderbird-68.8.0+build2/browser/components/enterprisepolicies/schemas/policies-schema.json thunderbird-68.10.0+build1/browser/components/enterprisepolicies/schemas/policies-schema.json --- thunderbird-68.8.0+build2/browser/components/enterprisepolicies/schemas/policies-schema.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/components/enterprisepolicies/schemas/policies-schema.json 2020-07-01 08:51:20.000000000 +0000 @@ -72,6 +72,9 @@ }, "Locked": { "type": "boolean" + }, + "PrivateBrowsing": { + "type": "boolean" } } }, @@ -383,6 +386,18 @@ } } }, + + "EncryptedMediaExtensions": { + "type": "object", + "properties": { + "Enabled": { + "type": "boolean" + }, + "Locked": { + "type": "boolean" + } + } + }, "Extensions": { "type": "object", diff -Nru thunderbird-68.8.0+build2/browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js thunderbird-68.10.0+build1/browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js --- thunderbird-68.8.0+build2/browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js 2020-07-01 08:51:20.000000000 +0000 @@ -125,6 +125,7 @@ SPNEGO: false, NTLM: false, }, + PrivateBrowsing: true, }, }, lockedPrefs: { @@ -135,6 +136,7 @@ "network.negotiate-auth.allow-non-fqdn": true, "network.automatic-ntlm-auth.allow-proxies": false, "network.negotiate-auth.allow-proxies": false, + "network.auth.private-browsing-sso": true, }, }, @@ -149,6 +151,7 @@ SPNEGO: true, NTLM: true, }, + PrivateBrowsing: true, Locked: false, }, }, @@ -158,6 +161,7 @@ "network.automatic-ntlm-auth.trusted-uris": "a.com, b.com", "network.automatic-ntlm-auth.allow-non-fqdn": true, "network.negotiate-auth.allow-non-fqdn": true, + "network.auth.private-browsing-sso": true, }, }, @@ -623,6 +627,20 @@ "media.autoplay.default": 5, }, }, + + // POLICY: EncryptedMediaExtensions + + { + policies: { + EncryptedMediaExtensions: { + Enabled: false, + Locked: true, + }, + }, + lockedPrefs: { + "media.eme.enabled": false, + }, + }, ]; add_task(async function test_policy_simple_prefs() { diff -Nru thunderbird-68.8.0+build2/browser/config/tooltool-manifests/win32/build-clang-cl.manifest thunderbird-68.10.0+build1/browser/config/tooltool-manifests/win32/build-clang-cl.manifest --- thunderbird-68.8.0+build2/browser/config/tooltool-manifests/win32/build-clang-cl.manifest 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/config/tooltool-manifests/win32/build-clang-cl.manifest 2020-07-01 08:50:05.000000000 +0000 @@ -8,11 +8,11 @@ "unpack": true }, { - "version": "SVN 1.9.4, repacked from SlikSvn (https://sliksvn.com/download/)", - "size": 3934520, - "digest": "d3b8f74936857ecbf542e403ed6835938a31d65302985729cbfa7191bf2cf94138565cefcc2f31517098013fbfc51868348863a55b588250902f9dec214dbc42", + "version": "MinGit-2.13.3-64-bit", + "size": 21482885, + "digest": "929bb3c07be8487ee519422a312bdbfeec8f4db4b62c49d02f9aad9fd2a66c0ee5fad63d2b06c8744c336dc9d50446fa4457897333ad17ffd783ecabd1e2ddbb", "algorithm": "sha512", - "filename": "svn194.zip", + "filename": "git.zip", "unpack": true }, { diff -Nru thunderbird-68.8.0+build2/browser/config/version_display.txt thunderbird-68.10.0+build1/browser/config/version_display.txt --- thunderbird-68.8.0+build2/browser/config/version_display.txt 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/config/version_display.txt 2020-07-01 08:51:20.000000000 +0000 @@ -1 +1 @@ -68.8.0esr +68.10.0esr diff -Nru thunderbird-68.8.0+build2/browser/config/version.txt thunderbird-68.10.0+build1/browser/config/version.txt --- thunderbird-68.8.0+build2/browser/config/version.txt 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/config/version.txt 2020-07-01 08:51:20.000000000 +0000 @@ -1 +1 @@ -68.8.0 +68.10.0 diff -Nru thunderbird-68.8.0+build2/browser/locales/en-US/browser/policies/policies-descriptions.ftl thunderbird-68.10.0+build1/browser/locales/en-US/browser/policies/policies-descriptions.ftl --- thunderbird-68.8.0+build2/browser/locales/en-US/browser/policies/policies-descriptions.ftl 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/browser/locales/en-US/browser/policies/policies-descriptions.ftl 2020-07-01 08:51:20.000000000 +0000 @@ -91,6 +91,9 @@ # “lock” means that the user won’t be able to change this setting policy-EnableTrackingProtection = Enable or disable Content Blocking and optionally lock it. +# “lock” means that the user won’t be able to change this setting +policy-EncryptedMediaExtensions = Enable or disable Encrypted Media Extensions and optionally lock it. + # A “locked” extension can’t be disabled or removed by the user. This policy # takes 3 keys (“Install”, ”Uninstall”, ”Locked”), you can either keep them in # English or translate them as verbs. diff -Nru thunderbird-68.8.0+build2/build/build-clang/build-clang.py thunderbird-68.10.0+build1/build/build-clang/build-clang.py --- thunderbird-68.8.0+build2/build/build-clang/build-clang.py 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/build-clang.py 2020-07-01 08:50:05.000000000 +0000 @@ -19,6 +19,8 @@ import which from distutils.dir_util import copy_tree +URL_REPO = "https://github.com/llvm/llvm-project" + def symlink(source, link_name): os_symlink = getattr(os, "symlink", None) @@ -75,7 +77,7 @@ clang_plugin_path = os.path.join(os.path.dirname(sys.argv[0]), '..', 'clang-plugin') clang_tidy_path = os.path.join(source_dir, - 'tools/clang/tools/extra/clang-tidy') + 'clang-tools-extra/clang-tidy') sys.path.append(clang_plugin_path) from import_mozilla_checks import do_import do_import(clang_plugin_path, clang_tidy_path) @@ -196,13 +198,14 @@ shutil.copy2(src_path[0], dst_path[0]) -def svn_co(source_dir, url, directory, revision): - run_in(source_dir, ["svn", "co", "-q", "-r", revision, url, directory]) +def git_clone(base_dir, url, directory, revision): + run_in(base_dir, ["git", "clone", "-n", url, directory]) + run_in(os.path.join(base_dir, directory), ["git", "checkout", revision]) -def svn_update(directory, revision): - run_in(directory, ["svn", "revert", "-q", "-R", "."]) - run_in(directory, ["svn", "update", "-q", "-r", revision]) +def git_update(directory, revision): + run_in(directory, ["git", "remote", "update"]) + run_in(directory, ["git", "reset", "--hard", revision]) def is_darwin(): @@ -580,8 +583,8 @@ os.sys.exit(0) llvm_source_dir = source_dir + "/llvm" + extra_source_dir = source_dir + "/clang-tools-extra" clang_source_dir = source_dir + "/clang" - extra_source_dir = source_dir + "/extra" lld_source_dir = source_dir + "/lld" compiler_rt_source_dir = source_dir + "/compiler-rt" libcxx_source_dir = source_dir + "/libcxx" @@ -603,14 +606,8 @@ config = json.load(args.config) llvm_revision = config["llvm_revision"] - llvm_repo = config["llvm_repo"] - clang_repo = config["clang_repo"] - extra_repo = config.get("extra_repo") - lld_repo = config.get("lld_repo") - # On some packages we don't use compiler_repo - compiler_repo = config.get("compiler_repo") - libcxx_repo = config["libcxx_repo"] - libcxxabi_repo = config.get("libcxxabi_repo") + if not re.match(r'^[0-9a-fA-F]{40}$', llvm_revision): + raise ValueError("Incorrect format of the git revision") stages = 3 if "stages" in config: stages = int(config["stages"]) @@ -684,26 +681,15 @@ if not os.path.exists(source_dir): os.makedirs(source_dir) - def checkout_or_update(repo, checkout_dir): - if os.path.exists(checkout_dir): - svn_update(checkout_dir, llvm_revision) + if not args.skip_checkout: + if os.path.exists(os.path.join(source_dir, '.git')): + git_update(source_dir, llvm_revision) else: - svn_co(source_dir, repo, checkout_dir, llvm_revision) + delete(source_dir) + git_clone(base_dir, URL_REPO, source_dir, llvm_revision) - if not args.skip_checkout: - checkout_or_update(llvm_repo, llvm_source_dir) - checkout_or_update(clang_repo, clang_source_dir) - if compiler_repo is not None: - checkout_or_update(compiler_repo, compiler_rt_source_dir) - checkout_or_update(libcxx_repo, libcxx_source_dir) - if lld_repo: - checkout_or_update(lld_repo, lld_source_dir) - if libcxxabi_repo: - checkout_or_update(libcxxabi_repo, libcxxabi_source_dir) - if extra_repo: - checkout_or_update(extra_repo, extra_source_dir) - for p in config.get("patches", []): - patch(p, source_dir) + for p in config.get("patches", []): + patch(p, source_dir) compiler_rt_source_link = llvm_source_dir + "/projects/compiler-rt" @@ -729,7 +715,7 @@ package_name = "clang" if build_clang_tidy: package_name = "clang-tidy" - import_clang_tidy(llvm_source_dir) + import_clang_tidy(source_dir) if not os.path.exists(build_dir): os.makedirs(build_dir) diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-4.0-linux64.json thunderbird-68.10.0+build1/build/build-clang/clang-4.0-linux64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-4.0-linux64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-4.0-linux64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,14 +1,9 @@ { - "llvm_revision": "305830", + "llvm_revision": "449c3ef93afc7a668eb35e67a83717453e28b25a", "stages": "3", "build_libcxx": true, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_401/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_401/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_401/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_401/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_401/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-7-linux64.json thunderbird-68.10.0+build1/build/build-clang/clang-7-linux64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-7-linux64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-7-linux64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,9 @@ { - "llvm_revision": "349247", + "llvm_revision": "d0d8eb2e5415b8be29343e3c17a18e49e67b5551", "stages": "3", "build_libcxx": true, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_701/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_701/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_701/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_701/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_701/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_701/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-8-android.json thunderbird-68.10.0+build1/build/build-clang/clang-8-android.json --- thunderbird-68.8.0+build2/build/build-clang/clang-8-android.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-8-android.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,9 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "2", "build_libcxx": true, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-8-linux64-aarch64-cross.json thunderbird-68.10.0+build1/build/build-clang/clang-8-linux64-aarch64-cross.json --- thunderbird-68.8.0+build2/build/build-clang/clang-8-linux64-aarch64-cross.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-8-linux64-aarch64-cross.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,9 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "3", "build_libcxx": true, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-8-linux64.json thunderbird-68.10.0+build1/build/build-clang/clang-8-linux64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-8-linux64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-8-linux64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,9 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "3", "build_libcxx": true, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-8-macosx64.json thunderbird-68.10.0+build1/build/build-clang/clang-8-macosx64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-8-macosx64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-8-macosx64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,16 +1,10 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "1", "build_libcxx": true, "build_type": "Release", "assertions": false, "osx_cross_compile": true, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/clang/bin/clang", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-8-mingw.json thunderbird-68.10.0+build1/build/build-clang/clang-8-mingw.json --- thunderbird-68.8.0+build2/build/build-clang/clang-8-mingw.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-8-mingw.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,9 @@ { - "llvm_revision": "356265", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "3", "build_libcxx": true, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-tidy-8.patch thunderbird-68.10.0+build1/build/build-clang/clang-tidy-8.patch --- thunderbird-68.8.0+build2/build/build-clang/clang-tidy-8.patch 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-tidy-8.patch 2020-07-01 08:50:05.000000000 +0000 @@ -1,5 +1,5 @@ ---- a/extra/clang-tidy/tool/run-clang-tidy.py 2019-03-27 15:12:48.000000000 +0200 -+++ b/extra/clang-tidy/tool/run-clang-tidy.py 2019-03-27 15:12:39.000000000 +0200 +--- a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py 2019-03-27 15:12:48.000000000 +0200 ++++ b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py 2019-03-27 15:12:39.000000000 +0200 @@ -169,6 +169,7 @@ with lock: sys.stdout.write(' '.join(invocation) + '\n' + output.decode('utf-8') + '\n') diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-tidy-linux64.json thunderbird-68.10.0+build1/build/build-clang/clang-tidy-linux64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-tidy-linux64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-tidy-linux64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,10 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "1", "build_libcxx": true, "build_type": "Release", "assertions": false, "build_clang_tidy": true, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final/", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final/", - "extra_repo": "https://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_800/final/", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final/", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final/", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/gcc/bin/gcc", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-tidy-macosx64.json thunderbird-68.10.0+build1/build/build-clang/clang-tidy-macosx64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-tidy-macosx64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-tidy-macosx64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,16 +1,11 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "1", "build_libcxx": true, "build_type": "Release", "assertions": false, "build_clang_tidy": true, "osx_cross_compile": true, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "extra_repo": "https://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", - "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_800/final", "python_path": "/usr/bin/python2.7", "gcc_dir": "/builds/worker/workspace/build/src/gcc", "cc": "/builds/worker/workspace/build/src/clang/bin/clang", @@ -21,6 +16,7 @@ "libtool": "/builds/worker/workspace/build/src/cctools/bin/x86_64-darwin11-libtool", "ld": "/builds/worker/workspace/build/src/clang/bin/clang", "patches": [ - "clang-tidy-8.patch" + "clang-tidy-8.patch", + "compiler-rt-no-codesign.patch" ] } diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-tidy-win64.json thunderbird-68.10.0+build1/build/build-clang/clang-tidy-win64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-tidy-win64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-tidy-win64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,15 +1,10 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "1", "build_libcxx": false, "build_type": "Release", "assertions": false, "build_clang_tidy": true, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "extra_repo": "https://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", "python_path": "c:/mozilla-build/python/python.exe", "cc": "cl.exe", "cxx": "cl.exe", diff -Nru thunderbird-68.8.0+build2/build/build-clang/clang-win64.json thunderbird-68.10.0+build1/build/build-clang/clang-win64.json --- thunderbird-68.8.0+build2/build/build-clang/clang-win64.json 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/build-clang/clang-win64.json 2020-07-01 08:50:05.000000000 +0000 @@ -1,14 +1,9 @@ { - "llvm_revision": "356365", + "llvm_revision": "d2298e74235598f15594fe2c99bbac870a507c59", "stages": "3", "build_libcxx": false, "build_type": "Release", "assertions": false, - "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_800/final", - "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_800/final", - "lld_repo": "https://llvm.org/svn/llvm-project/lld/tags/RELEASE_800/final", - "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_800/final", - "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_800/final", "python_path": "c:/mozilla-build/python/python.exe", "cc": "cl.exe", "cxx": "cl.exe", diff -Nru thunderbird-68.8.0+build2/build/clang-plugin/import_mozilla_checks.py thunderbird-68.10.0+build1/build/clang-plugin/import_mozilla_checks.py --- thunderbird-68.8.0+build2/build/clang-plugin/import_mozilla_checks.py 2020-05-07 16:11:27.000000000 +0000 +++ thunderbird-68.10.0+build1/build/clang-plugin/import_mozilla_checks.py 2020-07-01 08:50:05.000000000 +0000 @@ -104,8 +104,11 @@ def do_import(mozilla_path, clang_tidy_path): module = 'mozilla' module_path = os.path.join(clang_tidy_path, module) - if not os.path.isdir(module_path): - os.mkdir(module_path) + try: + os.makedirs(module_path) + except OSError as e: + if e.errno != errno.EEXIST: + raise copy_dir_contents(mozilla_path, module_path) write_third_party_paths(mozilla_path, module_path) diff -Nru thunderbird-68.8.0+build2/build/moz.configure/init.configure thunderbird-68.10.0+build1/build/moz.configure/init.configure --- thunderbird-68.8.0+build2/build/moz.configure/init.configure 2020-05-07 16:09:45.000000000 +0000 +++ thunderbird-68.10.0+build1/build/moz.configure/init.configure 2020-07-01 08:50:05.000000000 +0000 @@ -630,16 +630,17 @@ @imports(_from='__builtin__', _import='ValueError') def split_triplet(triplet, allow_unknown=False): # The standard triplet is defined as - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM + # CPU_TYPE-VENDOR-OPERATING_SYSTEM # There is also a quartet form: - # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + # CPU_TYPE-VENDOR-KERNEL-OPERATING_SYSTEM # But we can consider the "KERNEL-OPERATING_SYSTEM" as one. - # Additionally, some may omit "unknown" when the manufacturer + # Additionally, some may omit "unknown" when the vendor # is not specified and emit # CPU_TYPE-OPERATING_SYSTEM + vendor = 'unknown' parts = triplet.split('-', 2) if len(parts) == 3: - cpu, _, os = parts + cpu, vendor, os = parts elif len(parts) == 2: cpu, os = parts else: @@ -762,6 +763,7 @@ # Toolchains, most notably for cross compilation may use cpu-os # prefixes. toolchain='%s-%s' % (cpu, os), + vendor=vendor, ) diff -Nru thunderbird-68.8.0+build2/build/moz.configure/rust.configure thunderbird-68.10.0+build1/build/moz.configure/rust.configure --- thunderbird-68.8.0+build2/build/moz.configure/rust.configure 2020-05-07 16:09:45.000000000 +0000 +++ thunderbird-68.10.0+build1/build/moz.configure/rust.configure 2020-07-01 08:50:05.000000000 +0000 @@ -185,37 +185,30 @@ @depends(rustc, when=rust_compiler) +@imports(_from='__builtin__', _import='ValueError') def rust_supported_targets(rustc): out = check_cmd_output(rustc, '--print', 'target-list').splitlines() - # The os in the triplets used by rust may match the same OSes, in which - # case we need to check the raw_os instead. - per_os = {} - ambiguous = set() - per_raw_os = {} + data = {} for t in out: - t = split_triplet(t, allow_unknown=True) - endianness = t.endianness - if t.cpu.startswith('thumb') and endianness not in ('big', 'little'): - endianness = 'little' - key = (t.cpu, endianness, t.os) - if key in per_os: - previous = per_os[key] - per_raw_os[(previous.cpu, previous.endianness, - previous.raw_os)] = previous - del per_os[key] - ambiguous.add(key) - if key in ambiguous: - raw_os = t.raw_os - # split_triplet will return a raw_os of 'androideabi' for - # rust targets in the form cpu-linux-androideabi, but what - # we get from the build system is linux-androideabi, so - # normalize. - if raw_os == 'androideabi': - raw_os = 'linux-androideabi' - per_raw_os[(t.cpu, endianness, raw_os)] = t - else: - per_os[key] = t - return namespace(per_os=per_os, per_raw_os=per_raw_os) + try: + info = split_triplet(t) + except ValueError: + if t.startswith('thumb'): + cpu, rest = t.split('-', 1) + retry = '-'.join(('arm', rest)) + elif t.endswith('-windows-msvc'): + retry = t[:-len('windows-msvc')] + 'mingw32' + elif t.endswith('-windows-gnu'): + retry = t[:-len('windows-gnu')] + 'mingw32' + else: + continue + try: + info = split_triplet(retry) + except ValueError: + continue + key = (info.cpu, info.endianness, info.os) + data.setdefault(key, []).append(namespace(rust_target=t, target=info)) + return data @template @@ -248,33 +241,111 @@ # munging to get the correct option to rustc. # We correlate the autoconf-derived targets with the list of targets # rustc gives us with --print target-list. - if host_or_target.kernel == 'WINNT': - if compiler_info.type in ('gcc', 'clang'): - host_or_target_os = 'windows-gnu' - else: - host_or_target_os = 'windows-msvc' - host_or_target_raw_os = host_or_target_os - else: - host_or_target_os = host_or_target.os - host_or_target_raw_os = host_or_target.raw_os - - if host_or_target.cpu == 'arm' and arm_target.arm_arch == 7 and \ - arm_target.fpu == 'neon' and arm_target.thumb2: - host_or_target_cpus = ('thumbv7neon', host_or_target.cpu) - else: - host_or_target_cpus = (host_or_target.cpu,) - - for host_or_target_cpu in host_or_target_cpus: - rustc_target = rust_supported_targets.per_os.get( - (host_or_target_cpu, host_or_target.endianness, host_or_target_os)) - if rustc_target: - break - - rustc_target = rust_supported_targets.per_raw_os.get( - (host_or_target_cpu, host_or_target.endianness, - host_or_target_raw_os)) - if rustc_target: - break + candidates = rust_supported_targets.get( + (host_or_target.cpu, host_or_target.endianness, host_or_target.os), []) + + def find_candidate(candidates): + if len(candidates) == 1: + return candidates[0].rust_target + elif not candidates: + return None + + # We have multiple candidates. There are two cases where we can try to + # narrow further down using extra information from the build system. + # - For windows targets, correlate with the C compiler type + if host_or_target.kernel == 'WINNT': + if compiler_info.type in ('gcc', 'clang'): + suffix = 'windows-gnu' + else: + suffix = 'windows-msvc' + narrowed = [c for c in candidates if c.rust_target.endswith('-{}'.format(suffix))] + if len(narrowed) == 1: + return narrowed[0].rust_target + elif narrowed: + candidates = narrowed + + vendor_aliases = {'pc': ('w64', 'windows')} + narrowed = [c for c in candidates + if host_or_target.vendor in vendor_aliases.get(c.target.vendor, ())] + + if len(narrowed) == 1: + return narrowed[0].rust_target + + # - For arm targets, correlate with arm_target + # we could be more thorough with the supported rust targets, but they + # don't support OSes that are supported to build Gecko anyways. + # Also, sadly, the only interface to check the rust target cpu features + # is --print target-spec-json, and it's unstable, so we have to rely on + # our own knowledge of what each arm target means. + if host_or_target.cpu == 'arm' and host_or_target.endianness == 'little': + prefixes = [] + if arm_target.arm_arch >= 7: + if arm_target.thumb2 and arm_target.fpu == 'neon': + prefixes.append('thumbv7neon') + if arm_target.thumb2: + prefixes.append('thumbv7a') + prefixes.append('armv7') + if arm_target.arm_arch >= 6: + prefixes.append('armv6') + if host_or_target.os != 'Android': + # arm-* rust targets are armv6... except arm-linux-androideabi + prefixes.append('arm') + if arm_target.arm_arch >= 5: + prefixes.append('armv5te') + if host_or_target.os == 'Android': + # arm-* rust targets are armv6... except arm-linux-androideabi + prefixes.append('arm') + if arm_target.arm_arch >= 4: + prefixes.append('armv4t') + # rust freebsd targets are the only ones that don't have a 'hf' suffix + # for hard-float. Technically, that means if the float abi ever is not + # hard-float, this will pick a wrong target, but since rust only + # supports hard-float, let's assume that means freebsd only support + # hard-float. + if arm_target.float_abi == 'hard' and host_or_target.os != 'FreeBSD': + suffix = 'hf' + else: + suffix = '' + for p in prefixes: + for c in candidates: + if c.rust_target.startswith('{}-'.format(p)) and \ + c.rust_target.endswith(suffix): + return c.rust_target + + # See if we can narrow down on the exact alias + narrowed = [c for c in candidates if c.target.alias == host_or_target.alias] + if len(narrowed) == 1: + return narrowed[0].rust_target + elif narrowed: + candidates = narrowed + + # See if we can narrow down with the raw OS + narrowed = [c for c in candidates if c.target.raw_os == host_or_target.raw_os] + if len(narrowed) == 1: + return narrowed[0].rust_target + elif narrowed: + candidates = narrowed + + # See if we can narrow down with the raw OS and raw CPU + narrowed = [ + c for c in candidates + if c.target.raw_os == host_or_target.raw_os and + c.target.raw_cpu == host_or_target.raw_cpu + ] + if len(narrowed) == 1: + return narrowed[0].rust_target + + # Finally, see if the vendor can be used to disambiguate. + narrowed = [ + c for c in candidates + if c.target.vendor == host_or_target.vendor + ] + if len(narrowed) == 1: + return narrowed[0].rust_target + + return None + + rustc_target = find_candidate(candidates) if rustc_target is None: die("Don't know how to translate {} for rustc".format( @@ -282,7 +353,7 @@ # Check to see whether our rustc has a reasonably functional stdlib # for our chosen target. - target_arg = '--target=' + rustc_target.alias + target_arg = '--target=' + rustc_target in_fd, in_path = mkstemp(prefix='conftest', suffix='.rs') out_fd, out_path = mkstemp(prefix='conftest', suffix='.rlib') os.close(out_fd) @@ -310,7 +381,7 @@ a rust std library for that target installed. Try: rustup target add {} - '''.format(host_or_target.alias, rustc, rustc_target.alias))) + '''.format(host_or_target.alias, rustc, rustc_target))) check_cmd_output(*cmd, onerror=failed) if not os.path.exists(out_path) or os.path.getsize(out_path) == 0: failed() @@ -319,7 +390,7 @@ os.remove(out_path) # This target is usable. - return rustc_target.alias + return rustc_target return rust_target diff -Nru thunderbird-68.8.0+build2/BUILDID thunderbird-68.10.0+build1/BUILDID --- thunderbird-68.8.0+build2/BUILDID 2020-05-07 16:50:04.000000000 +0000 +++ thunderbird-68.10.0+build1/BUILDID 2020-07-01 08:58:44.000000000 +0000 @@ -1 +1 @@ -20200504155042 \ No newline at end of file +20200629235513 \ No newline at end of file diff -Nru thunderbird-68.8.0+build2/comm/calendar/base/content/calendar-month-base-view.js thunderbird-68.10.0+build1/comm/calendar/base/content/calendar-month-base-view.js --- thunderbird-68.8.0+build2/comm/calendar/base/content/calendar-month-base-view.js 2020-05-07 16:12:07.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/calendar/base/content/calendar-month-base-view.js 2020-07-01 08:51:56.000000000 +0000 @@ -253,9 +253,8 @@ this.setDateRange(date.startOfMonth, date.endOfMonth); this.selectedDay = date; } else { - this.refresh(); // Refresh the selected day if it doesn't appear in the view. - this.selectedDay = this.selectedDay; + this.refresh(); } } diff -Nru thunderbird-68.8.0+build2/comm/calendar/base/content/today-pane.js thunderbird-68.10.0+build1/comm/calendar/base/content/today-pane.js --- thunderbird-68.8.0+build2/comm/calendar/base/content/today-pane.js 2020-05-07 16:12:07.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/calendar/base/content/today-pane.js 2020-07-01 08:51:56.000000000 +0000 @@ -27,9 +27,16 @@ }, /** + * Wrapper function to collect the Promise returned by _onLoad. + */ + onLoad() { + this.loadPromise = this._onLoad(); + }, + + /** * Load Handler, sets up the today pane controls. */ - onLoad: async function() { + _onLoad: async function() { let agendaPanel = document.getElementById("agenda-panel"); if (!("isVisible" in agendaPanel)) { // Wait for this XBL binding to load before doing anything. @@ -85,7 +92,9 @@ * Sets up the label for the switcher that allows switching between today pane * views. (event+task, task only, event only) */ - updateDisplay: function() { + updateDisplay: async function() { + await this.loadPromise; + let agendaPanel = document.getElementById("agenda-panel"); let currentMode = document.getElementById("modeBroadcaster").getAttribute("mode"); let agendaIsVisible = agendaPanel.isVisible(currentMode); @@ -458,13 +467,13 @@ * * @param aEvent The DOM event occurring on attribute modification. */ - onModeModified: function(aEvent) { + onModeModified: async function(aEvent) { if (aEvent.attrName == "mode") { let todaypane = document.getElementById("today-pane-panel"); // Store the previous mode panel's width. todaypane.setModeAttribute("modewidths", todaypane.width, TodayPane.previousMode); - TodayPane.updateDisplay(); + await TodayPane.updateDisplay(); TodayPane.updateSplitterState(); todaypane.width = todaypane.getModeAttribute("modewidths", "width"); TodayPane.previousMode = document.getElementById("modeBroadcaster").getAttribute("mode"); @@ -480,9 +489,9 @@ * * @param aEvent The DOM event occurring on activated command. */ - toggleVisibility: function(aEvent) { + toggleVisibility: async function(aEvent) { document.getElementById("today-pane-panel").togglePane(aEvent); - TodayPane.updateDisplay(); + await TodayPane.updateDisplay(); TodayPane.updateSplitterState(); }, diff -Nru thunderbird-68.8.0+build2/comm/calendar/base/src/calFilter.js thunderbird-68.10.0+build1/comm/calendar/base/src/calFilter.js --- thunderbird-68.8.0+build2/comm/calendar/base/src/calFilter.js 2020-05-07 16:12:07.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/calendar/base/src/calFilter.js 2020-07-01 08:51:56.000000000 +0000 @@ -798,7 +798,6 @@ if (this.isItemInFilters(next)) { return next; } - next.QueryInterface(Ci.calIEvent); start = next.startDate || next.entryDate; } @@ -811,7 +810,6 @@ let exMatch = null; aItem.recurrenceInfo.getExceptionIds({}).forEach(function(rID) { let ex = aItem.recurrenceInfo.getExceptionFor(rID); - ex.QueryInterface(Ci.calIEvent); if ( ex && cal.dtz.now().compare(ex.startDate || ex.entryDate) < 0 && diff -Nru thunderbird-68.8.0+build2/comm/chat/modules/jsProtoHelper.jsm thunderbird-68.10.0+build1/comm/chat/modules/jsProtoHelper.jsm --- thunderbird-68.8.0+build2/comm/chat/modules/jsProtoHelper.jsm 2020-05-07 16:12:07.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/chat/modules/jsProtoHelper.jsm 2020-07-01 08:51:56.000000000 +0000 @@ -31,6 +31,11 @@ l10nHelper("chrome://chat/locale/conversations.properties") ); +XPCOMUtils.defineLazyGetter(this, "TXTToHTML", function() { + let cs = Cc["@mozilla.org/txttohtmlconv;1"].getService(Ci.mozITXTToHTMLConv); + return aTXT => cs.scanTXT(aTXT, cs.kEntities); +}); + var GenericAccountPrototype = { __proto__: ClassInfo("prplIAccount", "generic account object"), get wrappedJSObject() { @@ -765,6 +770,15 @@ get topicSetter() { return this._topicSetter; }, + /** + * Set the topic of a conversation. + * + * @param {string} aTopic - The new topic. If an update message is sent to + * the conversation, this will be HTML escaped before being sent. + * @param {string} aTopicSetter - The user who last modified the topic. + * @param {string} aQuiet - If false, a message notifying about the topic + * change will be sent to the conversation. + */ setTopic(aTopic, aTopicSetter, aQuiet) { // Only change the topic if the topic and/or topic setter has changed. if ( @@ -787,14 +801,14 @@ let message; if (aTopicSetter) { if (aTopic) { - message = _("topicChanged", aTopicSetter, aTopic); + message = _("topicChanged", aTopicSetter, TXTToHTML(aTopic)); } else { message = _("topicCleared", aTopicSetter); } } else { aTopicSetter = null; if (aTopic) { - message = _("topicSet", this.name, aTopic); + message = _("topicSet", this.name, TXTToHTML(aTopic)); } else { message = _("topicNotSet", this.name); } diff -Nru thunderbird-68.8.0+build2/comm/.gecko_rev.yml thunderbird-68.10.0+build1/comm/.gecko_rev.yml --- thunderbird-68.8.0+build2/comm/.gecko_rev.yml 2020-05-07 16:12:07.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/.gecko_rev.yml 2020-07-01 08:51:56.000000000 +0000 @@ -2,7 +2,7 @@ GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-esr68 GECKO_HEAD_REF: THUNDERBIRD_68_VERBRANCH -GECKO_HEAD_REV: f5234e82dc9b185cc278600ee0b87e5045523ccc +GECKO_HEAD_REV: e1113625c6d21988a22dab4b08662befa20ed732 ### For comm-central # GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified diff -Nru thunderbird-68.8.0+build2/comm/ldap/xpcom/src/nsLDAPConnection.cpp thunderbird-68.10.0+build1/comm/ldap/xpcom/src/nsLDAPConnection.cpp --- thunderbird-68.8.0+build2/comm/ldap/xpcom/src/nsLDAPConnection.cpp 2020-05-07 16:12:08.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/ldap/xpcom/src/nsLDAPConnection.cpp 2020-07-01 08:51:56.000000000 +0000 @@ -313,7 +313,7 @@ MutexAutoLock lock(mPendingOperationsMutex); mPendingOperations.Put((uint32_t)aOperationID, aOperation); MOZ_LOG(gLDAPLogModule, mozilla::LogLevel::Debug, - ("pending operation added; total pending operations now = %d", + ("Operation id=%d added (%d now pending)", aOperationID, mPendingOperations.Count())); } @@ -353,15 +353,11 @@ nsresult nsLDAPConnection::RemovePendingOperation(uint32_t aOperationID) { NS_ENSURE_TRUE(aOperationID > 0, NS_ERROR_UNEXPECTED); - MOZ_LOG(gLDAPLogModule, mozilla::LogLevel::Debug, - ("nsLDAPConnection::RemovePendingOperation(): operation removed")); - { MutexAutoLock lock(mPendingOperationsMutex); mPendingOperations.Remove(aOperationID); MOZ_LOG(gLDAPLogModule, mozilla::LogLevel::Debug, - ("nsLDAPConnection::RemovePendingOperation(): operation " - "removed; total pending operations now = %d", + ("Operation id=%d removed (%d now pending)", aOperationID, mPendingOperations.Count())); } @@ -630,9 +626,17 @@ case 0: // XXX do we need a timer? return thread->Dispatch(this, nsIEventTarget::DISPATCH_NORMAL); - case -1: - NS_ERROR("We don't know what went wrong with the ldap operation"); + case -1: { + int errCode; + ldap_get_option(mConnection->mConnectionHandle, LDAP_OPT_ERROR_NUMBER, + &errCode); + MOZ_LOG(gLDAPLogModule, mozilla::LogLevel::Error, + ("ldap_result() failed (on id=%d): %s", mOperationID, + ldap_err2string(errCode))); + // Remove operation from the Pending table. + mConnection->RemovePendingOperation((uint32_t)mOperationID); return NS_ERROR_FAILURE; + } case LDAP_RES_SEARCH_ENTRY: case LDAP_RES_SEARCH_REFERENCE: diff -Nru thunderbird-68.8.0+build2/comm/mail/base/content/messenger.xul thunderbird-68.10.0+build1/comm/mail/base/content/messenger.xul --- thunderbird-68.8.0+build2/comm/mail/base/content/messenger.xul 2020-05-07 16:12:08.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/mail/base/content/messenger.xul 2020-07-01 08:51:56.000000000 +0000 @@ -667,7 +667,10 @@ - diff -Nru thunderbird-68.8.0+build2/comm/mail/base/content/specialTabs.js thunderbird-68.10.0+build1/comm/mail/base/content/specialTabs.js --- thunderbird-68.8.0+build2/comm/mail/base/content/specialTabs.js 2020-05-07 16:12:08.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/mail/base/content/specialTabs.js 2020-07-01 08:51:56.000000000 +0000 @@ -110,7 +110,7 @@ if (aLocationURI && !aLocationURI.schemeIs("about")) { this.mTab.backButton.disabled = !this.mBrowser.canGoBack; this.mTab.forwardButton.disabled = !this.mBrowser.canGoForward; - this.mTab.urlbar.textContent = location; + this.mTab.urlbar.value = location; this.mTab.root.removeAttribute("collapsed"); } else { this.mTab.root.setAttribute("collapsed", "false"); @@ -871,8 +871,8 @@ aTab.browser.goForward() ); aTab.security = aTab.toolbar.querySelector(".contentTabSecurity"); - aTab.urlbar = aTab.toolbar.querySelector(".contentTabUrlbar"); - aTab.urlbar.textContent = aArgs.contentPage; + aTab.urlbar = aTab.toolbar.querySelector(".contentTabUrlbar > input"); + aTab.urlbar.value = aArgs.contentPage; ExtensionParent.apiManager.emit( "extension-browser-inserted", diff -Nru thunderbird-68.8.0+build2/comm/mail/components/accountcreation/content/emailWizard.js thunderbird-68.10.0+build1/comm/mail/components/accountcreation/content/emailWizard.js --- thunderbird-68.8.0+build2/comm/mail/components/accountcreation/content/emailWizard.js 2020-05-07 16:12:08.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/mail/components/accountcreation/content/emailWizard.js 2020-07-01 08:51:56.000000000 +0000 @@ -147,6 +147,85 @@ } } +/** + * Inline confirmation dialog + * Shows, below status area: + * + * Your question here + * [ Cancel ] [ OK ] + * + * @param {string} questionLabel - Text with the question. + * @param {string} okLabel - Text for OK/Yes button. + * @param {string} cancelLabel - Text for Cancel/No button. + * @param {function} okCallback - Called when the user clicks OK. + * @param {function(ex)} cancelCallback - Called when the user clicks Cancel + * or if you call `Abortable.cancel()`. + * @returns {Abortable} - If `Abortable.cancel()` is called, + * the dialog is closed and the `cancelCallback()` is called. + */ +function confirmDialog( + questionLabel, + okLabel, + cancelLabel, + okCallback, + cancelCallback +) { + e("confirmationQuestion").textContent = questionLabel; + let okButton = e("confirmationOKButton"); + let cancelButton = e("confirmationCancelButton"); + okButton.label = okLabel; + cancelButton.label = cancelLabel; + + // Disable UI we don't want in this state. + let statusAreaWasHidden = e("status_area").hidden; + let statusLineWasHidden = e("status-lines").hidden; + let cancelWasDisabled = e("cancel_button").disabled; + let stopWasDisabled = e("stop_button").disabled; + let manualConfigWasDisabled = e("manual-edit_button").disabled; + let nextWasDisabled = e("next_button").disabled; + + _hide("status_area"); + _hide("status-lines"); + _disable("cancel_button"); + _disable("stop_button"); + _disable("manual-edit_button"); + _disable("next_button"); + + _show("confirmationDialog"); + + function close() { + _hide("confirmationDialog"); + e("status_area").hidden = statusAreaWasHidden; + e("status-lines").hidden = statusLineWasHidden; + e("cancel_button").disabled = cancelWasDisabled; + e("stop_button").disabled = stopWasDisabled; + e("manual-edit_button").disabled = manualConfigWasDisabled; + e("next_button").disabled = nextWasDisabled; + } + okButton.addEventListener( + "command", + event => { + close(); + okCallback(); + }, + { once: true } + ); + cancelButton.addEventListener( + "command", + event => { + close(); + cancelCallback(new UserCancelledException()); + }, + { once: true } + ); + let abortable = new Abortable(); + abortable.cancel = ex => { + close(); + cancelCallback(ex); + }; + return abortable; +} + function EmailConfigWizard() { this._init(); } @@ -633,7 +712,8 @@ // all failed self._abortable = null; self.removeStatusLines(); - if (allErrors.some(e => e instanceof CancelledException)) { + if (e instanceof CancelledException) { + self.onStartOver(); return; } @@ -700,7 +780,9 @@ (e, allErrors) => { // Must call error callback in any case to stop the discover mode. let errorCallback = call.errorCallback(); - if (allErrors && allErrors.some(e => e.code == 401)) { + if (e instanceof CancelledException) { + errorCallback(e); + } else if (allErrors && allErrors.some(e => e.code == 401)) { // Auth failed. // Ask user for username. this.onStartOver(); @@ -1079,6 +1161,7 @@ setText("result_addon_intro", msg); let containerE = e("result_addon_install_rows"); + removeChildNodes(containerE); for (let addon of config.addons) { // Creates // diff -Nru thunderbird-68.8.0+build2/comm/mail/components/accountcreation/content/emailWizard.xul thunderbird-68.10.0+build1/comm/mail/components/accountcreation/content/emailWizard.xul --- thunderbird-68.8.0+build2/comm/mail/components/accountcreation/content/emailWizard.xul 2020-05-07 16:12:08.000000000 +0000 +++ thunderbird-68.10.0+build1/comm/mail/components/accountcreation/content/emailWizard.xul 2020-07-01 08:51:56.000000000 +0000 @@ -226,6 +226,14 @@ +