browser/components/tabview/test/browser_tabview_bug629195.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 let win;
     5 let contentWindow;
     6 let originalTab;
     8 function test() {
     9   waitForExplicitFinish();
    11   newWindowWithTabView(
    12     function() {
    13       ok(win.TabView.isVisible(), "Tab View is visible");
    15       contentWindow = win.document.getElementById("tab-view").contentWindow;
    16       is(contentWindow.GroupItems.groupItems.length, 1, "There is one group");
    17       is(contentWindow.GroupItems.groupItems[0].getChildren().length, 1,
    18          "The group has only one tab item");
    20       // show the undo close group button
    21       let group = contentWindow.GroupItems.groupItems[0];
    22       hideGroupItem(group, function () restore(group.id));
    23     },
    24     function(newWin) {
    25       win = newWin;
    26       originalTab = win.gBrowser.visibleTabs[0];
    27       win.gBrowser.addTab();
    28       win.gBrowser.pinTab(originalTab);
    29     }
    30   );
    31 }
    33 function restore(groupId) {
    34   // window state ready
    35   let handleSSWindowStateReady = function() {
    36     win.removeEventListener("SSWindowStateReady", handleSSWindowStateReady, false);
    38     executeSoon(function() { 
    39       is(contentWindow.GroupItems.groupItems.length, 1, "There is one group");
    41       let group = contentWindow.GroupItems.groupItems[0];
    42       ok(!group.hidden, "The group is visible");
    43       is(group.getChildren().length, 2, "This group has two tab items");
    45       // check the position of the group item and the tab items.
    46       let tabItemOne = group.getChildren()[0];
    47       let tabItemTwo = group.getChildren()[1];
    49       let groupBounds = group.getBounds();
    50       let tabItemOneBounds = tabItemOne.getBounds();
    51       let tabItemTwoBounds = tabItemTwo.getBounds();
    53       ok(groupBounds.left < tabItemOneBounds.left && 
    54          (groupBounds.right) > (tabItemOneBounds.right) &&
    55          groupBounds.top < tabItemOneBounds.top && 
    56          (groupBounds.bottom) > (tabItemOneBounds.bottom), 
    57          "Tab item one is within the group");
    59       ok(groupBounds.left < tabItemOneBounds.left && 
    60          (groupBounds.right) > (tabItemTwoBounds.right) &&
    61          groupBounds.top < tabItemOneBounds.top && 
    62          (groupBounds.bottom) > (tabItemTwoBounds.bottom), 
    63          "Tab item two is within the group");
    65       win.close();
    66       finish();
    67     });
    68   }
    69   win.addEventListener("SSWindowStateReady", handleSSWindowStateReady, false);
    71   // simulate restoring previous session (one group and two tab items)
    72   const DUMMY_PAGE_URL = "http://example.com/";
    73   let newState = {
    74     windows: [{
    75       tabs: [{
    76         entries: [{ url: DUMMY_PAGE_URL }],
    77         index: 2,
    78         hidden: false,
    79         attributes: {},
    80         extData: {
    81           "tabview-tab":
    82             '{"bounds":{"left":208,"top":54,"width":205,"height":169},' +
    83             '"userSize":null,"url":"' + DUMMY_PAGE_URL + '","groupID":' + 
    84             groupId + ',"imageData":null,"title":null}'
    85         }}, {
    86         entries: [{ url: DUMMY_PAGE_URL }],
    87         index: 1,
    88         hidden: false,
    89         attributes: {},
    90         extData: {
    91           "tabview-tab":
    92             '{"bounds":{"left":429,"top":54,"width":205,"height":169},' +
    93             '"userSize":null,"url":"' + DUMMY_PAGE_URL + '","groupID":' + 
    94             groupId + ',"imageData":null,"title":null}'
    95         }
    96       }],
    97       extData: {
    98         "tabview-groups": '{"nextID":' + (groupId + 1) + ',"activeGroupId":' + groupId + '}',
    99         "tabview-group": 
   100           '{"' + groupId + '":{"bounds":{"left":202,"top":30,"width":455,"height":249},' + 
   101           '"userSize":null,"locked":{},"title":"","id":' + groupId +'}}',
   102         "tabview-ui": '{"pageBounds":{"left":0,"top":0,"width":788,"height":548}}'
   103       }, sizemode:"normal"
   104     }]
   105   };
   106   let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
   107   ss.setWindowState(win, JSON.stringify(newState), true);
   108 }

mercurial