diff options
Diffstat (limited to 'comm/suite/components/places/tests/chrome/test_bug549192.xul')
-rw-r--r-- | comm/suite/components/places/tests/chrome/test_bug549192.xul | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/comm/suite/components/places/tests/chrome/test_bug549192.xul b/comm/suite/components/places/tests/chrome/test_bug549192.xul new file mode 100644 index 0000000000..55e5502764 --- /dev/null +++ b/comm/suite/components/places/tests/chrome/test_bug549192.xul @@ -0,0 +1,118 @@ +<?xml version="1.0"?> + +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/licenses/publicdomain/ + --> + +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> +<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" + type="text/css"?> + +<?xml-stylesheet href="chrome://communicator/content/places/places.css"?> +<?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?> +<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?> + +<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + title="549192: History view not updated after deleting entry" + onload="runTest();"> + + <script src="chrome://mochikit/content/MochiKit/packed.js" /> + <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" /> + <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[ + /** + * Bug 1388827 / Bug 874407 + * Ensures that history views are updated properly after visits. + * + * Bug 549192 + * Ensures that history views are updated after deleting entries. + */ + const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm"); + + 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> |