Revision control

Copy as Markdown

Other Tools

<?xml version="1.0"?>
<!--
Any copyright is dedicated to the Public Domain.
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
type="text/css"?>
title="549192: History view not updated after deleting entry"
onload="runTest();">
<script src="head.js" />
<body xmlns="http://www.w3.org/1999/xhtml" />
<tree id="tree"
type="places"
flatList="true"
flex="1">
<treecols>
<treecol label="Title" id="title" anonid="title" primary="true" ordinal="1" flex="1"/>
</treecols>
<treechildren flex="1"/>
</tree>
<script>
<![CDATA[
/**
* Ensures that history views are updated properly after visits.
*
* Ensures that history views are updated after deleting entries.
*/
SimpleTest.waitForExplicitFinish();
function runTest() {
// The mochitest page is added to history.
waitForClearHistory(continue_test);
}
function continue_test() {
// Add some visits.
let vtime = Date.now() * 1000;
const ttype = PlacesUtils.history.TRANSITION_TYPED;
let places =
[{ uri: Services.io.newURI("http://example.tld/"),
visitDate: ++vtime, transition: ttype },
{ uri: Services.io.newURI("http://example2.tld/"),
visitDate: ++vtime, transition: ttype },
{ uri: Services.io.newURI("http://example3.tld/"),
visitDate: ++vtime, transition: ttype }];
addVisits(places, function() {
// Make a history query.
let query = PlacesUtils.history.getNewQuery();
let opts = PlacesUtils.history.getNewQueryOptions();
opts.sortingMode = opts.SORT_BY_DATE_DESCENDING;
let queryURI = PlacesUtils.history.queriesToQueryString([query], 1, opts);
// Setup the places tree contents.
var tree = document.getElementById("tree");
tree.place = queryURI;
// loop through the rows and check them.
let treeView = tree.view;
let selection = treeView.selection;
let rc = treeView.rowCount;
for (let i = 0; i < rc; i++) {
selection.select(i);
let node = tree.selectedNode;
is(node.uri, places[rc - i - 1].uri.spec,
"Found expected node at position " + i + ".");
}
is(rc, 3, "Found expected number of rows.");
// First check live-update of the view when adding visits.
places.forEach(place => place.visitDate = ++vtime);
addVisits(places, function() {
for (let i = 0; i < rc; i++) {
selection.select(i);
let node = tree.selectedNode;
is(node.uri, places[rc - i - 1].uri.spec,
"Found expected node at position " + i + ".");
}
// Now remove the pages and verify live-update again.
for (let i = 0; i < rc; i++) {
selection.select(0);
let node = tree.selectedNode;
tree.controller.remove("Removing page");
ok(treeView.treeIndexForNode(node) == Ci.nsINavHistoryResultTreeViewer.INDEX_INVISIBLE,
node.uri + " removed.");
ok(treeView.rowCount == rc - i - 1, "Rows count decreased");
}
// Cleanup.
waitForClearHistory(SimpleTest.finish);
});
});
}
]]></script>
</window>