_( "Making sure after processing incoming bookmarks, they show up in the right order"
); const { Bookmark, BookmarkFolder } = ChromeUtils.importESModule( "resource://services-sync/engines/bookmarks.sys.mjs"
); const { Weave } = ChromeUtils.importESModule( "resource://services-sync/main.sys.mjs"
); const { Service } = ChromeUtils.importESModule( "resource://services-sync/service.sys.mjs"
);
async function serverForFoo(engine) {
await generateNewKeys(Service.collectionKeys);
let clientsEngine = Service.clientsEngine;
let clientsSyncID = await clientsEngine.resetLocalSyncID();
let engineSyncID = await engine.resetLocalSyncID(); return serverForUsers(
{ foo: "password" },
{
meta: {
global: {
syncID: Service.syncID,
storageVersion: STORAGE_VERSION,
engines: {
clients: {
version: clientsEngine.version,
syncID: clientsSyncID,
},
[engine.name]: {
version: engine.version,
syncID: engineSyncID,
},
},
},
},
crypto: {
keys: encryptPayload({
id: "keys", // Generate a fake default key bundle to avoid resetting the client // before the first sync. default: [
await Weave.Crypto.generateRandomKey(),
await Weave.Crypto.generateRandomKey(),
],
}),
},
[engine.name]: {},
}
);
}
async function resolveConflict(
engine,
collection,
timestamp,
buildTree,
message
) {
let guids = { // These items don't exist on the server.
fx: Utils.makeGUID(),
nightly: Utils.makeGUID(),
support: Utils.makeGUID(),
customize: Utils.makeGUID(),
// These exist on the server, but in a different order, and `res` // has completely different children.
res: Utils.makeGUID(),
tb: Utils.makeGUID(),
async function get_engine() { return Service.engineManager.get("bookmarks");
}
add_task(async function test_local_order_newer() {
let engine = await get_engine();
let server = await serverForFoo(engine);
await SyncTestingInfrastructure(server);
add_task(async function test_remote_order_newer() {
let engine = await get_engine();
let server = await serverForFoo(engine);
await SyncTestingInfrastructure(server);
add_task(async function test_bookmark_order() {
let engine = await get_engine();
let store = engine._store;
_("Starting with a clean slate of no bookmarks");
await store.wipe();
await assertBookmarksTreeMatches( "",
[
{
guid: PlacesUtils.bookmarks.menuGuid,
index: 0,
},
{
guid: PlacesUtils.bookmarks.toolbarGuid,
index: 1,
},
{ // Index 2 is the tags root. (Root indices depend on the order of the // `CreateRoot` calls in `Database::CreateBookmarkRoots`).
guid: PlacesUtils.bookmarks.unfiledGuid,
index: 3,
},
{
guid: PlacesUtils.bookmarks.mobileGuid,
index: 4,
},
], "clean slate"
);
function bookmark(name, parent) {
let bm = new Bookmark("http://weave.server/my-bookmark");
bm.id = name;
bm.title = name;
bm.bmkUri = "http://uri/";
bm.parentid = parent || "unfiled";
bm.tags = []; return bm;
}
function folder(name, parent, children) {
let bmFolder = new BookmarkFolder("http://weave.server/my-bookmark-folder");
bmFolder.id = name;
bmFolder.title = name;
bmFolder.parentid = parent || "unfiled";
bmFolder.children = children; return bmFolder;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.