summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/chrome/test_bug549192.xhtml
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/chrome/test_bug549192.xhtml')
-rw-r--r--browser/components/places/tests/chrome/test_bug549192.xhtml130
1 files changed, 130 insertions, 0 deletions
diff --git a/browser/components/places/tests/chrome/test_bug549192.xhtml b/browser/components/places/tests/chrome/test_bug549192.xhtml
new file mode 100644
index 0000000000..9f00e8b9c5
--- /dev/null
+++ b/browser/components/places/tests/chrome/test_bug549192.xhtml
@@ -0,0 +1,130 @@
+<?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://browser/content/places/places.css"?>
+<?xml-stylesheet href="chrome://browser/skin/places/tree-icons.css"?>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ title="549192: History view not updated after deleting entry"
+ onload="runTest();">
+
+ <script type="application/javascript"
+ src="chrome://browser/content/places/places-tree.js"/>
+ <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
+ <script type="application/javascript" src="head.js" />
+
+ <body xmlns="http://www.w3.org/1999/xhtml" />
+
+ <tree id="tree"
+ is="places-tree"
+ flatList="true"
+ flex="1">
+ <treecols>
+ <treecol label="Title" id="title" anonid="title" primary="true" style="order: 1;" flex="1"/>
+ </treecols>
+ <treechildren flex="1"/>
+ </tree>
+
+ <script type="application/javascript"><![CDATA[
+ /**
+ * Bug 874407
+ * Ensures that history views are updated properly after visits.
+ * Bug 549192
+ * Ensures that history views are updated after deleting entries.
+ */
+
+ function runTest() {
+ SimpleTest.waitForExplicitFinish();
+
+ (async function() {
+ await PlacesUtils.history.clear();
+
+ // Add some visits.
+ let timeInMicroseconds = PlacesUtils.toPRTime(Date.now() - 10000);
+
+ function newTimeInMicroseconds() {
+ timeInMicroseconds = timeInMicroseconds + 1000;
+ return timeInMicroseconds;
+ }
+
+ const transition = PlacesUtils.history.TRANSITIONS.TYPED;
+ let places =
+ [{ uri: Services.io.newURI("http://example.tld/"),
+ visitDate: newTimeInMicroseconds(), transition },
+ { uri: Services.io.newURI("http://example2.tld/"),
+ visitDate: newTimeInMicroseconds(), transition },
+ { uri: Services.io.newURI("http://example3.tld/"),
+ visitDate: newTimeInMicroseconds(), transition }];
+
+ await PlacesTestUtils.addVisits(places);
+
+ // 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.queryToQueryString(query, 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 = newTimeInMicroseconds());
+ await PlacesTestUtils.addVisits(places);
+
+ 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;
+
+ const promiseRemoved = PlacesTestUtils.waitForNotification(
+ "page-removed",
+ events => events[0].url === node.uri
+ );
+
+ tree.controller.remove();
+
+ const removeEvents = await promiseRemoved;
+ ok(
+ removeEvents[0].isRemovedFromStore,
+ "isRemovedFromStore should be true"
+ );
+ ok(treeView.treeIndexForNode(node) == -1, node.uri + " removed.");
+ is(treeView.rowCount, rc - i - 1, "Rows count decreased");
+ }
+
+ // Cleanup.
+ await PlacesUtils.history.clear();
+ })().then(() => SimpleTest.finish());
+ }
+ ]]></script>
+</window>