browser/components/tabview/test/browser_tabview_bug613541.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 function test() {
     5   let cw;
     6   let win;
     7   let currentTest;
     9   let getGroupItem = function (index) {
    10     return cw.GroupItems.groupItems[index];
    11   }
    13   let createGroupItem = function (numTabs) {
    14     let bounds = new cw.Rect(20, 20, 200, 200);
    15     let groupItem = new cw.GroupItem([], {bounds: bounds, immediately: true});
    16     cw.UI.setActive(groupItem);
    18     for (let i=0; i<numTabs || 0; i++)
    19       win.gBrowser.loadOneTab('about:blank', {inBackground: true});
    21     return groupItem;
    22   }
    24   let tests = [];
    26   let next = function () {
    27     let test = tests.shift();
    29     if (test) {
    30       // check that the previous test left things as expected
    31       if (currentTest) {
    32         currentTest += ' (post-check)';
    33         assertTabViewIsHidden();
    34         assertNumberOfGroupItems(1);
    35         assertNumberOfTabs(1);
    36       }
    38       currentTest = test.name;
    39       showTabView(test.func, win);
    40     } else
    41       promiseWindowClosed(win).then(finish);
    42   }
    44   let assertTabViewIsHidden = function () {
    45     ok(!win.TabView.isVisible(), currentTest + ': tabview is hidden');
    46   }
    48   let assertNumberOfGroupItems = function (num) {
    49     is(cw.GroupItems.groupItems.length, num, currentTest + ': number of groupItems is equal to ' + num);
    50   }
    52   let assertNumberOfTabs = function (num) {
    53     is(win.gBrowser.tabs.length, num, currentTest + ': number of tabs is equal to ' + num);
    54   }
    56   let assertGroupItemRemoved = function (groupItem) {
    57     is(cw.GroupItems.groupItems.indexOf(groupItem), -1, currentTest + ': groupItem was removed');
    58   }
    60   let assertGroupItemExists = function (groupItem) {
    61     isnot(cw.GroupItems.groupItems.indexOf(groupItem), -1, currentTest + ': groupItem still exists');
    62   }
    64   // setup: 1 non-empty group
    65   // action: close the group
    66   // expected: new group with blank tab is created and zoomed into
    67   let testSingleGroup1 = function () {
    68     let groupItem = getGroupItem(0);
    69     closeGroupItem(groupItem, function () {
    70       assertNumberOfGroupItems(1);
    71       assertGroupItemRemoved(groupItem);
    72       whenTabViewIsHidden(next, win);
    73     });
    74   }
    76   // setup: 1 non-empty group
    77   // action: hide the group, exit panorama
    78   // expected: new group with blank tab is created and zoomed into
    79   let testSingleGroup2 = function () {
    80     let groupItem = getGroupItem(0);
    81     hideGroupItem(groupItem, function () {
    82       hideTabView(function () {
    83         assertNumberOfGroupItems(1);
    84         assertGroupItemRemoved(groupItem);
    85         next();
    86       }, win);
    87     });
    88   }
    90   // setup: 2 non-empty groups
    91   // action: close one group
    92   // expected: nothing should happen
    93   let testNonEmptyGroup1 = function () {
    94     let groupItem = getGroupItem(0);
    95     let newGroupItem = createGroupItem(1);
    96     assertNumberOfGroupItems(2);
    98     closeGroupItem(groupItem, function () {
    99       assertNumberOfGroupItems(1);
   100       assertGroupItemExists(newGroupItem);
   101       hideTabView(next, win);
   102     });
   103   }
   105   // setup: 2 non-empty groups
   106   // action: hide one group, exit panorama
   107   // expected: nothing should happen
   108   let testNonEmptyGroup2 = function () {
   109     let groupItem = getGroupItem(0);
   110     let newGroupItem = createGroupItem(1);
   111     assertNumberOfGroupItems(2);
   113     hideGroupItem(groupItem, function () {
   114       hideTabView(function () {
   115         assertNumberOfGroupItems(1);
   116         assertGroupItemRemoved(groupItem);
   117         assertGroupItemExists(newGroupItem);
   118         next();
   119       }, win);
   120     });
   121   }
   123   // setup: 1 pinned tab, 1 empty group
   124   // action: exit panorama
   125   // expected: nothing should happen
   126   let testPinnedTab1 = function () {
   127     win.gBrowser.pinTab(win.gBrowser.selectedTab);
   129     let groupItem = getGroupItem(0);
   130     hideTabView(function () {
   131       assertNumberOfGroupItems(1);
   132       assertGroupItemExists(groupItem);
   133       win.gBrowser.unpinTab(win.gBrowser.selectedTab);
   134       next();
   135     }, win);
   136   }
   138   // setup: 1 pinned tab
   139   // action: exit panorama
   140   // expected: new blank group is created
   141   let testPinnedTab2 = function () {
   142     win.gBrowser.pinTab(win.gBrowser.selectedTab);
   143     getGroupItem(0).close();
   145     hideTabView(function () {
   146       assertNumberOfTabs(1);
   147       assertNumberOfGroupItems(1);
   148       win.gBrowser.unpinTab(win.gBrowser.selectedTab);
   149       next();
   150     }, win);
   151   }
   153   // setup: 1 pinned tab, 1 empty group, 1 non-empty group
   154   // action: close non-empty group
   155   // expected: nothing should happen
   156   let testPinnedTab3 = function () {
   157     win.gBrowser.pinTab(win.gBrowser.selectedTab);
   159     let groupItem = getGroupItem(0);
   160     let newGroupItem = createGroupItem(1);
   161     assertNumberOfGroupItems(2);
   163     closeGroupItem(newGroupItem, function () {
   164       assertNumberOfGroupItems(1);
   165       assertGroupItemExists(groupItem);
   167       win.gBrowser.unpinTab(win.gBrowser.selectedTab);
   168       hideTabView(next, win);
   169     });
   170   }
   172   // setup: 1 pinned tab, 1 empty group, 1 non-empty group
   173   // action: hide non-empty group, exit panorama
   174   // expected: nothing should happen
   175   let testPinnedTab4 = function () {
   176     win.gBrowser.pinTab(win.gBrowser.selectedTab);
   178     let groupItem = getGroupItem(0);
   179     let newGroupItem = createGroupItem(1);
   180     assertNumberOfGroupItems(2);
   182     hideGroupItem(newGroupItem, function () {
   183       hideTabView(function () {
   184         assertNumberOfGroupItems(1);
   185         assertGroupItemExists(groupItem);
   186         assertGroupItemRemoved(newGroupItem);
   187         win.gBrowser.unpinTab(win.gBrowser.selectedTab);
   188         next();
   189       }, win);
   190     });
   191   }
   193   // setup: 1 non-empty group, 1 empty group
   194   // action: close non-empty group
   195   // expected: empty group is re-used, new tab is created and zoomed into
   196   let testEmptyGroup1 = function () {
   197     let groupItem = getGroupItem(0);
   198     let newGroupItem = createGroupItem(0);
   199     assertNumberOfGroupItems(2);
   201     closeGroupItem(groupItem, function () {
   202       assertNumberOfGroupItems(1);
   203       assertGroupItemExists(newGroupItem);
   204       whenTabViewIsHidden(next, win);
   205     });
   206   }
   208   // setup: 1 non-empty group, 1 empty group
   209   // action: hide non-empty group, exit panorama
   210   // expected: empty group is re-used, new tab is created and zoomed into
   211   let testEmptyGroup2 = function () {
   212     let groupItem = getGroupItem(0);
   213     let newGroupItem = createGroupItem(0);
   214     assertNumberOfGroupItems(2);
   216     hideGroupItem(groupItem, function () {
   217       hideTabView(function () {
   218         assertNumberOfGroupItems(1);
   219         assertGroupItemRemoved(groupItem);
   220         assertGroupItemExists(newGroupItem);
   221         next();
   222       }, win);
   223     });
   224   }
   226   // setup: 1 hidden group, 1 non-empty group
   227   // action: close non-empty group
   228   // expected: nothing should happen
   229   let testHiddenGroup1 = function () {
   230     let groupItem = getGroupItem(0);
   231     let hiddenGroupItem = createGroupItem(1);
   232     assertNumberOfGroupItems(2);
   234     hideGroupItem(hiddenGroupItem, function () {
   235       closeGroupItem(groupItem, function () {
   236         assertNumberOfGroupItems(1);
   237         assertGroupItemRemoved(groupItem);
   238         assertGroupItemExists(hiddenGroupItem);
   239         hideTabView(next, win);
   240       });
   241     });
   242   }
   244   // setup: 1 hidden group, 1 non-empty group
   245   // action: hide non-empty group, exit panorama
   246   // expected: new group with blank tab is created and zoomed into
   247   let testHiddenGroup2 = function () {
   248     let groupItem = getGroupItem(0);
   249     let hiddenGroupItem = createGroupItem(1);
   250     assertNumberOfGroupItems(2);
   252     hideGroupItem(hiddenGroupItem, function () {
   253       hideGroupItem(groupItem, function () {
   254         hideTabView(function () {
   255           assertNumberOfGroupItems(1);
   256           assertGroupItemRemoved(groupItem);
   257           assertGroupItemRemoved(hiddenGroupItem);
   258           next();
   259         }, win);
   260       });
   261     });
   262   }
   264   tests.push({name: 'testSingleGroup1', func: testSingleGroup1});
   265   tests.push({name: 'testSingleGroup2', func: testSingleGroup2});
   267   tests.push({name: 'testNonEmptyGroup1', func: testNonEmptyGroup1});
   268   tests.push({name: 'testNonEmptyGroup2', func: testNonEmptyGroup2});
   270   tests.push({name: 'testPinnedTab1', func: testPinnedTab1});
   271   tests.push({name: 'testPinnedTab2', func: testPinnedTab2});
   272   tests.push({name: 'testPinnedTab3', func: testPinnedTab3});
   273   tests.push({name: 'testPinnedTab4', func: testPinnedTab4});
   275   tests.push({name: 'testEmptyGroup1', func: testEmptyGroup1});
   276   tests.push({name: 'testEmptyGroup2', func: testEmptyGroup2});
   278   tests.push({name: 'testHiddenGroup1', func: testHiddenGroup1});
   279   tests.push({name: 'testHiddenGroup2', func: testHiddenGroup2}),
   281   waitForExplicitFinish();
   283   newWindowWithTabView(window => {
   284     win = window;
   285     cw = win.TabView.getContentWindow();
   286     next();
   287   });
   288 }

mercurial