browser/metro/base/tests/mochitest/browser_bookmarks.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:45b69cab8252
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/. */
5
6 "use strict";
7
8 let gStartView = null;
9
10 function test() {
11 runTests();
12 }
13
14 function setup() {
15 PanelUI.hide();
16
17 if (!BrowserUI.isStartTabVisible) {
18 let tab = yield addTab("about:start");
19 gStartView = tab.browser.contentWindow.BookmarksStartView._view;
20
21 yield waitForCondition(() => BrowserUI.isStartTabVisible);
22
23 yield hideContextUI();
24 }
25
26 BookmarksTestHelper.setup();
27 }
28
29 function tearDown() {
30 PanelUI.hide();
31 BookmarksTestHelper.restore();
32 }
33
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");
40
41 // --------- hide item 2
42
43 let item = gStartView._getItemForBookmarkId(2);
44
45 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
46 sendContextMenuClickToElement(window, item, 10, 10);
47 yield promise;
48
49 ok(!hideButton.hidden, "Hide button is visible.");
50
51 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
52 hideButton.click();
53 yield promise;
54
55 item = gStartView._getItemForBookmarkId(2);
56
57 ok(!item, "Item not in grid");
58 ok(!gStartView._pinHelper.isPinned(2), "Item hidden");
59 ok(gStartView._set.itemCount === gStartView.maxTiles, "Grid repopulated");
60
61 // --------- hide multiple items
62
63 let item1 = gStartView._getItemForBookmarkId(0);
64 let item2 = gStartView._getItemForBookmarkId(5);
65 let item3 = gStartView._getItemForBookmarkId(12);
66
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;
72
73 ok(!hideButton.hidden, "Hide button is visible.");
74
75 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
76 EventUtils.synthesizeMouse(hideButton, 10, 10, {}, window);
77 yield promise;
78
79 item1 = gStartView._getItemForBookmarkId(0);
80 item2 = gStartView._getItemForBookmarkId(5);
81 item3 = gStartView._getItemForBookmarkId(12);
82
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 });
88
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");
96
97 // --------- delete item 2 and restore
98
99 let item = gStartView._getItemForBookmarkId(2);
100 let initialLocation = gStartView._set.getIndexOfItem(item);
101
102 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
103 sendContextMenuClickToElement(window, item, 10, 10);
104 yield promise;
105
106 ok(!deleteButton.hidden, "Delete button is visible.");
107
108 let promise = waitForCondition(() => !restoreButton.hidden);
109 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
110 yield promise;
111
112 item = gStartView._getItemForBookmarkId(2);
113
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");
118
119 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
120 EventUtils.synthesizeMouse(restoreButton, 10, 10, {}, window);
121 yield promise;
122
123 item = gStartView._getItemForBookmarkId(2);
124 ok(item, "Item back in grid");
125 ok(gStartView._set.getIndexOfItem(item) === initialLocation, "Back in same position.");
126
127 // --------- delete item 2 for realz
128
129 let item = gStartView._getItemForBookmarkId(2);
130
131 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
132 sendContextMenuClickToElement(window, item, 10, 10);
133 yield promise;
134
135 ok(!deleteButton.hidden, "Delete button is visible.");
136
137 let promise = waitForCondition(() => !restoreButton.hidden);
138 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
139 yield promise;
140
141 item = gStartView._getItemForBookmarkId(2);
142
143 ok(!item, "Item not in grid");
144 ok(BookmarksTestHelper._nodes[2], "Item not deleted yet");
145 ok(!restoreButton.hidden, "Restore button is visible.");
146
147 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
148 Elements.contextappbar.dismiss();
149 yield promise;
150
151 item = gStartView._getItemForBookmarkId(2);
152
153 ok(!item, "Item not in grid");
154 ok(!BookmarksTestHelper._nodes[2], "Item RIP");
155 ok(gStartView._set.itemCount === gStartView.maxTiles, "Grid repopulated");
156
157 // --------- delete multiple items and restore
158
159 let item1 = gStartView._getItemForBookmarkId(0);
160 let item2 = gStartView._getItemForBookmarkId(5);
161 let item3 = gStartView._getItemForBookmarkId(12);
162
163 let initialLocation1 = gStartView._set.getIndexOfItem(item1);
164 let initialLocation2 = gStartView._set.getIndexOfItem(item2);
165 let initialLocation3 = gStartView._set.getIndexOfItem(item3);
166
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;
172
173 ok(!deleteButton.hidden, "Delete button is visible.");
174
175 let promise = waitForCondition(() => !restoreButton.hidden);
176 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
177 yield promise;
178
179 item1 = gStartView._getItemForBookmarkId(0);
180 item2 = gStartView._getItemForBookmarkId(5);
181 item3 = gStartView._getItemForBookmarkId(12);
182
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");
188
189 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
190 EventUtils.synthesizeMouse(restoreButton, 10, 10, {}, window);
191 yield promise;
192
193 item1 = gStartView._getItemForBookmarkId(0);
194 item2 = gStartView._getItemForBookmarkId(5);
195 item3 = gStartView._getItemForBookmarkId(12);
196
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");
202
203 // --------- delete multiple items for good
204
205 let item1 = gStartView._getItemForBookmarkId(0);
206 let item2 = gStartView._getItemForBookmarkId(5);
207 let item3 = gStartView._getItemForBookmarkId(12);
208
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;
214
215 yield waitForCondition(() => !deleteButton.hidden);
216
217 ok(!deleteButton.hidden, "Delete button is visible.");
218
219 let promise = waitForCondition(() => !restoreButton.hidden);
220 EventUtils.synthesizeMouse(deleteButton, 10, 10, {}, window);
221 yield promise;
222
223 item1 = gStartView._getItemForBookmarkId(0);
224 item2 = gStartView._getItemForBookmarkId(5);
225 item3 = gStartView._getItemForBookmarkId(12);
226
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.");
231
232 let promise = waitForEvent(Elements.contextappbar, "transitionend", null, Elements.contextappbar);
233 Elements.contextappbar.dismiss();
234 yield promise;
235
236 item1 = gStartView._getItemForBookmarkId(0);
237 item2 = gStartView._getItemForBookmarkId(5);
238 item3 = gStartView._getItemForBookmarkId(12);
239
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 });

mercurial