1 2/* 3Copyright é 2001-2004 World Wide Web Consortium, 4(Massachusetts Institute of Technology, European Research Consortium 5for Informatics and Mathematics, Keio University). All 6Rights Reserved. This work is distributed under the W3Cî Software License [1] in the 7hope that it will be useful, but WITHOUT ANY WARRANTY; without even 8the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9 10[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 11*/ 12 13 14 15 /** 16 * Gets URI that identifies the test. 17 * @return uri identifier of test 18 */ 19function getTargetURI() { 20 return "http://www.w3.org/2001/DOM-Test-Suite/level3/core/handleerror02"; 21 } 22 23var docsLoaded = -1000000; 24var builder = null; 25 26// 27// This function is called by the testing framework before 28// running the test suite. 29// 30// If there are no configuration exceptions, asynchronous 31// document loading is started. Otherwise, the status 32// is set to complete and the exception is immediately 33// raised when entering the body of the test. 34// 35function setUpPage() { 36 setUpPageStatus = 'running'; 37 try { 38 // 39 // creates test document builder, may throw exception 40 // 41 builder = createConfiguredBuilder(); 42 setImplementationAttribute("namespaceAware", true); 43 44 docsLoaded = 0; 45 46 var docRef = null; 47 if (typeof(this.doc) != 'undefined') { 48 docRef = this.doc; 49 } 50 docsLoaded += preload(docRef, "doc", "barfoo"); 51 52 if (docsLoaded == 1) { 53 setUpPageStatus = 'complete'; 54 } 55 } catch(ex) { 56 catchInitializationError(builder, ex); 57 setUpPageStatus = 'complete'; 58 } 59} 60 61 62 63// 64// This method is called on the completion of 65// each asychronous load started in setUpTests. 66// 67// When every synchronous loaded document has completed, 68// the page status is changed which allows the 69// body of the test to be executed. 70function loadComplete() { 71 if (++docsLoaded == 1) { 72 setUpPageStatus = 'complete'; 73 } 74} 75 76 77 /** 78 * Inner class implementation for variable errorHandler 79 */ 80var errorHandler; 81 82/** 83 * Constructor 84 85 * @param errors Value from value attribute of nested var element 86 */ 87 88function DOMErrorHandlerN10053(errors) { 89 this.errors = errors; 90 } 91 92 /** 93 * 94This method is called on the error handler when an error occurs. 95If an exception is thrown from this method, it is considered to be equivalent of returningtrue. 96 97 * @param error 98The error object that describes the error. This object may be reused by the DOM implementation across multiple calls to thehandleErrormethod. 99 100 */ 101DOMErrorHandlerN10053.prototype.handleError = function(error) { 102 // 103 // bring class variables into function scope 104 // 105 var errors = errorHandler.errors; 106 var severity; 107 severity = error.severity; 108 109 110 if( 111 (2 == severity) 112 ) { 113 errors[errors.length] = error; 114 115 } 116 return true; 117} 118 119/** 120* 121Normalize document with two DOM L1 nodes. 122Use an error handler to continue from errors and check that more than one 123error was reported. 124 125* @author Curt Arnold 126* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#Document3-normalizeDocument 127* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#parameter-namespaces 128* @see http://www.w3.org/TR/2003/WD-charmod-20030822/ 129* @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#ID-ERRORS-DOMErrorHandler-handleError 130*/ 131function handleerror02() { 132 var success; 133 if(checkInitialization(builder, "handleerror02") != null) return; 134 var doc; 135 var docElem; 136 var domConfig; 137 var pList; 138 var pElem; 139 var text; 140 var textValue; 141 var retval; 142 var brElem; 143 var errors = new Array(); 144 145 errorHandler = new DOMErrorHandlerN10053(errors); 146 147 148 var docRef = null; 149 if (typeof(this.doc) != 'undefined') { 150 docRef = this.doc; 151 } 152 doc = load(docRef, "doc", "barfoo"); 153 domConfig = doc.domConfig; 154 155 domConfig.setParameter("error-handler", errorHandler.handleError); 156 pList = doc.getElementsByTagName("p"); 157 pElem = pList.item(0); 158 brElem = doc.createElement("br"); 159 retval = pElem.appendChild(brElem); 160 brElem = doc.createElement("br"); 161 retval = pElem.appendChild(brElem); 162 doc.normalizeDocument(); 163 assertSize("twoErrors",2,errors); 164 165} 166 167 168 169 170function runTest() { 171 handleerror02(); 172} 173