buster-view.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. /* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
  2. /* This Source Code Form is subject to the terms of the Mozilla Public
  3. * License, v. 2.0. If a copy of the MPL was not distributed with this
  4. * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  5. var view =
  6. {
  7. onRun : function()
  8. {
  9. runQueue.mArray = new Array();
  10. var sels = this.boxObject.view.selection,a=new Object(),b=new Object(),k;
  11. var rowResource, name, path;
  12. for (k=0;k<sels.getRangeCount();k++){
  13. sels.getRangeAt(k,a,b);
  14. for (var l=a.value;l<=b.value;l++) {
  15. rowResource = this.builder.getResourceAtIndex(l);
  16. itemCache.getItem(rowResource);
  17. }
  18. }
  19. runQueue.run();
  20. },
  21. displayTest : function()
  22. {
  23. var current = this.boxObject.view.selection.currentIndex;
  24. var rowResource = this.builder.getResourceAtIndex(current);
  25. var item = itemCache.getItem(rowResource);
  26. },
  27. browseForRDF : function()
  28. {
  29. var fp = doCreateRDFFP('Xalan Description File',
  30. nsIFilePicker.modeOpen);
  31. var res = fp.show();
  32. if (res == nsIFilePicker.returnOK) {
  33. var furl = fp.fileURL;
  34. this.setDataSource(fp.fileURL.spec);
  35. }
  36. },
  37. dump_Good : function()
  38. {
  39. var enumi = this.mResultDS.GetSources(krTypeSucc, kGood, true);
  40. var k = 0;
  41. while (enumi.hasMoreElements()) {
  42. k += 1;
  43. dump(enumi.getNext().QueryInterface(nsIRDFResource).Value+"\n");
  44. }
  45. dump("found "+k+" good tests\n");
  46. },
  47. prune_ds : function()
  48. {
  49. if (this.mResultDS) {
  50. this.mResultDS.QueryInterface(nsIRDFPurgeableDataSource).Sweep();
  51. }
  52. regressionStats.init()
  53. itemCache.mArray = new Array();
  54. },
  55. setDataSource : function(aSpec)
  56. {
  57. var baseSpec;
  58. if (aSpec) {
  59. baseSpec = aSpec;
  60. }
  61. else {
  62. baseSpec = document.getElementById("xalan_rdf").value;
  63. }
  64. if (this.mXalanDS && this.mXalanDS.URI == baseSpec) {
  65. this.mXalanDS.QueryInterface(nsIRDFRemoteDataSource);
  66. this.mXalanDS.Refresh(true);
  67. }
  68. else {
  69. if (this.mXalanDS) {
  70. this.database.RemoveDataSource(view.mXalanDS);
  71. }
  72. this.mXalanDS = kRDFSvc.GetDataSourceBlocking(baseSpec);
  73. if (!this.mXalanDS) {
  74. alert("Unable do load DataSource: "+baseSpec);
  75. return;
  76. }
  77. this.database.AddDataSource(this.mXalanDS);
  78. }
  79. regressionStats.init();
  80. if (!this.mResultDS) {
  81. this.mResultDS = doCreate(kRDFInMemContractID,
  82. nsIRDFDataSource);
  83. this.database.AddDataSource(view.mResultDS);
  84. if (!this.mResultDS) {
  85. alert("Unable to create result InMemDatasource");
  86. return;
  87. }
  88. }
  89. this.builder.rebuild();
  90. document.getElementById("xalan_rdf").value = baseSpec;
  91. runItem.prototype.kXalan.init(runItem.prototype.kXalan.URLTYPE_STANDARD,
  92. 0, baseSpec, null, null);
  93. },
  94. loadHtml : function(aUrl, aListener)
  95. {
  96. const nsIIRequestor = Components.interfaces.nsIInterfaceRequestor;
  97. const nsIWebProgress = Components.interfaces.nsIWebProgress;
  98. var req = this.mIframe.webNavigation.QueryInterface(nsIIRequestor);
  99. var prog = req.getInterface(nsIWebProgress);
  100. prog.addProgressListener(aListener, nsIWebProgress.NOTIFY_ALL);
  101. this.mIframe.webNavigation.loadURI(aUrl, 0,null,null,null);
  102. },
  103. fillItemContext : function()
  104. {
  105. var index = view.boxObject.view.selection.currentIndex;
  106. var res = view.builder.getResourceAtIndex(index);
  107. var purp = view.mXalanDS.GetTarget(res, krTypePurp, true);
  108. return (purp != null);
  109. }
  110. }
  111. regressionStats =
  112. {
  113. observe: function(aSubject, aTopic, aData)
  114. {
  115. if (aTopic != 'success') {
  116. return;
  117. }
  118. var arc = (aData == "true") ? krTypeSuccCount : krTypeFailCount;
  119. this.assertNewCount(aSubject, arc, 1);
  120. },
  121. init: function()
  122. {
  123. if (this.mRegressionDS) {
  124. this.mRegressionDS.QueryInterface(nsIRDFPurgeableDataSource).Sweep();
  125. }
  126. else {
  127. this.mRegressionDS =
  128. doCreate(kRDFInMemContractID, nsIRDFDataSource);
  129. view.database.AddDataSource(this.mRegressionDS);
  130. }
  131. },
  132. getParent: function(aDS, aSource)
  133. {
  134. // parent chached?
  135. var parent = this.mRegressionDS.GetTarget(aSource, krTypeParent, true);
  136. if (!parent) {
  137. var labels = view.mXalanDS.ArcLabelsIn(aSource);
  138. while (labels.hasMoreElements()) {
  139. var arc = labels.getNext().QueryInterface(nsIRDFResource);
  140. if (arc.Value.match(this.mChildRE)) {
  141. parent = view.mXalanDS.GetSource(arc, aSource, true);
  142. // cache the parent
  143. this.mRegressionDS.Assert(aSource, krTypeParent,
  144. parent, true);
  145. }
  146. }
  147. }
  148. return parent;
  149. },
  150. assertNewCount: function(aSource, aArc, aIncrement)
  151. {
  152. var root = kRDFSvc.GetResource('urn:root');
  153. var count = 0;
  154. // parent chached?
  155. var parent = this.getParent(view.XalanDS, aSource);
  156. while (parent && !parent.EqualsNode(root)) {
  157. var countRes = view.mResultDS.GetTarget(parent, aArc, true);
  158. if (countRes) {
  159. count = countRes.QueryInterface(nsIRDFInt).Value;
  160. }
  161. var newCountRes = kRDFSvc.GetIntLiteral(count + aIncrement);
  162. if (!newCountRes) {
  163. return;
  164. }
  165. if (countRes) {
  166. view.mResultDS.Change(parent, aArc, countRes, newCountRes);
  167. }
  168. else {
  169. view.mResultDS.Assert(parent, aArc, newCountRes, true);
  170. }
  171. parent = this.getParent(view.XalanDS, parent);
  172. }
  173. },
  174. mRegressionDS: 0,
  175. mChildRE: /http:\/\/www\.w3\.org\/1999\/02\/22-rdf-syntax-ns#_/
  176. }
  177. function rdfObserve(aSubject, aTopic, aData)
  178. {
  179. if (aTopic == "success") {
  180. var target = (aData == "true") ? kGood : kBad;
  181. view.mResultDS.Assert(aSubject, krTypeSucc, target, true);
  182. regressionStats.observe(aSubject, aTopic, aData);
  183. }
  184. }
  185. runItem.prototype.kObservers.push(rdfObserve);