Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const histsvc = PlacesUtils.history;
add_task(async function test_addBookmarksAndCheckGuids() {
let bookmarks = await PlacesUtils.bookmarks.insertTree({
guid: PlacesUtils.bookmarks.menuGuid,
children: [
{
title: "test folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
children: [
{
title: "1 title",
},
{
title: "2 title",
},
{
title: "3 title",
},
{
type: PlacesUtils.bookmarks.TYPE_SEPARATOR,
},
{
title: "test folder 2",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
},
],
},
],
});
let root = PlacesUtils.getFolderContents(bookmarks[0].guid).root;
Assert.equal(root.childCount, 5);
// check bookmark guids
let bookmarkGuidZero = root.getChild(0).bookmarkGuid;
Assert.equal(bookmarkGuidZero.length, 12);
// bookmarks have bookmark guids
Assert.equal(root.getChild(1).bookmarkGuid.length, 12);
Assert.equal(root.getChild(2).bookmarkGuid.length, 12);
// separator has bookmark guid
Assert.equal(root.getChild(3).bookmarkGuid.length, 12);
// folder has bookmark guid
Assert.equal(root.getChild(4).bookmarkGuid.length, 12);
// all bookmark guids are different.
Assert.notEqual(bookmarkGuidZero, root.getChild(1).bookmarkGuid);
Assert.notEqual(root.getChild(1).bookmarkGuid, root.getChild(2).bookmarkGuid);
Assert.notEqual(root.getChild(2).bookmarkGuid, root.getChild(3).bookmarkGuid);
Assert.notEqual(root.getChild(3).bookmarkGuid, root.getChild(4).bookmarkGuid);
// check page guids
let pageGuidZero = root.getChild(0).pageGuid;
Assert.equal(pageGuidZero.length, 12);
// bookmarks have page guids
Assert.equal(root.getChild(1).pageGuid.length, 12);
Assert.equal(root.getChild(2).pageGuid.length, 12);
// folder and separator don't have page guids
Assert.equal(root.getChild(3).pageGuid, "");
Assert.equal(root.getChild(4).pageGuid, "");
Assert.notEqual(pageGuidZero, root.getChild(1).pageGuid);
Assert.notEqual(root.getChild(1).pageGuid, root.getChild(2).pageGuid);
root.containerOpen = false;
await PlacesUtils.bookmarks.eraseEverything();
});
add_task(async function test_updateBookmarksAndCheckGuids() {
let bookmarks = await PlacesUtils.bookmarks.insertTree({
guid: PlacesUtils.bookmarks.menuGuid,
children: [
{
title: "test folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
children: [
{
title: "1 title",
},
{
title: "test folder 2",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
},
],
},
],
});
let root = PlacesUtils.getFolderContents(bookmarks[0].guid).root;
Assert.equal(root.childCount, 2);
// ensure the bookmark and page guids remain the same after modifing other property.
let bookmarkGuidZero = root.getChild(0).bookmarkGuid;
let pageGuidZero = root.getChild(0).pageGuid;
await PlacesUtils.bookmarks.update({
guid: bookmarks[1].guid,
title: "1 title mod",
});
Assert.equal(root.getChild(0).title, "1 title mod");
Assert.equal(root.getChild(0).bookmarkGuid, bookmarkGuidZero);
Assert.equal(root.getChild(0).pageGuid, pageGuidZero);
let bookmarkGuidOne = root.getChild(1).bookmarkGuid;
let pageGuidOne = root.getChild(1).pageGuid;
await PlacesUtils.bookmarks.update({
guid: bookmarks[2].guid,
title: "test foolder 234",
});
Assert.equal(root.getChild(1).title, "test foolder 234");
Assert.equal(root.getChild(1).bookmarkGuid, bookmarkGuidOne);
Assert.equal(root.getChild(1).pageGuid, pageGuidOne);
root.containerOpen = false;
await PlacesUtils.bookmarks.eraseEverything();
});
add_task(async function test_addVisitAndCheckGuid() {
// add a visit and test page guid and non-existing bookmark guids.
let sourceURI = uri("http://test4.com/");
await PlacesTestUtils.addVisits({ uri: sourceURI });
Assert.equal(await PlacesUtils.bookmarks.fetch({ url: sourceURI }, null));
let options = histsvc.getNewQueryOptions();
let query = histsvc.getNewQuery();
query.uri = sourceURI;
let root = histsvc.executeQuery(query, options).root;
root.containerOpen = true;
Assert.equal(root.childCount, 1);
do_check_valid_places_guid(root.getChild(0).pageGuid);
Assert.equal(root.getChild(0).bookmarkGuid, "");
root.containerOpen = false;
await PlacesUtils.history.clear();
});
add_task(async function test_addItemsWithInvalidGUIDsFails() {
const INVALID_GUID = "XYZ";
try {
await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
guid: INVALID_GUID,
title: "XYZ folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
});
do_throw("Adding a folder with an invalid guid should fail");
} catch (ex) {}
let folder = await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
title: "test folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
});
try {
PlacesUtils.bookmarks.insert({
parentGuid: folder.guid,
guid: INVALID_GUID,
title: "title",
url: "http://test.tld",
});
do_throw("Adding a bookmark with an invalid guid should fail");
} catch (ex) {}
try {
PlacesUtils.bookmarks.insert({
parentGuid: folder.guid,
guid: INVALID_GUID,
type: PlacesUtils.bookmarks.TYPE_SEPARATOR,
});
do_throw("Adding a separator with an invalid guid should fail");
} catch (ex) {}
await PlacesUtils.bookmarks.eraseEverything();
});
add_task(async function test_addItemsWithGUIDs() {
const FOLDER_GUID = "FOLDER--GUID";
const BOOKMARK_GUID = "BM------GUID";
const SEPARATOR_GUID = "SEP-----GUID";
let bookmarks = await PlacesUtils.bookmarks.insertTree({
guid: PlacesUtils.bookmarks.menuGuid,
children: [
{
title: "test folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
guid: FOLDER_GUID,
children: [
{
title: "1 title",
guid: BOOKMARK_GUID,
},
{
type: PlacesUtils.bookmarks.TYPE_SEPARATOR,
guid: SEPARATOR_GUID,
},
],
},
],
});
let root = PlacesUtils.getFolderContents(bookmarks[0].guid).root;
Assert.equal(root.childCount, 2);
Assert.equal(root.bookmarkGuid, FOLDER_GUID);
Assert.equal(root.getChild(0).bookmarkGuid, BOOKMARK_GUID);
Assert.equal(root.getChild(1).bookmarkGuid, SEPARATOR_GUID);
root.containerOpen = false;
await PlacesUtils.bookmarks.eraseEverything();
});
add_task(async function test_emptyGUIDFails() {
try {
await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
guid: "",
title: "test folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
});
do_throw("Adding a folder with an empty guid should fail");
} catch (ex) {}
});
add_task(async function test_usingSameGUIDFails() {
const GUID = "XYZXYZXYZXYZ";
await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
guid: GUID,
title: "test folder",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
});
try {
await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
guid: GUID,
title: "test folder 2",
type: PlacesUtils.bookmarks.TYPE_FOLDER,
});
do_throw("Using the same guid twice should fail");
} catch (ex) {}
await PlacesUtils.bookmarks.eraseEverything();
});