browser/base/content/test/general/browser_bug585558.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/
     3  */
     5 let tabs = [];
     7 function addTab(aURL) {
     8   tabs.push(gBrowser.addTab(aURL, {skipAnimation: true}));
     9 }
    11 function testAttrib(elem, attrib, attribValue, msg) {
    12   is(elem.hasAttribute(attrib), attribValue, msg);
    13 }
    15 function test() {
    16   waitForExplicitFinish();
    17   is(gBrowser.tabs.length, 1, "one tab is open initially");
    19   // Add several new tabs in sequence, hiding some, to ensure that the
    20   // correct attributes get set
    22   addTab("http://mochi.test:8888/#0");
    23   addTab("http://mochi.test:8888/#1");
    24   addTab("http://mochi.test:8888/#2");
    25   addTab("http://mochi.test:8888/#3");
    27   gBrowser.selectedTab = gBrowser.tabs[0];
    28   testAttrib(gBrowser.tabs[0], "first-visible-tab", true,
    29              "First tab marked first-visible-tab!");
    30   testAttrib(gBrowser.tabs[4], "last-visible-tab", true,
    31              "Fifth tab marked last-visible-tab!");
    32   testAttrib(gBrowser.tabs[0], "selected", true, "First tab marked selected!");
    33   testAttrib(gBrowser.tabs[0], "afterselected-visible", false,
    34              "First tab not marked afterselected-visible!");
    35   testAttrib(gBrowser.tabs[1], "afterselected-visible", true,
    36              "Second tab marked afterselected-visible!");
    37   gBrowser.hideTab(gBrowser.tabs[1]);
    38   executeSoon(test_hideSecond);
    39 }
    41 function test_hideSecond() {
    42   testAttrib(gBrowser.tabs[2], "afterselected-visible", true,
    43              "Third tab marked afterselected-visible!");
    44   gBrowser.showTab(gBrowser.tabs[1])
    45   executeSoon(test_showSecond);
    46 }
    48 function test_showSecond() {
    49   testAttrib(gBrowser.tabs[1], "afterselected-visible", true,
    50              "Second tab marked afterselected-visible!");
    51   testAttrib(gBrowser.tabs[2], "afterselected-visible", false,
    52              "Third tab not marked as afterselected-visible!");
    53   gBrowser.selectedTab = gBrowser.tabs[1];
    54   gBrowser.hideTab(gBrowser.tabs[0]);
    55   executeSoon(test_hideFirst);
    56 }
    58 function test_hideFirst() {
    59   testAttrib(gBrowser.tabs[0], "first-visible-tab", false,
    60               "Hidden first tab not marked first-visible-tab!");
    61   testAttrib(gBrowser.tabs[1], "first-visible-tab", true,
    62               "Second tab marked first-visible-tab!");
    63   gBrowser.showTab(gBrowser.tabs[0]);
    64   executeSoon(test_showFirst);
    65 }
    67 function test_showFirst() {
    68   testAttrib(gBrowser.tabs[0], "first-visible-tab", true,
    69              "First tab marked first-visible-tab!");
    70   gBrowser.selectedTab = gBrowser.tabs[2];
    71   testAttrib(gBrowser.tabs[3], "afterselected-visible", true,
    72              "Fourth tab marked afterselected-visible!");
    74   gBrowser.moveTabTo(gBrowser.selectedTab, 1);
    75   executeSoon(test_movedLower);
    76 }
    78 function test_movedLower() {
    79   testAttrib(gBrowser.tabs[2], "afterselected-visible", true,
    80              "Third tab marked afterselected-visible!");
    81   test_hoverOne();
    82 }
    84 function test_hoverOne() {
    85   EventUtils.synthesizeMouseAtCenter(gBrowser.tabs[4], { type: "mousemove" });
    86   testAttrib(gBrowser.tabs[3], "beforehovered", true,  "Fourth tab marked beforehovered");
    87   EventUtils.synthesizeMouseAtCenter(gBrowser.tabs[3], { type: "mousemove" });
    88   testAttrib(gBrowser.tabs[2], "beforehovered", true,  "Third tab marked beforehovered!");
    89   testAttrib(gBrowser.tabs[2], "afterhovered",  false, "Third tab not marked afterhovered!");
    90   testAttrib(gBrowser.tabs[4], "afterhovered",  true,  "Fifth tab marked afterhovered!");
    91   testAttrib(gBrowser.tabs[4], "beforehovered", false, "Fifth tab not marked beforehovered!");
    92   testAttrib(gBrowser.tabs[0], "beforehovered", false, "First tab not marked beforehovered!");
    93   testAttrib(gBrowser.tabs[0], "afterhovered",  false, "First tab not marked afterhovered!");
    94   testAttrib(gBrowser.tabs[1], "beforehovered", false, "Second tab not marked beforehovered!");
    95   testAttrib(gBrowser.tabs[1], "afterhovered",  false, "Second tab not marked afterhovered!");
    96   testAttrib(gBrowser.tabs[3], "beforehovered", false, "Fourth tab not marked beforehovered!");
    97   testAttrib(gBrowser.tabs[3], "afterhovered",  false, "Fourth tab not marked afterhovered!");
    98   gBrowser.removeTab(tabs.pop());
    99   executeSoon(test_hoverStatePersistence);
   100 }
   102 function test_hoverStatePersistence() {
   103   // Test that the afterhovered and beforehovered attributes are still there when 
   104   // a tab is selected and then unselected again. See bug 856107.
   106   function assertState() {
   107     testAttrib(gBrowser.tabs[0], "beforehovered", true,  "First tab still marked beforehovered!");
   108     testAttrib(gBrowser.tabs[0], "afterhovered",  false, "First tab not marked afterhovered!");
   109     testAttrib(gBrowser.tabs[2], "afterhovered",  true,  "Third tab still marked afterhovered!");
   110     testAttrib(gBrowser.tabs[2], "beforehovered", false, "Third tab not marked afterhovered!");
   111     testAttrib(gBrowser.tabs[1], "beforehovered", false, "Second tab not marked beforehovered!");
   112     testAttrib(gBrowser.tabs[1], "afterhovered",  false, "Second tab not marked afterhovered!");
   113     testAttrib(gBrowser.tabs[3], "beforehovered", false, "Fourth tab not marked beforehovered!");
   114     testAttrib(gBrowser.tabs[3], "afterhovered",  false, "Fourth tab not marked afterhovered!");
   115   }
   117   gBrowser.selectedTab = gBrowser.tabs[3];
   118   EventUtils.synthesizeMouseAtCenter(gBrowser.tabs[1], { type: "mousemove" });
   119   assertState();
   120   gBrowser.selectedTab = gBrowser.tabs[1];
   121   assertState();
   122   gBrowser.selectedTab = gBrowser.tabs[3];
   123   assertState();
   124   executeSoon(test_pinning);
   125 }
   127 function test_pinning() {
   128   gBrowser.selectedTab = gBrowser.tabs[3];
   129   testAttrib(gBrowser.tabs[3], "last-visible-tab", true,
   130              "Fourth tab marked last-visible-tab!");
   131   testAttrib(gBrowser.tabs[3], "selected", true, "Fourth tab marked selected!");
   132   testAttrib(gBrowser.tabs[3], "afterselected-visible", false,
   133              "Fourth tab not marked afterselected-visible!");
   134   // Causes gBrowser.tabs to change indices
   135   gBrowser.pinTab(gBrowser.tabs[3]);
   136   testAttrib(gBrowser.tabs[3], "last-visible-tab", true,
   137              "Fourth tab marked last-visible-tab!");
   138   testAttrib(gBrowser.tabs[1], "afterselected-visible", true,
   139              "Second tab marked afterselected-visible!");
   140   testAttrib(gBrowser.tabs[0], "first-visible-tab", true,
   141              "First tab marked first-visible-tab!");
   142   testAttrib(gBrowser.tabs[0], "selected", true, "First tab marked selected!");
   143   gBrowser.selectedTab = gBrowser.tabs[1];
   144   testAttrib(gBrowser.tabs[2], "afterselected-visible", true,
   145              "Third tab marked afterselected-visible!");
   146   test_cleanUp();
   147 }
   149 function test_cleanUp() {
   150   tabs.forEach(gBrowser.removeTab, gBrowser);
   151   finish();
   152 }

mercurial