browser/components/tabview/test/browser_tabview_bug624727_perwindowpb.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 createGroupItem = function (aWindow) {
     6     let cw = aWindow.TabView.getContentWindow();
     7     let bounds = new cw.Rect(20, 20, 400, 200);
     8     let groupItem = new cw.GroupItem([], {bounds: bounds, immediately: true});
     9     cw.UI.setActive(groupItem);
    11     let groupItemId = groupItem.id;
    12     registerCleanupFunction(function() {
    13       let groupItem = cw.GroupItems.groupItem(groupItemId);
    14       if (groupItem)
    15         groupItem.close();
    16     });
    18     for (let i=0; i<3; i++)
    19       aWindow.gBrowser.addTab('about:blank');
    20   }
    22   let assertTabViewIsHidden = function (aWindow, prefix) {
    23     ok(!aWindow.TabView.isVisible(), prefix + ': tabview is hidden');
    24   }
    26   let assertNumberOfTabs = function (aWindow, prefix, num) {
    27     is(aWindow.gBrowser.tabs.length, num, prefix + ': there are ' + num + ' tabs');
    28   }
    30   let assertNumberOfPinnedTabs = function (aWindow, prefix, num) {
    31     is(aWindow.gBrowser._numPinnedTabs, num, prefix + ': there are ' + num + ' pinned tabs');
    32   }
    34   let assertNumberOfGroups = function (aCW, prefix, num) {
    35     is(aCW.GroupItems.groupItems.length, num, prefix + ': there are ' + num + ' groups');
    36   }
    38   let assertOneTabInGroup = function (prefix, groupItem) {
    39     is(groupItem.getChildren().length, 1, prefix + ': group contains one tab');
    40   }
    42   let assertValidPrerequisites = function (aWindow, prefix) {
    43     assertNumberOfTabs(aWindow, prefix, 1);
    44     assertNumberOfPinnedTabs(aWindow, prefix, 0);
    45     assertTabViewIsHidden(aWindow, prefix);
    46   }
    48   let assertValidSetup = function (aWindow, prefix) {
    49     let cw = aWindow.TabView.getContentWindow();
    50     assertNumberOfGroups(cw, prefix, 2);
    51     assertNumberOfTabs(aWindow, prefix, 4);
    52     assertNumberOfPinnedTabs(aWindow, prefix, 2);
    54     let [group1, group2] = cw.GroupItems.groupItems;
    55     assertOneTabInGroup(prefix, group1);
    56     assertOneTabInGroup(prefix, group2);
    57   }
    59   let testStateAfterEnteringPB = function (aWindow, aCallback) {
    60     let prefix = 'window is private';
    61     ok(PrivateBrowsingUtils.isWindowPrivate(aWindow), prefix);
    63     assertTabViewIsHidden(aWindow, prefix);
    65     showTabView(function () {
    66       let cw = aWindow.TabView.getContentWindow();
    68       assertNumberOfGroups(cw, prefix, 1);
    69       assertNumberOfTabs(aWindow, prefix, 1);
    70       assertOneTabInGroup(prefix, cw.GroupItems.groupItems[0]);
    71       aCallback();
    72     }, aWindow);
    73   }
    75   let testStateAfterLeavingPB = function (aWindow) {
    76     let prefix = 'window is not private';
    77     ok(!PrivateBrowsingUtils.isWindowPrivate(aWindow), prefix);
    79     assertTabViewIsHidden(aWindow, prefix);
    81     showTabView(function () {
    82       assertValidSetup(aWindow, prefix);
    83       finishTest(aWindow);
    84     }, aWindow);
    85   }
    87   let finishTest = function (aWindow) {
    88     let cw = aWindow.TabView.getContentWindow();
    90     // Remove pinned tabs
    91     aWindow.gBrowser.removeTab(aWindow.gBrowser.tabs[0]);
    92     aWindow.gBrowser.removeTab(aWindow.gBrowser.tabs[0]);
    94     cw.GroupItems.groupItems[1].closeAll();
    96     hideTabView(function () {
    97       assertValidPrerequisites(aWindow, 'exit');
    98       assertNumberOfGroups(cw, 'exit', 1);
    99       aWindow.close();
   100       finish();
   101     }, aWindow);
   102   }
   104   let testOnWindow = function(aIsPrivate, aCallback) {
   105     let win = OpenBrowserWindow({private: aIsPrivate});
   106     win.addEventListener("load", function onLoad() {
   107       win.removeEventListener("load", onLoad, false);
   108       executeSoon(function() { aCallback(win) });
   109     }, false);
   110   }
   112   waitForExplicitFinish();
   113   testOnWindow(false, function(publicWindow) {
   114     registerCleanupFunction(function () publicWindow.TabView.hide());
   115     assertValidPrerequisites(publicWindow, 'start');
   117     showTabView(function () {
   118       let cw = publicWindow.TabView.getContentWindow();
   119       assertNumberOfGroups(cw, 'start', 1);
   120       createGroupItem(publicWindow);
   122       afterAllTabsLoaded(function () {
   123         // Setup
   124         let groupItems = cw.GroupItems.groupItems;
   125         let [tabItem1, tabItem2, ] = groupItems[1].getChildren();
   126         publicWindow.gBrowser.pinTab(tabItem1.tab);
   127         publicWindow.gBrowser.pinTab(tabItem2.tab);
   129         assertValidSetup(publicWindow, 'setup');
   130         hideTabView(function() {
   131           testOnWindow(true, function(privateWindow) {
   132             testStateAfterEnteringPB(privateWindow, function() {
   133               privateWindow.close();
   134               hideTabView(function() {
   135                 testStateAfterLeavingPB(publicWindow);
   136               }, publicWindow);
   137             });
   138           });
   139         }, publicWindow);
   140       });
   141     }, publicWindow);
   142   });
   143 }

mercurial