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

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 /* Tests:
     5  *   verify that the visibleLabel attribute works
     6  *   verify the TabLabelModified event works for both existing and new tabs
     7  */
     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 }
    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");
    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");
    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");
    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");
    54   tab.addEventListener("TabLabelModified", overrideTabLabel, true);
    55   tab.label = "This won't be the visibleLabel";
    56 }
    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 }
    66 function checkTabLabelModified() {
    67   let tab = gBrowser.selectedTab;
    68   let xulLabel = document.getAnonymousElementByAttribute(tab, "anonid",
    69                                                          "tab-label");
    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");
    78   gBrowser.removeCurrentTab({animate: false});
    79   executeSoon(checkTabLabelModifiedOnNewTab);
    80 }
    82 function checkTabLabelModifiedOnNewTab() {
    83   gBrowser.tabContainer.addEventListener("TabLabelModified",
    84     handleTabLabelModifiedOnNewTab, true);
    85   let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank",
    86                                                    {skipAnimation: true});
    87 }
    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