browser/base/content/test/general/browser_visibleLabel.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:e9826a4c3626
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 /* Tests:
5 * verify that the visibleLabel attribute works
6 * verify the TabLabelModified event works for both existing and new tabs
7 */
8
9 function test() {
10 waitForExplicitFinish();
11 registerCleanupFunction(function() {
12 gBrowser.removeCurrentTab({animate: false});
13 });
14 let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank",
15 {skipAnimation: true});
16 tab.linkedBrowser.addEventListener("load", function onLoad(event) {
17 event.currentTarget.removeEventListener("load", onLoad, true);
18 executeSoon(afterLoad);
19 }, true);
20 }
21
22 function afterLoad() {
23 let tab = gBrowser.selectedTab;
24 let xulLabel = document.getAnonymousElementByAttribute(tab, "anonid",
25 "tab-label");
26 // Verify we're starting out on the right foot
27 is(tab.label, "New Tab", "Initial tab label is default");
28 is(xulLabel.value, "New Tab", "Label element is default");
29 is(tab.visibleLabel, "New Tab", "visibleLabel is default");
30
31 // Check that a normal label setting works correctly
32 tab.label = "Hello, world!";
33 is(tab.label, "Hello, world!", "tab label attribute set via tab.label");
34 is(xulLabel.value, "Hello, world!", "xul:label set via tab.label");
35 is(tab.visibleLabel, "Hello, world!", "visibleLabel set via tab.label");
36
37 // Check that setting visibleLabel only affects the label element
38 tab.visibleLabel = "Goodnight, Irene";
39 is(tab.label, "Hello, world!", "Tab.label unaffected by visibleLabel setter");
40 is(xulLabel.value, "Goodnight, Irene",
41 "xul:label set by visibleLabel setter");
42 is(tab.visibleLabel, "Goodnight, Irene",
43 "visibleLabel attribute set by visibleLabel setter");
44
45 // Check that setting the label property hits everything
46 tab.label = "One more label";
47 is(tab.label, "One more label",
48 "Tab label set via label property after diverging from visibleLabel");
49 is(xulLabel.value, "One more label",
50 "xul:label set via label property after diverging from visibleLabel");
51 is(tab.visibleLabel, "One more label",
52 "visibleLabel set from label property after diverging from visibleLabel");
53
54 tab.addEventListener("TabLabelModified", overrideTabLabel, true);
55 tab.label = "This won't be the visibleLabel";
56 }
57
58 function overrideTabLabel(aEvent) {
59 aEvent.target.removeEventListener("TabLabelModified", overrideTabLabel, true);
60 aEvent.preventDefault();
61 aEvent.stopPropagation();
62 aEvent.target.visibleLabel = "Handler set this as the visible label";
63 executeSoon(checkTabLabelModified);
64 }
65
66 function checkTabLabelModified() {
67 let tab = gBrowser.selectedTab;
68 let xulLabel = document.getAnonymousElementByAttribute(tab, "anonid",
69 "tab-label");
70
71 is(tab.label, "This won't be the visibleLabel",
72 "Tab label set via label property that triggered event");
73 is(xulLabel.value, "Handler set this as the visible label",
74 "xul:label set by TabLabelModified handler");
75 is(tab.visibleLabel, "Handler set this as the visible label",
76 "visibleLabel set by TabLabelModified handler");
77
78 gBrowser.removeCurrentTab({animate: false});
79 executeSoon(checkTabLabelModifiedOnNewTab);
80 }
81
82 function checkTabLabelModifiedOnNewTab() {
83 gBrowser.tabContainer.addEventListener("TabLabelModified",
84 handleTabLabelModifiedOnNewTab, true);
85 let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank",
86 {skipAnimation: true});
87 }
88
89 function handleTabLabelModifiedOnNewTab(aEvent) {
90 gBrowser.tabContainer.removeEventListener("TabLabelModified",
91 handleTabLabelModifiedOnNewTab, true);
92 ok(true, "Event received from new tab default being set");
93 executeSoon(finish);
94 }

mercurial