Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
// Test cookie database schema 17
"use strict";
add_task(async function test_schema_17_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 16 database.
let schema16db = new CookieDatabaseConnection(
do_get_cookie_file(profile),
16
);
let nowInUSec = Date.now() * 1000;
let futureInMSec = Date.now() + 60 * 60 * 24 * 1000;
schema16db.insertCookie(
new Cookie(
"test1",
"Some data",
"foo.com",
"/",
futureInMSec,
nowInUSec,
nowInUSec,
false,
false,
false,
false,
{},
Ci.nsICookie.SAMESITE_NONE,
Ci.nsICookie.SCHEME_UNSET
)
);
schema16db.close();
schema16db = null;
// 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"), 1);
// Check if the time was reset
{
const dbConnection = Services.storage.openDatabase(
do_get_cookie_file(profile)
);
const stmt = dbConnection.createStatement(
"SELECT updateTime FROM moz_cookies"
);
const results = [];
while (stmt.executeStep()) {
results.push(stmt.getInt64(0));
}
Assert.equal(results.length, 1);
Assert.greater(results[0], 0);
stmt.finalize();
dbConnection.close();
}
// Cleanup
Services.cookies.removeAll();
do_close_profile();
});