From a90a5cba08fdf6c0ceb95101c275108a152a3aed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 12 Jun 2024 07:35:37 +0200 Subject: Merging upstream version 127.0. Signed-off-by: Daniel Baumann --- .../content/test/tabs/browser_blank_tab_label.js | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 browser/base/content/test/tabs/browser_blank_tab_label.js (limited to 'browser/base/content/test/tabs/browser_blank_tab_label.js') diff --git a/browser/base/content/test/tabs/browser_blank_tab_label.js b/browser/base/content/test/tabs/browser_blank_tab_label.js new file mode 100644 index 0000000000..9fe5f6b1b0 --- /dev/null +++ b/browser/base/content/test/tabs/browser_blank_tab_label.js @@ -0,0 +1,49 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Ensure that we don't use an entirely-blank (non-printable) document title + * as the tab label. + */ +add_task(async function test_ensure_printable_label() { + const TEST_DOC = ` + + + +  &%23x0301;&%23x061C; + Is my title blank?`; + + let newTab; + function tabLabelChecker() { + Assert.stringMatches( + newTab.label, + /\p{L}|\p{N}|\p{P}|\p{S}/u, + "Tab label should contain printable character." + ); + } + let mutationObserver = new MutationObserver(tabLabelChecker); + registerCleanupFunction(() => mutationObserver.disconnect()); + + gBrowser.tabContainer.addEventListener( + "TabOpen", + event => { + newTab = event.target; + tabLabelChecker(); + mutationObserver.observe(newTab, { + attributeFilter: ["label"], + }); + }, + { once: true } + ); + + await BrowserTestUtils.withNewTab("data:text/html," + TEST_DOC, async () => { + // Wait another longer-than-tick to ensure more mutation observer things have + // come in. + await new Promise(executeSoon); + + // Check one last time for good measure, for the final label: + tabLabelChecker(); + }); +}); -- cgit v1.2.3