mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
95 lines
3.8 KiB
JavaScript
95 lines
3.8 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
/* Tests:
|
||
|
* verify that the visibleLabel attribute works
|
||
|
* verify the TabLabelModified event works for both existing and new tabs
|
||
|
*/
|
||
|
|
||
|
function test() {
|
||
|
waitForExplicitFinish();
|
||
|
registerCleanupFunction(function() {
|
||
|
gBrowser.removeCurrentTab({animate: false});
|
||
|
});
|
||
|
let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank",
|
||
|
{skipAnimation: true});
|
||
|
tab.linkedBrowser.addEventListener("load", function onLoad(event) {
|
||
|
event.currentTarget.removeEventListener("load", onLoad, true);
|
||
|
executeSoon(afterLoad);
|
||
|
}, true);
|
||
|
}
|
||
|
|
||
|
function afterLoad() {
|
||
|
let tab = gBrowser.selectedTab;
|
||
|
let xulLabel = document.getAnonymousElementByAttribute(tab, "anonid",
|
||
|
"tab-label");
|
||
|
// Verify we're starting out on the right foot
|
||
|
is(tab.label, "New Tab", "Initial tab label is default");
|
||
|
is(xulLabel.value, "New Tab", "Label element is default");
|
||
|
is(tab.visibleLabel, "New Tab", "visibleLabel is default");
|
||
|
|
||
|
// Check that a normal label setting works correctly
|
||
|
tab.label = "Hello, world!";
|
||
|
is(tab.label, "Hello, world!", "tab label attribute set via tab.label");
|
||
|
is(xulLabel.value, "Hello, world!", "xul:label set via tab.label");
|
||
|
is(tab.visibleLabel, "Hello, world!", "visibleLabel set via tab.label");
|
||
|
|
||
|
// Check that setting visibleLabel only affects the label element
|
||
|
tab.visibleLabel = "Goodnight, Irene";
|
||
|
is(tab.label, "Hello, world!", "Tab.label unaffected by visibleLabel setter");
|
||
|
is(xulLabel.value, "Goodnight, Irene",
|
||
|
"xul:label set by visibleLabel setter");
|
||
|
is(tab.visibleLabel, "Goodnight, Irene",
|
||
|
"visibleLabel attribute set by visibleLabel setter");
|
||
|
|
||
|
// Check that setting the label property hits everything
|
||
|
tab.label = "One more label";
|
||
|
is(tab.label, "One more label",
|
||
|
"Tab label set via label property after diverging from visibleLabel");
|
||
|
is(xulLabel.value, "One more label",
|
||
|
"xul:label set via label property after diverging from visibleLabel");
|
||
|
is(tab.visibleLabel, "One more label",
|
||
|
"visibleLabel set from label property after diverging from visibleLabel");
|
||
|
|
||
|
tab.addEventListener("TabLabelModified", overrideTabLabel, true);
|
||
|
tab.label = "This won't be the visibleLabel";
|
||
|
}
|
||
|
|
||
|
function overrideTabLabel(aEvent) {
|
||
|
aEvent.target.removeEventListener("TabLabelModified", overrideTabLabel, true);
|
||
|
aEvent.preventDefault();
|
||
|
aEvent.stopPropagation();
|
||
|
aEvent.target.visibleLabel = "Handler set this as the visible label";
|
||
|
executeSoon(checkTabLabelModified);
|
||
|
}
|
||
|
|
||
|
function checkTabLabelModified() {
|
||
|
let tab = gBrowser.selectedTab;
|
||
|
let xulLabel = document.getAnonymousElementByAttribute(tab, "anonid",
|
||
|
"tab-label");
|
||
|
|
||
|
is(tab.label, "This won't be the visibleLabel",
|
||
|
"Tab label set via label property that triggered event");
|
||
|
is(xulLabel.value, "Handler set this as the visible label",
|
||
|
"xul:label set by TabLabelModified handler");
|
||
|
is(tab.visibleLabel, "Handler set this as the visible label",
|
||
|
"visibleLabel set by TabLabelModified handler");
|
||
|
|
||
|
gBrowser.removeCurrentTab({animate: false});
|
||
|
executeSoon(checkTabLabelModifiedOnNewTab);
|
||
|
}
|
||
|
|
||
|
function checkTabLabelModifiedOnNewTab() {
|
||
|
gBrowser.tabContainer.addEventListener("TabLabelModified",
|
||
|
handleTabLabelModifiedOnNewTab, true);
|
||
|
let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank",
|
||
|
{skipAnimation: true});
|
||
|
}
|
||
|
|
||
|
function handleTabLabelModifiedOnNewTab(aEvent) {
|
||
|
gBrowser.tabContainer.removeEventListener("TabLabelModified",
|
||
|
handleTabLabelModifiedOnNewTab, true);
|
||
|
ok(true, "Event received from new tab default being set");
|
||
|
executeSoon(finish);
|
||
|
}
|