summaryrefslogtreecommitdiffstats
path: root/comm/suite/components/places/tests/chrome/test_bug549491.xul
diff options
context:
space:
mode:
Diffstat (limited to 'comm/suite/components/places/tests/chrome/test_bug549491.xul')
-rw-r--r--comm/suite/components/places/tests/chrome/test_bug549491.xul100
1 files changed, 100 insertions, 0 deletions
diff --git a/comm/suite/components/places/tests/chrome/test_bug549491.xul b/comm/suite/components/places/tests/chrome/test_bug549491.xul
new file mode 100644
index 0000000000..f211d62fd2
--- /dev/null
+++ b/comm/suite/components/places/tests/chrome/test_bug549491.xul
@@ -0,0 +1,100 @@
+<?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="549491: 'The root node is never visible' exception when details of the root node are modified "
+ 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"/>
+ <splitter class="tree-splitter"/>
+ <treecol label="Date" anonid="date" flex="1"/>
+ </treecols>
+ <treechildren flex="1"/>
+ </tree>
+
+ <script>
+ <![CDATA[
+ /**
+ * Bug 549491
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=549491
+ *
+ * Ensures that changing the details of places tree's root-node doesn't
+ * throw.
+ */
+ 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() {
+ addVisits(
+ {uri: Services.io.newURI("http://example.tld/"),
+ visitDate: Date.now() * 1000,
+ transition: PlacesUtils.history.TRANSITION_TYPED},
+ function() {
+ // Make a history query.
+ let query = PlacesUtils.history.getNewQuery();
+ let opts = PlacesUtils.history.getNewQueryOptions();
+ let queryURI = PlacesUtils.history.queriesToQueryString([query], 1, opts);
+
+ // Setup the places tree contents.
+ let tree = document.getElementById("tree");
+ tree.place = queryURI;
+
+ let rootNode = tree.result.root;
+ let obs = tree.view.QueryInterface(Ci.nsINavHistoryResultObserver);
+ obs.nodeHistoryDetailsChanged(rootNode, rootNode.time, rootNode.accessCount);
+ obs.nodeTitleChanged(rootNode, rootNode.title);
+ ok(true, "No exceptions thrown");
+
+ // Cleanup.
+ waitForClearHistory(SimpleTest.finish);
+ });
+ }
+
+ /**
+ * Clears history invoking callback when done.
+ */
+ function waitForClearHistory(aCallback) {
+ const TOPIC_EXPIRATION_FINISHED = "places-expiration-finished";
+ let observer = {
+ observe: function(aSubject, aTopic, aData) {
+ Services.obs.removeObserver(this, TOPIC_EXPIRATION_FINISHED);
+ aCallback();
+ }
+ };
+ Services.obs.addObserver(observer, TOPIC_EXPIRATION_FINISHED);
+ let hs = Cc["@mozilla.org/browser/nav-history-service;1"].
+ getService(Ci.nsINavHistoryService);
+ hs.QueryInterface(Ci.nsIBrowserHistory).removeAllPages();
+ }
+
+ ]]></script>
+</window>