Bug 549491 - "The root node is never visible" exception when details of the root node are modified. r=mak

This commit is contained in:
Asaf Romano 2010-06-22 14:44:38 +02:00
parent c4a79d838d
commit c0d6725ddb
3 changed files with 87 additions and 0 deletions

View File

@ -787,6 +787,10 @@ PlacesTreeView.prototype = {
if (!this._tree || !this._result)
return;
// Nothing to do for the root node.
if (aNode == this._rootNode)
return;
let row = this._getRowForNode(aNode);
if (row == -1)
return;

View File

@ -50,6 +50,7 @@ _CHROME_TEST_FILES = \
test_0_multiple_left_pane.xul \
test_0_bug510634.xul \
test_bug549192.xul \
test_bug549491.xul \
$(NULL)
libs:: $(_CHROME_TEST_FILES)

View File

@ -0,0 +1,82 @@
<?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/places.css"?>
<?xul-overlay href="chrome://browser/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 type="application/javascript"
src="chrome://mochikit/content/MochiKit/packed.js" />
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.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 type="application/javascript"><![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.
*/
SimpleTest.waitForExplicitFinish();
function runTest() {
const Cc = Components.classes;
const Ci = Components.interfaces;
Components.utils.import("resource://gre/modules/Services.jsm");
PlacesUtils.bhistory.removeAllPages();
PlacesUtils.history
.addVisit(Services.io.newURI("http://example.tld/", null, null),
Date.now() * 1000, null, PlacesUtils.history.TRANSITION_TYPED, false, 0);
// 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.
PlacesUtils.bhistory.removeAllPages();
SimpleTest.finish();
}
]]></script>
</window>