Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
add_task(async function setup() {
let path = await setupPlacesDatabase("places_v85.sqlite");
let db = await Sqlite.openConnection({ path });
// Verify the new columns don't exist yet on moz_origins.
let columns = await db.execute(
"SELECT name FROM pragma_table_info('moz_origins')"
);
let columnNames = columns.map(r => r.getResultByName("name"));
Assert.ok(
!columnNames.includes("block_until_ms"),
"block_until_ms should not exist on moz_origins before migration"
);
Assert.ok(
!columnNames.includes("block_pages_until_ms"),
"block_pages_until_ms should not exist on moz_origins before migration"
);
// Seed an existing moz_origins row to verify it survives migration.
await db.execute(`
INSERT OR IGNORE INTO moz_origins (prefix, host, frecency)
VALUES ('https://', 'example.com', 100)
`);
await db.close();
});
add_task(async function database_is_valid() {
// Accessing the database for the first time triggers migration.
Assert.equal(
PlacesUtils.history.databaseStatus,
PlacesUtils.history.DATABASE_STATUS_UPGRADED
);
const db = await PlacesUtils.promiseDBConnection();
Assert.equal(await db.getSchemaVersion(), CURRENT_SCHEMA_VERSION);
// Verify both new columns exist on moz_origins.
let columns = await db.execute(
"SELECT name FROM pragma_table_info('moz_origins')"
);
let columnNames = columns.map(r => r.getResultByName("name"));
Assert.ok(
columnNames.includes("block_until_ms"),
"block_until_ms column should exist on moz_origins after migration"
);
Assert.ok(
columnNames.includes("block_pages_until_ms"),
"block_pages_until_ms column should exist on moz_origins after migration"
);
// Verify existing rows survived with NULL defaults for the new columns.
let rows = await db.execute(
`SELECT host, block_until_ms, block_pages_until_ms
FROM moz_origins
WHERE host = 'example.com'`
);
Assert.equal(
rows.length,
1,
"Existing moz_origins row should survive migration"
);
Assert.equal(
rows[0].getResultByName("block_until_ms"),
null,
"block_until_ms should default to NULL for existing rows"
);
Assert.equal(
rows[0].getResultByName("block_pages_until_ms"),
null,
"block_pages_until_ms should default to NULL for existing rows"
);
});