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
111
112
113
114
115
116
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
add_task(function* test_eraseEverything() {
yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://example.com/") });
yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/") });
let frecencyForExample = frecencyForUrl("http://example.com/");
let frecencyForMozilla = frecencyForUrl("http://example.com/");
Assert.ok(frecencyForExample > 0);
Assert.ok(frecencyForMozilla > 0);
let unfiledFolder = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
type: PlacesUtils.bookmarks.TYPE_FOLDER });
checkBookmarkObject(unfiledFolder);
let unfiledBookmark = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
url: "http://example.com/" });
checkBookmarkObject(unfiledBookmark);
let unfiledBookmarkInFolder =
yield PlacesUtils.bookmarks.insert({ parentGuid: unfiledFolder.guid,
type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
url: "http://mozilla.org/" });
checkBookmarkObject(unfiledBookmarkInFolder);
PlacesUtils.annotations.setItemAnnotation((yield PlacesUtils.promiseItemId(unfiledBookmarkInFolder.guid)),
"testanno1", "testvalue1", 0, 0);
let menuFolder = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.menuGuid,
type: PlacesUtils.bookmarks.TYPE_FOLDER });
checkBookmarkObject(menuFolder);
let menuBookmark = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.menuGuid,
type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
url: "http://example.com/" });
checkBookmarkObject(menuBookmark);
let menuBookmarkInFolder =
yield PlacesUtils.bookmarks.insert({ parentGuid: menuFolder.guid,
type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
url: "http://mozilla.org/" });
checkBookmarkObject(menuBookmarkInFolder);
PlacesUtils.annotations.setItemAnnotation((yield PlacesUtils.promiseItemId(menuBookmarkInFolder.guid)),
"testanno1", "testvalue1", 0, 0);
let toolbarFolder = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
type: PlacesUtils.bookmarks.TYPE_FOLDER });
checkBookmarkObject(toolbarFolder);
let toolbarBookmark = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
url: "http://example.com/" });
checkBookmarkObject(toolbarBookmark);
let toolbarBookmarkInFolder =
yield PlacesUtils.bookmarks.insert({ parentGuid: toolbarFolder.guid,
type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
url: "http://mozilla.org/" });
checkBookmarkObject(toolbarBookmarkInFolder);
PlacesUtils.annotations.setItemAnnotation((yield PlacesUtils.promiseItemId(toolbarBookmarkInFolder.guid)),
"testanno1", "testvalue1", 0, 0);
yield PlacesTestUtils.promiseAsyncUpdates();
Assert.ok(frecencyForUrl("http://example.com/") > frecencyForExample);
Assert.ok(frecencyForUrl("http://example.com/") > frecencyForMozilla);
yield PlacesUtils.bookmarks.eraseEverything();
Assert.equal(frecencyForUrl("http://example.com/"), frecencyForExample);
Assert.equal(frecencyForUrl("http://example.com/"), frecencyForMozilla);
// Check there are no orphan annotations.
let conn = yield PlacesUtils.promiseDBConnection();
let annoAttrs = yield conn.execute(`SELECT id, name FROM moz_anno_attributes`);
// Bug 1306445 will eventually remove the mobile root anno.
Assert.equal(annoAttrs.length, 1);
Assert.equal(annoAttrs[0].getResultByName("name"), PlacesUtils.MOBILE_ROOT_ANNO);
let annos = rows = yield conn.execute(`SELECT item_id, anno_attribute_id FROM moz_items_annos`);
Assert.equal(annos.length, 1);
Assert.equal(annos[0].getResultByName("item_id"), PlacesUtils.mobileFolderId);
Assert.equal(annos[0].getResultByName("anno_attribute_id"), annoAttrs[0].getResultByName("id"));
});
add_task(function* test_eraseEverything_roots() {
yield PlacesUtils.bookmarks.eraseEverything();
// Ensure the roots have not been removed.
Assert.ok(yield PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.unfiledGuid));
Assert.ok(yield PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.toolbarGuid));
Assert.ok(yield PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.menuGuid));
Assert.ok(yield PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.tagsGuid));
Assert.ok(yield PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.rootGuid));
});
add_task(function* test_eraseEverything_reparented() {
// Create a folder with 1 bookmark in it...
let folder1 = yield PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
type: PlacesUtils.bookmarks.TYPE_FOLDER
});
let bookmark1 = yield PlacesUtils.bookmarks.insert({
parentGuid: folder1.guid,
url: "http://example.com/"
});
// ...and a second folder.
let folder2 = yield PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
type: PlacesUtils.bookmarks.TYPE_FOLDER
});
// Reparent the bookmark to the 2nd folder.
bookmark1.parentGuid = folder2.guid;
yield PlacesUtils.bookmarks.update(bookmark1);
// Erase everything.
yield PlacesUtils.bookmarks.eraseEverything();
// All the above items should no longer be in the GUIDHelper cache.
for (let guid of [folder1.guid, bookmark1.guid, folder2.guid]) {
yield Assert.rejects(PlacesUtils.promiseItemId(guid),
/no item found for the given GUID/);
}
});
|