Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 "use strict";
8 let gStartView = null;
10 function test() {
11 runTests();
12 }
14 function setup() {
15 PanelUI.hide();
17 if (!BrowserUI.isStartTabVisible) {
18 let tab = yield addTab("about:start");
19 gStartView = tab.browser.contentWindow.BookmarksStartView._view;
21 yield waitForCondition(() => BrowserUI.isStartTabVisible);
23 yield hideContextUI();
24 }
26 BookmarksTestHelper.setup();
27 }
29 function tearDown() {
30 PanelUI.hide();
31 BookmarksTestHelper.restore();
32 }
34 gTests.push({
35 desc: "Test bookmarks StartUI hide",
36 setUp: setup,
37 tearDown: tearDown,
38 run: function testBookmarksStartHide() {
39 let hideButton = document.getElementById("hide-selected-button");
41 // --------- hide item 2
43 let item = gStartView._getItemForBookmarkId(2);
45 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
46 sendContextMenuClickToElement(window, item, 10, 10);
47 yield promise;
49 ok(!hideButton.hidden, "Hide button is visible.");
51 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
52 hideButton.click();
53 yield promise;
55 item = gStartView._getItemForBookmarkId(2);
57 ok(!item, "Item not in grid");
58 ok(!gStartView._pinHelper.isPinned(2), "Item hidden");
59 ok(gStartView._set.itemCount === gStartView.maxTiles, "Grid repopulated");
61 // --------- hide multiple items
63 let item1 = gStartView._getItemForBookmarkId(0);
64 let item2 = gStartView._getItemForBookmarkId(5);
65 let item3 = gStartView._getItemForBookmarkId(12);
67 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
68 sendContextMenuClickToElement(window, item1, 10, 10);
69 sendContextMenuClickToElement(window, item2, 10, 10);
70 sendContextMenuClickToElement(window, item3, 10, 10);
71 yield promise;
73 ok(!hideButton.hidden, "Hide button is visible.");
75 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
76 EventUtils.synthesizeMouse(hideButton, 10, 10, {}, window);
77 yield promise;
79 item1 = gStartView._getItemForBookmarkId(0);
80 item2 = gStartView._getItemForBookmarkId(5);
81 item3 = gStartView._getItemForBookmarkId(12);
83 ok(!item1 && !item2 && !item3, "Items are not in grid");
84 ok(!gStartView._pinHelper.isPinned(0) && !gStartView._pinHelper.isPinned(5) && !gStartView._pinHelper.isPinned(12) , "Items hidden");
85 ok(gStartView._set.itemCount === gStartView.maxTiles - 1, "Grid repopulated");
86 }
87 });
89 gTests.push({
90 desc: "Test bookmarks StartUI delete",
91 setUp: setup,
92 tearDown: tearDown,
93 run: function testBookmarksStartDelete() {
94 let restoreButton = document.getElementById("restore-selected-button");
95 let deleteButton = document.getElementById("delete-selected-button");
97 // --------- delete item 2 and restore
99 let item = gStartView._getItemForBookmarkId(2);
100 let initialLocation = gStartView._set.getIndexOfItem(item);
102 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
103 sendContextMenuClickToElement(window, item, 10, 10);
104 yield promise;
106 ok(!deleteButton.hidden, "Delete button is visible.");
108 let promise = waitForCondition(() => !restoreButton.hidden);
109 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
110 yield promise;
112 item = gStartView._getItemForBookmarkId(2);
114 ok(!item, "Item not in grid");
115 ok(BookmarksTestHelper._nodes[2], "Item not deleted yet");
116 ok(!restoreButton.hidden, "Restore button is visible.");
117 ok(gStartView._set.itemCount === gStartView.maxTiles, "Grid repopulated");
119 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
120 EventUtils.synthesizeMouse(restoreButton, 10, 10, {}, window);
121 yield promise;
123 item = gStartView._getItemForBookmarkId(2);
124 ok(item, "Item back in grid");
125 ok(gStartView._set.getIndexOfItem(item) === initialLocation, "Back in same position.");
127 // --------- delete item 2 for realz
129 let item = gStartView._getItemForBookmarkId(2);
131 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
132 sendContextMenuClickToElement(window, item, 10, 10);
133 yield promise;
135 ok(!deleteButton.hidden, "Delete button is visible.");
137 let promise = waitForCondition(() => !restoreButton.hidden);
138 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
139 yield promise;
141 item = gStartView._getItemForBookmarkId(2);
143 ok(!item, "Item not in grid");
144 ok(BookmarksTestHelper._nodes[2], "Item not deleted yet");
145 ok(!restoreButton.hidden, "Restore button is visible.");
147 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
148 Elements.contextappbar.dismiss();
149 yield promise;
151 item = gStartView._getItemForBookmarkId(2);
153 ok(!item, "Item not in grid");
154 ok(!BookmarksTestHelper._nodes[2], "Item RIP");
155 ok(gStartView._set.itemCount === gStartView.maxTiles, "Grid repopulated");
157 // --------- delete multiple items and restore
159 let item1 = gStartView._getItemForBookmarkId(0);
160 let item2 = gStartView._getItemForBookmarkId(5);
161 let item3 = gStartView._getItemForBookmarkId(12);
163 let initialLocation1 = gStartView._set.getIndexOfItem(item1);
164 let initialLocation2 = gStartView._set.getIndexOfItem(item2);
165 let initialLocation3 = gStartView._set.getIndexOfItem(item3);
167 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
168 sendContextMenuClickToElement(window, item1, 10, 10);
169 sendContextMenuClickToElement(window, item2, 10, 10);
170 sendContextMenuClickToElement(window, item3, 10, 10);
171 yield promise;
173 ok(!deleteButton.hidden, "Delete button is visible.");
175 let promise = waitForCondition(() => !restoreButton.hidden);
176 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
177 yield promise;
179 item1 = gStartView._getItemForBookmarkId(0);
180 item2 = gStartView._getItemForBookmarkId(5);
181 item3 = gStartView._getItemForBookmarkId(12);
183 ok(!item1 && !item2 && !item3, "Items are not in grid");
184 ok(BookmarksTestHelper._nodes[0] && BookmarksTestHelper._nodes[5] && BookmarksTestHelper._nodes[12],
185 "Items not deleted yet");
186 ok(!restoreButton.hidden, "Restore button is visible.");
187 ok(gStartView._set.itemCount === gStartView.maxTiles - 1, "Grid repopulated");
189 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
190 EventUtils.synthesizeMouse(restoreButton, 10, 10, {}, window);
191 yield promise;
193 item1 = gStartView._getItemForBookmarkId(0);
194 item2 = gStartView._getItemForBookmarkId(5);
195 item3 = gStartView._getItemForBookmarkId(12);
197 ok(item1 && item2 && item3, "Items are back in grid");
198 ok(gStartView._set.getIndexOfItem(item1) === initialLocation1 &&
199 gStartView._set.getIndexOfItem(item2) === initialLocation2 &&
200 gStartView._set.getIndexOfItem(item3) === initialLocation3, "Items back in the same position.");
201 ok(gStartView._set.itemCount === gStartView.maxTiles, "Grid repopulated");
203 // --------- delete multiple items for good
205 let item1 = gStartView._getItemForBookmarkId(0);
206 let item2 = gStartView._getItemForBookmarkId(5);
207 let item3 = gStartView._getItemForBookmarkId(12);
209 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
210 sendContextMenuClickToElement(window, item1, 10, 10);
211 sendContextMenuClickToElement(window, item2, 10, 10);
212 sendContextMenuClickToElement(window, item3, 10, 10);
213 yield promise;
215 yield waitForCondition(() => !deleteButton.hidden);
217 ok(!deleteButton.hidden, "Delete button is visible.");
219 let promise = waitForCondition(() => !restoreButton.hidden);
220 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
221 yield promise;
223 item1 = gStartView._getItemForBookmarkId(0);
224 item2 = gStartView._getItemForBookmarkId(5);
225 item3 = gStartView._getItemForBookmarkId(12);
227 ok(!item1 && !item2 && !item3, "Items are not in grid");
228 ok(BookmarksTestHelper._nodes[0] && BookmarksTestHelper._nodes[5] && BookmarksTestHelper._nodes[12],
229 "Items not deleted yet");
230 ok(!restoreButton.hidden, "Restore button is visible.");
232 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
233 Elements.contextappbar.dismiss();
234 yield promise;
236 item1 = gStartView._getItemForBookmarkId(0);
237 item2 = gStartView._getItemForBookmarkId(5);
238 item3 = gStartView._getItemForBookmarkId(12);
240 ok(!item1 && !item2 && !item3, "Items are not in grid");
241 ok(!BookmarksTestHelper._nodes[0] && !BookmarksTestHelper._nodes[5] && !BookmarksTestHelper._nodes[12],
242 "Items are gone");
243 ok(gStartView._set.itemCount === gStartView.maxTiles - 1, "Grid repopulated");
244 }
245 });