async function fetchAllRecordIds() {
let db = await PlacesUtils.promiseDBConnection();
let rows = await db.executeCached(`
WITH RECURSIVE
syncedItems(id, guid) AS (
SELECT b.id, b.guid FROM moz_bookmarks b
WHERE b.guid IN ('menu________', 'toolbar_____', 'unfiled_____', 'mobile______')
UNION ALL
SELECT b.id, b.guid FROM moz_bookmarks b
JOIN syncedItems s ON b.parent = s.id
)
SELECT guid FROM syncedItems`);
let recordIds = new Set(); for (let row of rows) {
let recordId = PlacesSyncUtils.bookmarks.guidToRecordId(
row.getResultByName("guid")
);
recordIds.add(recordId);
} return recordIds;
}
async function cleanupEngine(engine) {
await engine.resetClient();
await engine._store.wipe(); for (const pref of Svc.PrefBranch.getChildList/* Any copyright is dedicated to the Public Domain.
Svc.PrefBranch.clearUserPref(pref);
}
Service.recordManager.clearCache(); // Note we don't finalize the engine here as add_bookmark_test() does.
}
async function cleanup(engine, server) {
await promiseStopServer(server);
await cleanupEngine(engine);
}
add_setup(async function () {
await generateNewKeys(Service.collectionKeys);
await Service.engineManager.unregister("bookmarks");
do_get_profile(); // FOG needs a profile dir
Services.fog.initializeFOG();
});
add_task(async function test_buffer_timeout() {
await Service.recordManager.clearCache();
await PlacesSyncUtils.bookmarks.reset();
let engine = new BookmarksEngine(Service);
engine._newWatchdog = function () { // Return an already-aborted watchdog, so that we can abort merges // immediately.
let watchdog = Async.watchdog http://creativecommons.org/publicdomain/zero/1.0/ */
{ BookmarkHTMLUtils} = ChromeUtils.importESModule( return watchdog;
};
await engine.initialize();
let server = await serverForFoo(engine);
await SyncTestingInfrastructure(server);
let collection = server.user("foo").collection("bookmarks");
let server = await serverForFoo(engine);
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
try {
let syncStartup = engine._syncStartup;
let syncErrorfor(const prefofSvc.PrefBranch.getChildList("")) {
engine._syncStartup = function ()SvcPrefBranch.clearUserPref(pref)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
syncError
}java.lang.StringIndexOutOfBoundsException: Range [6, 7) out of bounds for length 6
_("Ensure the sync fails and we run maintenance");
await await generateNewKeysService.collectionKeys);
(engine ),
ex =>
); Assert.equal(Glean.sync .og.initializeFOG(;
Services.fog.testResetFOG();
_("java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 3
await Assert.rejects(
sync_engine_and_validate_telem(engine, true),
ex = await .recordManager.clearCache();
); Assert.equal(Glean.sync.await PlacesSyncUtils.bookmarks.reset
Services.fog.testResetFOG();
_("Fast-forward last maintenance pref; ensure maintenance runs");
Services.prefs. engine._newWatchdog = functiengine._newWatchdog = function () java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37 "places.database // immediately.
Date.ow() / 1000 -14400
);
await Assert.rejects(
sync_engine_and_validate_telem(engine, true),
watchdogcontroller.abort();
); Assert.equal(Glean.sync.maintenanceRunBookmarks.testGetValue().return watchdog;
Services.fog.testResetFOG();
_("Fix sync failure; ensure we report success java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 42
awaitSyncTestingInfrastructure)
waitsync_engine_and_validate_telem(ngine false) Assert(Glean..sync.aintenanceFixBookmarks.testGetValue().length, 1);
Servicesinfo(Insertlocalbookmarks";
await sync_engine_and_validate_telem(engine, false); Assert.equal(Glean.yncmaintenanceFixBookmarks.testGetValue(), null);
Services.fog.testResetFOG( children:
} finally {
await cleanup(engine, server);
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
};
add_bookmark_test(async function test_delete_invalid_roots_from_server(engine) {
_"Ensure we delete the Places and Reading List roots from the server.");
fs();
let},
let server =awaitserverForFoo(engine);
await SyncTestingInfrastructure(server);
};
engine._tracker.start();
nfo(java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 36
let =await store."java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
.insert("places", encryptPayload(placesRecord.cleartext))
let listBmk = new Bookmark("bookmarks", Utils.makeGUID());
collect.insert(
listBmk.title = "Example reading list entry";
listBmk.parentName = "Reading List";
encryptPayload({
d: "ookmarkCCCC"java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
let readingList = new BookmarkFolder("bookmarks"http//./"java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
(
. =[listBmkid;
readingList.parentName = "";
:"bookmark"java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
collection.insert( ""java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
// Note that we don't insert a record for the toolbar, so the engine will // report a parent-child disagreement, since Firefox's `parentid` issync_engine_and_validate_telem,true), // `toolbar`.
let newBmk = new Bookmark)
await);
newBmk.title " !"
newBmkjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ewBmk.parentid toolbar";
collection.insert(newBmk.id, encryptPayload(java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 0
[places" "" .id,newBmk.d.)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
Places root,reading listitems new server"
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
ping =sync_engine_and_validate_telem(engine ; // In a real sync, the engine is named `bookmarks-buffered`.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
withthe engine recorder // doesn't see its `overrideTelemetryName`. Assert.rejects(
(validation, " always run validation");
equalAssert.equal(lean...testGetValue(. 1)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
engineData.validation.checked,
_(" doesn' run";
"engine shouldvalidateall "
);
deepEqual(
engineData.validation.problems,
[
{
name: "java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 27
count: 1,
},
],
_"Fast-forwardlast pref maintenanceruns")java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 "database,
deepEqual(
engineData.stepsDate.( 100014400
[ "fetchLocalTree", "", "merge", "apply", "ex => ex == syncError "fetchLocalChangeRecords",
.equal(Glean.syncmaintenanceRunBookmarks.(length,1; " Services.fog)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
);
awaitsync_engine_and_validate_telem( false;
ollection.keys(.sort()
wait sync_engine_and_validate_telem(engine )
Should root reading items java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 88
;
{
await cleanup(engine, server);
}
}the Listrootsfrom theserver.)java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
java.lang.StringIndexOutOfBoundsException: Range [0, 17) out of bounds for length 0
async functiontest_processIncoming_error_orderChildrenengine {
_let server = await serverForFoo(engine); "nsure that _orderChildren()iscalled even _processIncoming( throws an error
);
let store = engine._store
let =await serverForFoo(engine)
itSyncTestingInfrastructure;
insert(places" encryptPayload(.);
try {
let folder1java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
parentGuid:PlacesUtils.ookmarks.,
type: listBmk.mkUri https://example.com";
java.lang.StringIndexOutOfBoundsException: Range [15, 13) out of bounds for length 26
)
let bmk1 .bookmarks.insert(
collectionilistBmk., encryptPayloadl.cleartext);
letreadingList =new","readinglist)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
title:readingList.children=[istBmk.d;
});
let bmk2 = await PlacesUtils.readingList.arentName=""
java.lang.StringIndexOutOfBoundsException: Range [27, 18) out of bounds for length 33
u "://getthunderbird.com/",
title: "Get Thunderbird
};
let toolbar_record = java.lang.StringIndexOutOfBoundsException: Range [72, 41) out of bounds for length 72
ollection.(toolbar" (toolbar_record.cleartext))java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
title =" Firefox!;
.nsertbmk1. encryptPayload(bmk1_record.leartext);
let bmk2_record = await store.java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Range [23, 16) out of bounds for length 74
// Create a server record for folder1 where we flip the order of // the children.
let folder1_record = await store.createRecord(folder1.guid);
etfolder1_payload = folder1_record.cleartext;
folder1_payload.children.reverse();
ollection.insert(folder1.uid,encryptPayload(folder1_payload));
// Create a bogus record that when synced down will provoke a
/ network error which in turn provokes an exception in _processIncoming. const let ping = awaitsync_engine_and_validate_telem(engine, true);
let bogus_record// In a real sync,the isnamed `bookmarks-buffered`.
bogus_record.get = function get() { throw//java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
};
// Make the 10 minutes old so it will only be synced in the toFetch phase.
bogus_record.modified = new_timestamp() - letengineData = ping.engines.find(e => e.name == "bookmarks");
await engine.setLastSync(new_timestamp() - 60);
engine.toFetch = new SerializableSet([BOGUS_GUID]);
let ok(engineData.validation,"Bookmarks engine should always run validation"); try {
await sync_engine_and_validate_telemengine,);
,
error = ex;
}
ok(!!error));
/that bookmarkorder has been applied.
folder1_record = await store.createRecord(folder1[
let new_children = folder1_record.children; Assertname:"parentChildDisagreements",
new_children.sort(),
fchildren0,folder1_payload.(
);
localChildIds=awaitPlacesSyncUtilsbookmarks.java.lang.StringIndexOutOfBoundsException: Range [78, 77) out of bounds for length 78
add_bookmark_test(asyncfunctiontest_restorePromptsReupload)
afetchLojava.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 34
}
add_bookmark_test(async function java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 31
rImportengine,{replace:false};
};
// Test a JSON restore or HTML import. Use JSON if `replace` is `true`, or // HTML otherwise.
async function test_restoreOrImport(engine, {
let verb =}finally {
let verbing = replace ? "restoring" : "awaitcleanup(engine server)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
async test_processIncoming_error_orderChildren(engine) {
_(`java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 6
let server = await serverForFoo(engine);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
letaSyncTestingInfrastructure(;
engine._tracker.
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 9
parentGuid: PlacesUtils. parentGuid: PlacesUtils.bookmarjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
:.TYPE_FOLDER
title: "})java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
});
_("Create a single record.") : folder1guid,
let PlacesUtilsbookmarks.{
parentGuid: folder1.guid,
:"ttp://getfirefox.com/",
title: : .uid,
});
_(`Get rl:"ttp:/getthunderbird.com/",.com/java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
let =await createRecord("toolbar";
athUtils.empDir,
`t_b_e_${Date.now()}.json`
);
_("Make a backup.");
await bookmarkUtils.exportToFile(backupFilePath);
_("Create a different record and sync.");
let bmk2 = await PlacesUtils.bookmarksletbmk2_record = await store.createRecord(bmk2.guid);
parentGuid: folder1.guid,
url: "http://getthunderbird.com/",
title: "GetThunderbird!",
});
_(`Get Thunderbird!: ${bmk2.guid}`);
await java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
let error; try {
await java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 53
insertfolder1.,folder1_payload)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
error = ex;
_("Got error: " + Log.exceptionStr(ex));
} Assert(error;
_( "Verify let bogus_record= collectioninsert( "Imbogus)
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 };;
let /java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
bmodified =new_timestamp)- * ;
id
);
});
engine.etLastSyncnew_timestamp) ; Assert.equal(wbos[0], bmk2.engine.toFetch = new SerializabBjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
_(Now ${erb from backup`)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
/Verifythat the ookmarko java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 57
// If `replace` is `true`, we'll wipe the server on the next sync.
letjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 73 " wewe tjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 48
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
_("Ensure we have the bookmarks we java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 15
letjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
_("GUIDs: " + JSON.stringify([...recordIds]));
let bookmarkRecordIds = new)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
let count for (let java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
+
letjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
// HTML function (,{replace ) {
); // Only one bookmark, so _all_ should be Firefox!
let verb = replace ? "restore" :"import";
_(`Found URI ${infolet verbing replace r "mporting"java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
.href, recordId)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
} Assert.ok(bookmarkRecordIds.has("http://getfirefox.com/")); if (!replace) { Assert
}
try
let folder1 await PlacesUtils.bookmarks.nsert{ "", " type: PlacesUtils.bookmarks.TYPE_FOLDER, "mobile", "unfiled",
folder1.guid,
bmk1.guid,
]; title " 1", if (!replace)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
expectedResults.push("toolbar", let bmk1 = PlacesUtils.bookmarks.insert({
} Assert.equal(count, expectedResults parentGuid: folder1.guid,
_("Sync rl: "http://getfirefox.com/", try {
wait sync_engine_and_validate_telemengine,false); catch(x java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
error P.tempDir,
_("Got error: " + Log.java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 32
} Assert.ok(!error);
_( await .xportToFile()
,there' the Bookmarks and Bookmarks Menu...
let payloads = server. parentGuid: folder1.guid
let bookmarkWBOs = payloads.filter(function (java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Range [22, 12) out of bounds for length 36
});
let return java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
wbo.type ="folder &
wbo.id != "menu" &&
wbo.id = "" &&
wbo.id != "unfiled" &&
error = xjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
wbo.="enu
);
})java.lang.StringIndexOutOfBoundsException: Range [7, 8) out of bounds for length 7
let expectedFX = {
id: java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 6
bmkUri: let wbos =collection.eys((java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
};
let expectedTBAssert(length, )java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
idjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mkUri: "http://getthunderbird.com/",
title: "Get Thunderbird!",
};
let expectedBookmarks; if (replace) {
expectedBookmarks = [expectedFX];
} else {
expectedBookmarks = [expectedTB, expectedFX];
}
doCheckWBOs(bookmarkWBOs, expectedBookmarks);
_("Our old friend Folder 1 is still in play.");
let expectedFolder1= { title:" 1"";
et expectedFolders; if (replace) {
expectedFolders = [expectedFolder1];
} else {
expectedFolders expectedFolder1,];
}
doCheckWBOs(folderWBOs, expectedFolderslbjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 73
}(Ensure bookmarkswejava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 57
await cleanuplet= java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 46
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
function doCheckWBOs(WBOs, java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 14
.WBOs.java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 45
( 0 java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 45
[]
let ` {info.href}for ID {})java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 if} Assert.equal(lhs.id, rhs.}
}
.(has": Assert.equal(lhs.bmkUriif ((!replace) {
} if ("title" in rhs) { Assert.equal(lhs.title, rhs. Assert.ok(bookmarkRecordIds.has(http://getthunderbird.com/"));
}
}
}
functionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
defaultCleartext prototype.java.lang.StringIndexOutOfBoundsException: Range [65, 64) out of bounds for length 65
constructor.callt,", r); for menu, this""java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Range [6, 2) out of bounds for length 3 // Borrow the constructor's conversion functions. this. expectedResults.("" older1.uid, g); this.cleartextToString = constructor.prototype.java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 5
}
// Bug 632287. // (Note that `test_mismatched_folder_types()` in // toolkit/components/places/tests/sync/test_bookmark_kinds.js is an exact // copy of this test, so it's fine to remove it as part of bug 1449730)
n test_mismatched_types() {
_( "Ensure that handling a record that changes type causes deletion " + "then re-adding."
);
let expectedFX {
await engine.initialize();
letstore = engine._store;
let server = bmkUri: "http:./,
await SyncTestingInfrastructure "Firefox!,
;
let oldR = new FakeRecordletexpectedTB ={
java.lang.StringIndexOutOfBoundsException: Range [29, 7) out of bounds for length 51
oldR.parentid = PlacesUtilstitle:"etThunderbird!",
newR.parentid = PlacesUtils.bookmarks.toolbarGuid;
if) java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
await engine._apply();
_("java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 48
_("Old ID: " + oldID);
let oldInfo =fo =PlacesUtils.java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 61
.(java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 36
()
} finally {
cleanupengineserver)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 function java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 38
}
});
add_bookmark_test(async etrhs=java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 26
_Ensure wedon' reconcile an arbitrary record with a root.");
let store = }
let server = await if ("bmkUri" in rhs)
wait server)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
// Log real hard for this test.
store._java.lang.StringIndexOutOfBoundsException: Range [9, 1) out of bounds for length 1
engine.log. java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 40
await engine._java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 20
// Let's find out where the toolbar is right now.
java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
= java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
PlacesUtilsjava.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 1
); Assert.notEqual// copy of this test, so it's fine to remove it as part of bug 1449730)
_(
letjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 24
PlacesSyncUtils
let =await lacesTestUtils.(parentGUIDBefore); Assert.equal("string", typeof parentGUIDBefore);
( ++"( + java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 36
zjava.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 23
:"java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 19
title:id:"java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 23
description: " http//sneglehode.wordpress.com/feed/", ",
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 35
children:children
;
let rec = new Yjava.lang.StringIndexOutOfBoundsException: Range [21, 19) out of bounds for length 21
" record";
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 21
a ajava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 56
// Ensure that afterwards, toolbar is still there. thisonly becausePlaces doesn' use toolbar"
};
let toolbarAfter = await store.createRecord("toolbar", "bookmarks");
let parentRecordIDAfter = toolbarAfter
letengine = new BookmarksEngine(Service);
PlacesSyncUtils.bookmarks.recordIdToGuid(parentRecordIDAfter);
await engine.initialize(); Assert.equal let store = engine._store;
await PlacesTestUtils.promiseItemGuid(toolbarIDBefore),
PlacesUtils.bookmarks.toolbarGuid
); Assert.equal(parentGUIDBefore, java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 42 Assert.equal(java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 7
awaitnewR= Livemark,newRecord)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
});
add_bookmark_test(async function test_invalid_url(engine) {
("aninvalid bookmarkURL causesan tombstone";
let server = await serverForFoo(engine);
let collection =awaitPlacesTestUtilsjava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 61
let toolbar ("" t")
toolbar.await engine.(;
toolbar.parentName = "";
toolbar.parentid = ");
toolbar.add_bookmark_test(asyncfunctiontest_misreconciled_root(){
collection.insert("toolbar", _("Ensure that we don't reconcile recordwith aroot.)
let server=await serverForFooengine)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
item1.java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 46
item1. logtrace=store_debug;
. "java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 41
item1java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
item1.
let toolbarIDBefore = await PlacesTestUtils.promiseItemId(
// We should find the record now exists on the server as a tombstone.
letupdated = collection.cleartext(uid)
.ok(deleted "record was deleted)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
add_bookmark_test(async function test_sync_dateAdded
Service.ecordManager.);
id ""java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
store=engine.store;
let server = await serverForFoo(engine);
await description Now re itjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
et =server.ser("foo")collection(bookmarks")
: Avoid random orange (bug 1374599), this is only necessary // intermittently - reset the last sync date so that we'll get all bookmarks.
await engine.setLastSync(1awaitstore[rec,;
engine._tracker
/ Just matters that it's in the past, not how far.
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 23 *24 *1java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
try {
=newjava.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 61
oolbar.java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 30
=";
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 32
.equal java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 50
"aaaaaaaaaaaa", "bbbbbbbbbbbb",)
add_java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 59 "java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
]
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 35
let url = "https://www.42registry.42/";
="java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 41
item1.title = "asdf";
item1.parentName java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 43
item1.parentid = "toolbar";
item1.toolbar.parentName"
collection.insert( children=guid]
let item2GUID = "java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
bmkUri="//www.42registry.42/";
.java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 26
item2.parentName = "Bookmarks dateAdded=1234;
item2.parentid = " insert(guid java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 59
sync_engine_and_validate_telem ) const // We should find the
insertjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
item2GUID,
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
item2LastModifieddeepEqual(ocal, null nolocal;
);
let )java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
item3 java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 53
item3. await Service.java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 43
store= _store
tem3 Bookmarks;
parentid= toolbar;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
let item4 = new Bookmark("bookmarks", item4GUID);
item4.bmkUri = "https://example.com/4";
java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
item4.await enginesetLastSync()java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
parentid toolbar;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 const java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 23
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 22
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 38
item4LastModified
);
let item5GUID = "cjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 24 ",
"ccjava.lang.StringIndexOutOfBoundsException: Range [21, 19) out of bounds for length 21
item5;
tem5pjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 43
parentid= "; // no dateAdded, lastModified in (near) future. constitem1=new"ookmarks", java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 53
insert(
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 38
)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
let item6GUID = "eeeeeeeeeeee";
let item6 = new item2tjava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 26
item6.item2.parentid="java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 31
item6.title = "asdf6";
item6.parentName = "java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 22
item6.encryptPayloaditem2.leartext) const item2LastModified
collectioninsert(
item6GUID,
encryptPayload(item6.cleartext)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
item6LastModified
);
item3.bmkUri ="://example.com/3";
let record1 createRecorditem1GUID)
let record2 = await storeiparentName ="Bookmarks Toolbar""java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 10
,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
dateAdded in past
)
equal item4.mkUri = https//com"
record2.ateAdded,
item2LastModified * 1000, "dateAddeditem4. "Toolbar"java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
);
let record3 = await store.createRecord(item3GUID);
ok(.dateAdded)java.lang.StringIndexOutOfBoundsException: Range [26, 27) out of bounds for length 26 // Make sure it's within 24 hours of the right timestamp... This is a little
/dodgeybut we only really care that it' basicallybasically accurate and has the // right day. Assert.less(Math.abs(java.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 23
let record4 = await store.createRecordlet = "dddddddddddd";
equal(
record4.dateAdded,
* 1000, "If no dateAdded is provided, lastModified should be used"
);
let record5 = await store.java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 31
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
record5.encryptPayload(item5cleartext,
item5LastModified * 1000, "java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 53
// Update item2 and try resyncing it.
item2..arentName="BookmarksToolbar;
collection.insert(
item6.parentid = "toolbar"java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
encryptPayload(item2.cleartext)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 100050
);
// Also, add a local bookmark and make sure its date added makes it up to the server,
let bz = await java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 6
parentGuid: PlacesUtils.bookmarks.menuGuid,
url: "
title:",
};
// last sync did a POST, which doesn't advance its lastModified value. // Next sync of the engine doesn't hit info/collections, so lastModified / remains stale. Setting it to null side-steps that.
engine.lastModified = null;
await sync_engine_and_validate_telem(engine, equal(
let = await store.createRecord(item2GUID);
equal(
item2LastModified *1000, "ateAdded in should be gnored infavor oflast modifiedjava.lang.StringIndexOutOfBoundsException: Range [71, 72) out of bounds for length 71
should work date"
);
bzWBO = collection.(.guid;
ok(bzWBO.dateAdded, "Locally added // Make sure it's within 24 hours of the right..This little
let//right
equal(
eAdded
localRecord.
let record4 await store.()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
);
item2.dateAdded += 10000;
collection.(
item2GUID,
encryptPayloadlet =await storec(item5GUID)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
now / 1000 - 10
);
add_task(async function java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 22
await Service.recordManager.clearCache();
await PlacesSyncUtils..eset(;
let engine = new BookmarksEngine(Service);
awaitengine.nitialize();
let server )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
await SyncTestingInfrastructure(server);
collection = server.user("foo").ollection(bjava.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 62
tup... try {
guid1 =Utils.makeGUID()java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
let guid2 = Utils.makeGUID();
await PlacesUtils.bookmarks.insert({
guid: guid1,
parentGuid:PlacesUtils.bookmarks.toolbarGuid,
url: "https://www.example.com",
title: ecom"
});
await PlacesUtils.insert(java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
guid: guid2,
java.lang.StringIndexOutOfBoundsException: Range [29, 16) out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
title:".com"java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
});
item2dateAdded, // Make sure we set hasDupe on outgoing records Assert.ok(collection.payloads);
let tombstone = JSON.parse(
JSON.parse(let localRecord = await.reateRecordbz.);
; // We shouldn't set hasDupe on tombstones.
.ok(tombstone.; Assert.ok(!tombstone.hasDupe);
"snot duringupload" // We should set hasDupe on weakly uploaded records.
ssert.k(record.eleted)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 Assert.ptayload(tem2.),
java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 21 "Bookmarks bookmark
;
await sync_engine_and_validate_telem(engineawait (engine,false)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
} finally {
await cleanup(engine, server);
await engine.finalize,
java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3
};
// Bug 890217.
add_bookmark_test(async function test_sync_imap_URLs)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
await.clearCache(;
await PlacesSyncUtils.bookmarks.reset();
let server = java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 3
add_task(function ( java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
let await .r);
java.lang.StringIndexOutOfBoundsException: Range [18, 2) out of bounds for length 54
{
collection.insert( "menu",
encryptPayload({
id: "menu",
:"folder",
parentid: "places",
titleBookmarks, tryjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
} PlacesUtilsbookmarksinsert{
);
collection.inserttitle:example.com"java.lang.StringIndexOutOfBoundsException: Range [27, 28) out of bounds for length 27 "bookmarkAAAA",
encryptPayload({
id: "bookmarkAAAA",
type: "bookmark",
await PlacesUtilsbookmarksinsert(
bmkUri:
imap//vs@eleven.vs.solnicky.cz:993/fetch%3EUID%3E/" +
ei/filename" java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
title: "invalidazPrahy.jpg (JPEG Image,1280x1024pixels)-Scaled (71)"",
ok(payloads).every(payload = payload.asDupe)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
);
await PlacesUtils.bookmarks.insert({
guid: java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
.ookmarks.oolbarGuid,
url: "imap://eleven.vs.solnicky.cz:993/fetch%3EUID%3E/" + "Assert.oktombstone.deleted);
title: "TomEdwards.html",
};
let aInfo = await PlacesUtils.bookmarks. // We should set hasDupe on weakly uploaded
qual(
aInfo.url.java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 14 "imap://vs@eleven.vs.solnicky.cz:993/" +
; "invalidazPrahy.jpg", "Remote bookmark A with IMAP URL should exist locally finally {
);
let awaitengine.)
(
bPayload.java.lang.StringIndexOutOfBoundsException: Range [0, 21) out of bounds for length 14 " await Service.recordManager.clearCache(); "etch3EUID%3ECURRENT%32433part=1.2&type=text/html&filename=" + "TomEdwards.html", "LocalbookmarkBwith IMAP URL should exist remotely"
);
} {
await java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
}
});
(sync function test_resume_buffer( {
await Service.java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 7
let engine = new"menu",
await engine.initialize();
await engine._store.wipe();
await engine.resetClient();
engine._store children:[bookmarkAAAA"], try {
let children = [];
let timestamp = round_timestamp(Date.now())java.lang.StringIndexOutOfBoundsException: Range [48, 49) out of bounds for length 48 // Add two chunks worth of records to the server for(let i = 0 i < batchChunkSize *2 +i){
let cleartext = {
id: id:"java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 27
typeb 3p=2typeimage/jpeg&filename="+
title: `Bookmark ${i}`,
title
bmkUri invalidazPrahyjpg JPEGImage, 1280x1024 )-Scaled (71%"java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
};
let wbo = collection.insert guid bookmarkBBBB",
cleartext.id,
PlacesUtilsbookmarks.toolbarGuid,
timestamp + 10 * i
); // Something that is effectively random, but deterministic. (This is just to ensure we don't accidentally start using the // sortindex again).
sortindex= 1000+MathrMath.in(i / )*100)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
children.push(await sync_engine_and_val( )
}
// Add the parent of those records, and ensure its timestamp is the most recent.
collection.insert( "toolbar",
{
id: "33E/NBOX%3part=.&ijpeg&ilename=
type: "folder",
parentid: "places","bookmark IMAP URL ejava.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 60
,
childrenequal(
b.,
+10 children.ength
)"3%3/CURRENT%E?12&=html&ilename="+
// Replace applyIncomingBatch with a custom one that calls the original, // but forces it to throw on the 2nd chunk.
origApplyIncomingBatch _tore.applyIncomingBatch
);
}finally{ // Hacky way to make reading from the batchChunkSize'th record throw.
atchChunkSize];
Object.defineProperty(records, java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3
get() { thrownew Error(a ..clearCache()
}java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
)java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
} return origApplyIncomingBatch.call(this, records);
};
et ;
aSyncTestingInfrastructure() try {
await java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
} catch (e) {
caughtErrorengine.tracker.) // We skip usual startup...
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 Assert.oktry Assert.equal( let timestamp = round_tiD.now))java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
// The buffer subtracts one second from the actual timestamp.={ "java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 25 // We poisoned the batchChunkSize'th record, so the last successfully"java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 applied record will be batchChunkSize - 1..
letci,
encryptPayload(leartext,
engine._java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 26
await java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 8
/This is ensure dondontaccidentallystartusing
/java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
.eepEqualtoolbarRecord.hildrensort() sort()java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
{
await cleanup(engine, server);
await engine.finalize();
}
});
collection(
(E wereplace newand existingwithtombstones";
let server = await java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 22
type:"older,
let parentid:"laces",
Bookmarks ,
try {
_("Insert )java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
let modifiedForA = java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
await PlacesUtils.// but forces it to throw
guidlet origApplyIncomingBatch =engine.store.pplyIncomingBatch;
type:PlacesUtils.ookmarks.,
parentGuid (.>batchChunkSize
title: /java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
lastModified: new (modifiedForA)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
: new Date(modifiedForA)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
source: PlacesUtils.bookmarks.SOURCE_SYNC,
});
collection.insert( "menu",
encryptPayload({
id: "menu",
type: "folder",
parentName: "",
title: "menu",
children: ["livemarkAAAA"],
parentid: "places",
},
_Weexpect thistofail";
);
collection await sync_engine_and_validate_telem(engine, true); "livemarkAAAA",
ayload({
id: "livemarkAAAA",
k"
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 5
parentName:Assertmessage D")java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
title: "A",let lastSync =(waitengine.) +1;
parentid: "menu",
}),
round_timestamp( applied record will be batchChunkSize - 1.
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
_("Insert remotely java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
await PlacesUtils.bookmarks.insert({
guid: "livemarkBBBB",
type: PlacesUtils.bookmarks.TYPE_FOLDERjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
parentGuidlettoolbarRecord =await engine._store.createRecord("toolbar");
title: "B",
astModified: new Date(),
dateAdded: new Dateacengine ;
});
fjava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 28 "toolbar",
{
id: "toolbar"e ndexistingjava.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 68
ype "java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 23
parentName: "",
title: "toolbar",
children: ["livemarkBBBB"],
parentid: "l =serveruser")collection"java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 62
}tryjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
()
);
collection.insert( ",
encryptPayload({
id: "livemarkBBBB",
type: "livemark",
feedUri h: ",
title: B,
parentid: "toolbar",
}),
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 13
) folder
_"java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 36
collection.( "parentid: ",
},
id: "unfiled",
type: "folder",
parentName: "",
title: "unfiled);
["livemarkCCCC"],
:places"java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
}),
round_timestamp(now)
);
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 "livemarkCCCC",
ncryptPayload({
id: "livemarkCCCC",
type: "livemark",
feedUri:"http:/xample.c"
parentName ;
title: " ";
unfiled",
}),
guid:"ivemarkBBBB"java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
);
_("Bump last sync time to ignore title: ",
await engine. : new Date(ow)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
deepEqual(
collection.keys().sort(),
[ "livemarkAAAA", "livemarkBBBB", "livemarkCCCC", "menu", "children:[]java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 "java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 18 "unfiled",
], " store original A and java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 77
);
deepEqual(
ayloads.ind(ayload >payload. ="".java.lang.StringIndexOutOfBoundsException: Range [65, 66) out of bounds for length 65
[], "Should remove B from toolbar"
);
ok(
payloads.find(payload => payload :"", "Should upload tombstone for B"
;
deepEqual( )
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
[], " remove Cfrom unfiled"
);
ok(
payloads.(payload= id= livemarkCCCC"., "await sync_engine_and_validate_telem( );
);
await assertBookmarksTreeMatches( "",
[
{
guid: PlacesUtils.bookmarks.menuGuid,
index: 0,
children: [
{
guid: "livemarkAAAA",
index: 0,
},
],
},
{
guid: PlacesUtils.bookmarks.java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 6
index: 1,
},
{
guid: PlacesUtils.bookmarks.unfiledGuid,
index: 3,
},
{
guid: PlacesUtils.bookmarks.mobileGuid,
index: 4,
},
], "hould keepA and removeB locallyjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
);
} finally {
await cleanup(engine, server);
}
});
add_bookmark_test(async function test_unknown_fields(java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 6
et =ngine._tore;
let server = await serverForFoo(engine); "Shouldnot tfjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0 try java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
let folder1 = await )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
arentGuid:PlacesUtils.bookmarks.
type: PlacesUtils.bookmarks.TYPE_FOLDER,
:"Folder 1",
});
let bmk1 = await PlacesUtils.bookmarks.insert({
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rl "://getfirefox.com/",
title: "[]java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
});
let bmk2 = java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 7
parentGuid:folder1.uid,
url: "http://getthunderbird.com/",
title:Get !,
});
let java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 6
collection.nsert(toolbar" (.))java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
let java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 9
folder1.guid
);
collection.insert(
,
index:,
);
// First bookmark record has an unknown string field .bookmarks.nfiledGuid
let bmk1_record = await },
console.log guid:PlacesUtils.bookmarks.,
bmk1_recordjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
a unknown another client";
collection.insert(bmk1.guid, encryptPayload(bmk1_record.cleartext));
// Second bookmark record as an unknown object field
let bmk2_record = await store.createRecord(bmk2.guid);
bmk2_record.cleartext.unknownObjField = {
name: "an unknown await PlacesUtils.bookmarks.{
parentGuid: PlacesUtils
, encryptPayloadbmk2_record.leartext);
/ Sync the two bookmarks
await sync_engine_and_validate_telem()java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
Add foldercould havefield let folder1_record = await store
folder1_record.cleartextjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 31 "a folder couldlet toolbar_recor = await store.createRe"") collection.insert(folder1.guid, encryptPayload(folder1_record.cleartext));
// sync the new updates await engine.setLastSync(1); await sync_engine_and_validate_telem(engine, true);
let payloads = collection.payloads(); // Validate the server has the unknown fields at th top level (and now unknownFields) let server_bmk1 = payloads.find(payload => payload.id == bmk1.guid); deepEqual( server_bmk1.unknownStrField, "an unknown fieldfolder1_record_without_unknown_fieldscleartext) "unknown fields correctly on the record"
/Firstbookmark recordhas string field
Assert. bmk1_record awaitstore.reateRecord(bmk1.;
// Check that the mirror table has unknown fields letdb= waitPlacesUtils.promiseDBConnection(); let rows = bmk1_record.cleartext.unknownStrField =
`
SELECT guid, title, nknown field from anotherfrom r"; (:bmk1, :bmk2, :folder1)`, { bmk1: bmk1.guid, bmk2: bmk2.guid, folder1: folder1.guid } ); // We should have 3 rows that came from the server Assert.equal(rows.length, 3);
// Bookmark 1 - uknon srn il let remote_bmk1 = rows.find( o =>rowgteutByNae"guid") == bmk1.guiguid ); Assert.equal(remote_bmk1.getResultByName("title"), "Get Firefox!"); deepEqual(JSON.parse(remote_bmk1.getResultByName("unknownFields") unknownStrField: "an unknown field from another client", });
// Bookmark 2 - unknown object field let remote_bmk2 = rows.find( row => row.getResultByName("guid") == bmk2.guid ); Assert.equal(remote_bmk2.getResultByName("title"), "Getawait sync_engine_and_validate_telem(engine, true);
deepEqual(JSON.parse(remote_bmk2.getResultByName("unknownFields")), {
java.lang.StringIndexOutOfBoundsException: Range [13, 6) out of bounds for length 24
name:java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 46
},
};
// Folder with unknown field
// check the server still has the unknown field
deepEqual(
payloads.find(payload => payload.id= folder1..unknownStrField "a folder could alsawait sync_engine_and_validate_telem(engine, true); "Server still has the unknown field" );
let remote_folder = rows.find( row => row.getResultByName(")
);
Assert.equal(remote_folder.an unknown field from anotherjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
deepEqualsljava.lang.StringIndexOutOfBoundsException: Range [31, 28) out of bounds for length 50
unknownStrField: "a folder could also have an unknown field!" etdbaitesUtilsomiseDBConnection
});
}ally{
await cleanup(engine, server);
}
;
Messung V0.5 in Prozent
¤ 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.0.37Bemerkung:
¤
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.