Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
// Test cookie database schema 14
"use strict";
add_task(async function test_schema_14_migration() {
// Set up a profile.
let profile = do_get_profile();
// Start the cookieservice, to force creation of a database.
Services.cookies.sessionCookies;
// Close the profile.
await promise_close_profile();
// Remove the cookie file in order to create another database file.
do_get_cookie_file(profile).remove(false);
// Create a schema 13 database.
let schema13db = new CookieDatabaseConnection(
do_get_cookie_file(profile),
13
);
let now = Math.round(Date.now() / 1000);
let N = 20;
// Populate db with N unexpired, unique cookies.
for (let i = 0; i < N; ++i) {
let cookie = new Cookie(
"test" + i,
"Some data",
"foo.com",
"/",
now + (i % 2 ? 34560000 * 2 : 0),
now,
now,
false,
false,
false,
false,
{},
Ci.nsICookie.SAMESITE_NONE,
Ci.nsICookie.SAMESITE_NONE,
Ci.nsICookie.SCHEME_UNSET,
!!(i % 2) // isPartitioned
);
schema13db.insertCookie(cookie);
}
schema13db.close();
schema13db = null;
// Check if we have the right entries
{
const dbConnection = Services.storage.openDatabase(
do_get_cookie_file(profile)
);
const stmt = dbConnection.createStatement(
"SELECT count(name) FROM moz_cookies WHERE expiry > unixepoch() + 34560000"
);
const success = stmt.executeStep();
Assert.ok(success);
const count = stmt.getInt32(0);
Assert.equal(count, 10);
stmt.finalize();
dbConnection.close();
}
// Reload profile.
await promise_load_profile();
// Assert inserted cookies are in the db and correctly handled by services.
Assert.equal(Services.cookies.countCookiesFromHost("foo.com"), N);
// Check if the time was reset
{
const dbConnection = Services.storage.openDatabase(
do_get_cookie_file(profile)
);
const stmt = dbConnection.createStatement(
"SELECT COUNT(name) FROM moz_cookies WHERE expiry <= unixepoch() + 34560000"
);
const success = stmt.executeStep();
Assert.ok(success);
const count = stmt.getInt32(0);
Assert.equal(count, 20);
stmt.finalize();
dbConnection.close();
}
// Cleanup
Services.cookies.removeAll();
do_close_profile();
});