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/handleerror01";
     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         */
     86 	      
     87 function DOMErrorHandlerN10054() { 
     88            }
     89    
     90         /**
     91          *    
     92 This method is called on the error handler when an error occurs.
     93 If an exception is thrown from this method, it is considered to be equivalent of returningtrue.
     94 
     95          * @param error 
     96 The error object that describes the error. This object may be reused by the DOM implementation across multiple calls to thehandleErrormethod.
     97 
     98          */
     99 DOMErrorHandlerN10054.prototype.handleError = function(error) {
    100          //
    101          //   bring class variables into function scope
    102          //
    103                 return false;
    104 }
    105 
    106 /**
    107 * 
    108 Add two CDATASection containing "]]>" and call Node.normalize
    109 with an error handler that stops processing.  Only one of the
    110 CDATASections should be split.
    111 
    112 * @author Curt Arnold
    113 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#ID-normalize
    114 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#parameter-split-cdata-sections
    115 * @see http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core#ID-ERRORS-DOMErrorHandler-handleError
    116 */
    117 function handleerror01() {
    118    var success;
    119     if(checkInitialization(builder, "handleerror01") != null) return;
    120     var doc;
    121       var elem;
    122       var domConfig;
    123       var elemList;
    124       var newChild;
    125       var oldChild;
    126       var child;
    127       var childValue;
    128       var childType;
    129       var retval;
    130       var errors = new Array();
    131 
    132       errorHandler = new DOMErrorHandlerN10054();
    133 	  
    134       
    135       var docRef = null;
    136       if (typeof(this.doc) != 'undefined') {
    137         docRef = this.doc;
    138       }
    139       doc = load(docRef, "doc", "barfoo");
    140       elemList = doc.getElementsByTagName("p");
    141       elem = elemList.item(0);
    142       oldChild = elem.firstChild;
    143 
    144       newChild = doc.createCDATASection("this is not ]]> good");
    145       retval = elem.replaceChild(newChild,oldChild);
    146       newChild = doc.createCDATASection("this is not ]]> bad");
    147       retval = elem.appendChild(newChild);
    148       domConfig = doc.domConfig;
    149 
    150       domConfig.setParameter("split-cdata-sections", true);
    151 	 domConfig.setParameter("error-handler", errorHandler.handleError);
    152 	 doc.normalizeDocument();
    153       elemList = doc.getElementsByTagName("p");
    154       elem = elemList.item(0);
    155       child = elem.lastChild;
    156 
    157       childValue = child.nodeValue;
    158 
    159       
    160 	if(
    161 	("this is not ]]> bad" == childValue)
    162 	) {
    163 	childType = child.nodeType;
    164 
    165       assertEquals("lastChildCDATA",4,childType);
    166        child = elem.firstChild;
    167 
    168       childValue = child.nodeValue;
    169 
    170       assert("firstChildNotIntact","this is not ]]> good" != childValue);
    171       
    172 	}
    173 	
    174 		else {
    175 			child = elem.firstChild;
    176 
    177       childValue = child.nodeValue;
    178 
    179       assertEquals("firstChildIntact","this is not ]]> good",childValue);
    180        
    181 		}
    182 	
    183 }
    184 
    185 
    186 
    187 
    188 function runTest() {
    189    handleerror01();
    190 }
    191