1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
const TEST_URL = "about:robots";
StarUI._createPanelIfNeeded();
const bookmarkPanel = document.getElementById("editBookmarkPanel");
let folders;
add_setup(async function () {
await PlacesUtils.bookmarks.eraseEverything();
bookmarkPanel.setAttribute("animate", false);
let oldTimeout = StarUI._autoCloseTimeout;
// Make the timeout something big, so it doesn't iteract badly with tests.
StarUI._autoCloseTimeout = 6000000;
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: TEST_URL,
waitForStateStop: true,
});
registerCleanupFunction(async () => {
StarUI._autoCloseTimeout = oldTimeout;
BrowserTestUtils.removeTab(tab);
bookmarkPanel.removeAttribute("animate");
await PlacesUtils.bookmarks.eraseEverything();
});
});
add_task(async function test_newFolder() {
let newBookmarkObserver = PlacesTestUtils.waitForNotification(
"bookmark-added",
events => events.some(({ url }) => url === TEST_URL)
);
await clickBookmarkStar();
// Open folder selector.
document.getElementById("editBMPanel_foldersExpander").click();
let folderTree = document.getElementById("editBMPanel_folderTree");
// Create new folder.
let newFolderButton = document.getElementById("editBMPanel_newFolderButton");
newFolderButton.click();
let newFolderGuid;
let newFolderObserver = PlacesTestUtils.waitForNotification(
"bookmark-added",
events => {
for (let { guid, itemType } of events) {
newFolderGuid = guid;
if (itemType == PlacesUtils.bookmarks.TYPE_FOLDER) {
return true;
}
}
return false;
}
);
let menulist = document.getElementById("editBMPanel_folderMenuList");
await newFolderObserver;
// Wait for the folder to be created and for editing to start.
await TestUtils.waitForCondition(
() => folderTree.hasAttribute("editing"),
"Should be in edit mode for the new folder"
);
Assert.equal(
menulist.selectedItem.label,
newFolderButton.label,
"Should have the new folder selected by default"
);
let renameObserver = PlacesTestUtils.waitForNotification(
"bookmark-title-changed",
events => events.some(e => e.title === "f")
);
// Enter a new name.
EventUtils.synthesizeKey("f", {}, window);
EventUtils.synthesizeKey("VK_RETURN", {}, window);
await renameObserver;
await TestUtils.waitForCondition(
() => !folderTree.hasAttribute("editing"),
"Should have stopped editing the new folder"
);
Assert.equal(
menulist.selectedItem.label,
"f",
"Should have the new folder title"
);
await hideBookmarksPanel();
await newBookmarkObserver;
let bookmark = await PlacesUtils.bookmarks.fetch({ url: TEST_URL });
Assert.equal(
bookmark.parentGuid,
newFolderGuid,
"The bookmark should be parented by the new folder"
);
});
|