add_task(async function () { // Check particular unicode urls with insertion and selection APIs to ensure // url hashes match properly. const URLS = [ "http://президент.президент/президент/", "https://www.аррӏе.com/аррӏе/", "http://名がドメイン/",
];
for (let url of URLS) {
await PlacesTestUtils.addVisits(url); Assert.ok(await PlacesUtils.history.fetch(url), "Found the added visit");
await PlacesUtils.bookmarks.insert({
url,
parentGuid: PlacesUtils.bookmarks.unfiledGuid,
}); Assert.ok(
await PlacesUtils.bookmarks.fetch({ url }), "Found the added bookmark"
);
let db = await PlacesUtils.promiseDBConnection();
let rows = await db.execute( "SELECT id FROM moz_places WHERE url_hash = hash(:url) AND url = :url",
{ url: new URL(url).href }
); Assert.equal(rows.length, 1, "Matched the place from the database");
let id = rows[0].getResultByName("id");
// Now, suppose the urls has been inserted without proper parsing and retry. // This should normally not happen through the API, but we have evidence // it somehow happened.
await PlacesUtils.withConnectionWrapper("test_hash.js", async wdb => {
await wdb.execute(
`
UPDATE moz_places SET url_hash = hash(:url), url = :url
WHERE id = :id
`,
{ url, id }
);
rows = await wdb.execute( "SELECT id FROM moz_places WHERE url_hash = hash(:url) AND url = :url",
{ url }
); Assert.equal(rows.length, 1, "Matched the place from the database");
});
}
});
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-06)
¤
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.