1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/xul/templates/tests/chrome/test_bug441785.xul Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,148 @@ 1.4 +<?xml version="1.0" ?> 1.5 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> 1.6 +<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?> 1.7 + 1.8 +<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 1.9 + <tree flex="20" id="t" ref="urn:data:row" datasources="rdf:null" seltype="single"> 1.10 + <treecols> 1.11 + <treecol flex="1" id="id" label="id" sort="rdf:http://dummy/rdf#id" /> 1.12 + <splitter class="tree-splitter"/> 1.13 + <treecol flex="1" id="title" label="title" sort="rdf:http://dummy/rdf#title" sortActive="true" sortDirection="ascending" /><splitter class="tree-splitter"/> 1.14 + </treecols> 1.15 + <template> 1.16 + <treechildren> 1.17 + <treeitem uri="rdf:*" seltype="single"> 1.18 + <treerow > 1.19 + <treecell label="rdf:http://dummy/rdf#id"/> 1.20 + <treecell label="rdf:http://dummy/rdf#title"/> 1.21 + </treerow> 1.22 + </treeitem> 1.23 + </treechildren> 1.24 + </template> 1.25 + </tree> 1.26 + <tree flex="20" id="tc" ref="urn:data:row" datasources="rdf:null" seltype="single" flags="dont-build-content"> 1.27 + <treecols> 1.28 + <treecol flex="1" id="idc" label="id" sort="rdf:http://dummy/rdf#id" /> 1.29 + <splitter class="tree-splitter"/> 1.30 + <treecol flex="1" id="titlec" label="title" sort="rdf:http://dummy/rdf#title" sortActive="true" sortDirection="ascending" /><splitter class="tree-splitter"/> 1.31 + </treecols> 1.32 + <template> 1.33 + <treechildren> 1.34 + <treeitem uri="rdf:*" seltype="single"> 1.35 + <treerow > 1.36 + <treecell label="rdf:http://dummy/rdf#id"/> 1.37 + <treecell label="rdf:http://dummy/rdf#title"/> 1.38 + </treerow> 1.39 + </treeitem> 1.40 + </treechildren> 1.41 + </template> 1.42 + </tree> 1.43 + 1.44 +<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/> 1.45 + 1.46 +<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.47 + 1.48 +<script type="application/x-javascript"> 1.49 +<![CDATA[ 1.50 + 1.51 +var buildCount = 0; 1.52 + 1.53 +SimpleTest.waitForExplicitFinish(); 1.54 + 1.55 +var TemplateBuilderListener = { 1.56 + willRebuild: function(aBuilder) { 1.57 + }, 1.58 + 1.59 + didRebuild: function(aBuilder) { 1.60 + ++buildCount; 1.61 + var remove = false; 1.62 + if (buildCount == 2) { 1.63 + remove =true; 1.64 + setTimeout(nextDataSource, 0); 1.65 + } else if (buildCount == 4) { 1.66 + remove = true; 1.67 + setTimeout(continueTest, 0); 1.68 + } 1.69 + if (remove) { 1.70 + var tree = document.getElementById('t'); 1.71 + var treec = document.getElementById('tc'); 1.72 + tree.builder.removeListener(TemplateBuilderListener); 1.73 + treec.builder.removeListener(TemplateBuilderListener); 1.74 + } 1.75 + }, 1.76 + 1.77 + QueryInterface: function (aIID) 1.78 + { 1.79 + if (!aIID.equals(Components.interfaces.nsIXULBuilderListener) && 1.80 + !aIID.equals(Components.interfaces.nsISupports)) 1.81 + throw Components.results.NS_ERROR_NO_INTERFACE; 1.82 + return this; 1.83 + } 1.84 +}; 1.85 + 1.86 +function runTest() { 1.87 + var tree = document.getElementById('t'); 1.88 + var treec = document.getElementById('tc'); 1.89 + 1.90 + try { 1.91 + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. 1.92 + getService(Components.interfaces.nsIRDFService); 1.93 + 1.94 + var s1 = window.location.href.replace(/test_bug441785.xul/, "bug441785-1.rdf"); 1.95 + var ds1 = rdfService.GetDataSourceBlocking(s1); 1.96 + 1.97 + var s2 = window.location.href.replace(/test_bug441785.xul/, "bug441785-2.rdf"); 1.98 + var ds2 = rdfService.GetDataSourceBlocking(s2); 1.99 + } catch (ex) { } 1.100 + 1.101 + tree.builder.addListener(TemplateBuilderListener); 1.102 + treec.builder.addListener(TemplateBuilderListener); 1.103 + tree.setAttribute('datasources', 'bug441785-1.rdf'); 1.104 + treec.setAttribute('datasources', 'bug441785-1.rdf'); 1.105 +} 1.106 + 1.107 +var oldtreefirstrow, oldtreecfirstrow; 1.108 + 1.109 +function nextDataSource() 1.110 +{ 1.111 + var tree = document.getElementById('t'); 1.112 + var treec = document.getElementById('tc'); 1.113 + tree.treeBoxObject.scrollToRow(10); 1.114 + treec.treeBoxObject.scrollToRow(10); 1.115 + 1.116 + is(tree.treeBoxObject.getFirstVisibleRow(), 10, "first tree row count datasource 1"); 1.117 + is(treec.treeBoxObject.getFirstVisibleRow(), 10, "second tree row count datasource 1"); 1.118 + 1.119 + tree.builder.addListener(TemplateBuilderListener); 1.120 + treec.builder.addListener(TemplateBuilderListener); 1.121 + tree.setAttribute('datasources', 'bug441785-2.rdf'); 1.122 + treec.setAttribute('datasources', 'bug441785-2.rdf'); 1.123 +} 1.124 + 1.125 +function continueTest() { 1.126 + var tree = document.getElementById('t'); 1.127 + var treec = document.getElementById('tc'); 1.128 + 1.129 + is(tree.treeBoxObject.getFirstVisibleRow(), 0, "first tree row count datasource 2"); 1.130 + is(treec.treeBoxObject.getFirstVisibleRow(), 0, "second tree row count datasource 2"); 1.131 + 1.132 + try { 1.133 + window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) 1.134 + .getInterface(Components.interfaces.nsIDOMWindowUtils) 1.135 + .garbageCollect(); 1.136 + } 1.137 + catch (e) { } 1.138 + 1.139 + // Hit the bug, crash 1.140 + // (not exactly the same kind of crash as 441785, but from the same cause) 1.141 + tree.parentNode.removeChild(tree); 1.142 + treec.parentNode.removeChild(treec); 1.143 + 1.144 + SimpleTest.finish(); 1.145 +} 1.146 + 1.147 +window.addEventListener("load", runTest, false); 1.148 + 1.149 +]]> 1.150 +</script> 1.151 +</window>