Home | History | Annotate | Download | only in core
      1 
      2 /*
      3 Copyright  2001-2004 World Wide Web Consortium, 
      4 (Massachusetts Institute of Technology, European Research Consortium 
      5 for Informatics and Mathematics, Keio University). All 
      6 Rights Reserved. This work is distributed under the W3C Software License [1] in the 
      7 hope that it will be useful, but WITHOUT ANY WARRANTY; without even 
      8 the 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     */
     19 function getTargetURI() {
     20       return "http://www.w3.org/2001/DOM-Test-Suite/level3/core/handleerror02";
     21    }
     22 
     23 var docsLoaded = -1000000;
     24 var 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 //
     35 function 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.
     70 function loadComplete() {
     71     if (++docsLoaded == 1) {
     72         setUpPageStatus = 'complete';
     73     }
     74 }
     75 
     76 
     77      /**
     78       *    Inner class implementation for variable errorHandler 
     79       */
     80 var errorHandler;
     81 
     82 /**
     83         * Constructor
     84 
     85         * @param errors Value from value attribute of nested var element
     86         */
     87 	      
     88 function DOMErrorHandlerN10053(errors) { 
     89            this.errors = errors;
     90            }
     91    
     92         /**
     93          *    
     94 This method is called on the error handler when an error occurs.
     95 If an exception is thrown from this method, it is considered to be equivalent of returningtrue.
     96 
     97          * @param error 
     98 The error object that describes the error. This object may be reused by the DOM implementation across multiple calls to thehandleErrormethod.
     99 
    100          */
    101 DOMErrorHandlerN10053.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 * 
    121 Normalize document with two DOM L1 nodes.
    122 Use an error handler to continue from errors and check that more than one
    123 error 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 */
    131 function 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 
    170 function runTest() {
    171    handleerror02();
    172 }
    173