Home | History | Annotate | Download | only in dom
      1 /*
      2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
      3  * Copyright (C) 2006 Samuel Weinig <sam.weinig (at) gmail.com>
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Library General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2 of the License, or (at your option) any later version.
      9  *
     10  * This library is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  * Library General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Library General Public License
     16  * along with this library; see the file COPYING.LIB.  If not, write to
     17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     18  * Boston, MA 02110-1301, USA.
     19  */
     20 
     21 module core {
     22 
     23     interface [
     24         CustomHeader,
     25         CustomMarkFunction,
     26         CustomPushEventHandlerScope,
     27         CustomToJS,
     28         EventTarget,
     29         GenerateNativeConverter,
     30         InlineGetOwnPropertySlot,
     31         Polymorphic
     32     ] Node
     33 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
     34         : Object, EventTarget
     35 #endif /* defined(LANGUAGE_OBJECTIVE_C) */
     36      {
     37         // NodeType
     38         const unsigned short      ELEMENT_NODE                   = 1;
     39         const unsigned short      ATTRIBUTE_NODE                 = 2;
     40         const unsigned short      TEXT_NODE                      = 3;
     41         const unsigned short      CDATA_SECTION_NODE             = 4;
     42         const unsigned short      ENTITY_REFERENCE_NODE          = 5;
     43         const unsigned short      ENTITY_NODE                    = 6;
     44         const unsigned short      PROCESSING_INSTRUCTION_NODE    = 7;
     45         const unsigned short      COMMENT_NODE                   = 8;
     46         const unsigned short      DOCUMENT_NODE                  = 9;
     47         const unsigned short      DOCUMENT_TYPE_NODE             = 10;
     48         const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
     49         const unsigned short      NOTATION_NODE                  = 12;
     50 
     51         readonly attribute [ConvertNullStringTo=Null] DOMString        nodeName;
     52 
     53                  // FIXME: the spec says this can also raise on retrieval.
     54                  attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString        nodeValue
     55                      setter raises(DOMException);
     56 
     57         readonly attribute unsigned short   nodeType;
     58         readonly attribute Node             parentNode;
     59         readonly attribute NodeList         childNodes;
     60         readonly attribute Node             firstChild;
     61         readonly attribute Node             lastChild;
     62         readonly attribute Node             previousSibling;
     63         readonly attribute Node             nextSibling;
     64         readonly attribute NamedNodeMap     attributes;
     65         readonly attribute Document         ownerDocument;
     66 
     67         [OldStyleObjC, Custom] Node insertBefore(in [Return] Node newChild,
     68                                                  in Node refChild)
     69             raises(DOMException);
     70         [OldStyleObjC, Custom] Node replaceChild(in Node newChild,
     71                                                  in [Return] Node oldChild)
     72             raises(DOMExceptionJSC);
     73         [Custom] Node               removeChild(in [Return] Node oldChild)
     74             raises(DOMException);
     75         [Custom] Node               appendChild(in [Return] Node newChild)
     76             raises(DOMException);
     77 
     78         boolean            hasChildNodes();
     79         Node               cloneNode(in boolean deep);
     80         void               normalize();
     81 
     82         // Introduced in DOM Level 2:
     83 
     84         [OldStyleObjC] boolean isSupported(in DOMString feature,
     85                                            in [ConvertNullToNullString] DOMString version);
     86 
     87         readonly attribute [ConvertNullStringTo=Null] DOMString        namespaceURI;
     88                  attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString        prefix
     89                      setter raises(DOMException);
     90         readonly attribute [ConvertNullStringTo=Null] DOMString        localName;
     91 
     92         boolean            hasAttributes();
     93 
     94         // Introduced in DOM Level 3:
     95 
     96         readonly attribute [ConvertNullStringTo=Null] DOMString       baseURI;
     97 
     98                  // FIXME: the spec says this can also raise on retrieval.
     99                  attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString       textContent
    100                      setter raises(DOMException);
    101 
    102         boolean            isSameNode(in Node other);
    103         boolean            isEqualNode(in Node other);
    104         [ConvertNullStringTo=Null] DOMString          lookupPrefix(in [ConvertNullToNullString] DOMString namespaceURI);
    105         boolean            isDefaultNamespace(in [ConvertNullToNullString] DOMString namespaceURI);
    106         [ConvertNullStringTo=Null] DOMString          lookupNamespaceURI(in [ConvertNullToNullString] DOMString prefix);
    107 
    108         // DocumentPosition
    109         const unsigned short      DOCUMENT_POSITION_DISCONNECTED = 0x01;
    110         const unsigned short      DOCUMENT_POSITION_PRECEDING    = 0x02;
    111         const unsigned short      DOCUMENT_POSITION_FOLLOWING    = 0x04;
    112         const unsigned short      DOCUMENT_POSITION_CONTAINS     = 0x08;
    113         const unsigned short      DOCUMENT_POSITION_CONTAINED_BY = 0x10;
    114         const unsigned short      DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
    115 
    116         unsigned short     compareDocumentPosition(in Node other);
    117 
    118 #if 0
    119         DOMObject          getFeature(in DOMString feature,
    120                                       in DOMString version);
    121         DOMUserData        setUserData(in DOMString key,
    122                                        in DOMUserData data,
    123                                        in UserDataHandler handler);
    124         DOMUserData        getUserData(in DOMString key);
    125 #endif /* 0 */
    126 
    127         // IE extensions
    128         readonly attribute Element          parentElement;
    129 
    130 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
    131         // Objective-C extensions
    132         readonly attribute boolean          isContentEditable;
    133 #endif /* defined(LANGUAGE_OBJECTIVE_C) */
    134 
    135 #if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
    136 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
    137         void addEventListener(in DOMString type,
    138                               in EventListener listener,
    139                               in boolean useCapture);
    140         void removeEventListener(in DOMString type,
    141                                  in EventListener listener,
    142                                  in boolean useCapture);
    143         boolean dispatchEvent(in Event event)
    144             raises(EventException);
    145 #endif
    146 #endif
    147 
    148 #if defined(LANGUAGE_CPP) && LANGUAGE_CPP
    149         [Custom] void addEventListener(in DOMString type,
    150                                           in EventListener listener,
    151                                           in boolean useCapture);
    152         [Custom] void removeEventListener(in DOMString type,
    153                                              in EventListener listener,
    154                                              in boolean useCapture);
    155         boolean dispatchEvent(in Event event)
    156             raises(EventException);
    157 #endif
    158 
    159     };
    160 
    161 }
    162