summaryrefslogtreecommitdiffstats
path: root/dom/interfaces/core/nsIDOMDocument.idl
blob: 6070a99ac424c004e20f4d7eec3de85ef2e366e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsIDOMNode.idl"

%{ C++
#include "jspubtd.h"

// windows.h #defines CreateEvent
#ifdef CreateEvent
#undef CreateEvent
#endif
%}

interface mozIDOMWindowProxy;
interface nsIDOMNodeIterator;
interface nsIDOMNodeFilter;
interface nsIDOMTreeWalker;
interface nsIDOMLocation;

/**
 * The nsIDOMDocument interface represents the entire HTML or XML document.
 * Conceptually, it is the root of the document tree, and provides the 
 * primary access to the document's data.
 * Since elements, text nodes, comments, processing instructions, etc. 
 * cannot exist outside the context of a Document, the nsIDOMDocument 
 * interface also contains the factory methods needed to create these 
 * objects.
 *
 * For more information on this interface please see 
 * http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html
 */

[uuid(b15fa0f4-97c1-4388-af62-2ceff7a89bdf)]
interface nsIDOMDocument : nsIDOMNode
{
  readonly attribute nsIDOMDocumentType         doctype;
  readonly attribute nsIDOMDOMImplementation    implementation;
  readonly attribute nsIDOMElement              documentElement;
  nsIDOMElement                 createElement([Null(Stringify)] in DOMString tagName)
                                  raises(DOMException);
  nsIDOMDocumentFragment        createDocumentFragment();
  nsIDOMText                    createTextNode(in DOMString data);
  nsIDOMComment                 createComment(in DOMString data);
  nsIDOMCDATASection            createCDATASection(in DOMString data)
                                  raises(DOMException);
  nsIDOMProcessingInstruction   createProcessingInstruction(in DOMString target, 
                                                            in DOMString data)
                                  raises(DOMException);
  nsIDOMAttr                    createAttribute(in DOMString name)
                                  raises(DOMException);
  nsIDOMNodeList                getElementsByTagName(in DOMString tagname);

  // Introduced in DOM Level 2:
  [optional_argc] nsIDOMNode    importNode(in nsIDOMNode importedNode,
                                           [optional] in boolean deep)
                                  raises(DOMException);
  // Introduced in DOM Level 2:
  nsIDOMElement                 createElementNS(in DOMString namespaceURI,
                                                [Null(Stringify)] in DOMString qualifiedName)
                                  raises(DOMException);
  // Introduced in DOM Level 2:
  nsIDOMAttr                    createAttributeNS(in DOMString namespaceURI,
                                                  in DOMString qualifiedName)
                                  raises(DOMException);
  // Introduced in DOM Level 2:
  nsIDOMNodeList                getElementsByTagNameNS(in DOMString namespaceURI,
                                                       in DOMString localName);
  // Introduced in DOM Level 2:
  nsIDOMElement                 getElementById(in DOMString elementId);
  // Introduced in DOM Level 3:
  readonly attribute DOMString       inputEncoding;
  // Introduced in DOM Level 3:
  readonly attribute DOMString       documentURI;
  // Alias introduced for all documents in recent DOM standards
  readonly attribute DOMString       URL;
  // Introduced in DOM Level 3:
  nsIDOMNode         adoptNode(in nsIDOMNode source)
                                        raises(DOMException);

  /**
   * Create a range
   *
   * @see http://html5.org/specs/dom-range.html#dom-document-createrange
   */
  nsIDOMRange              createRange();

  [optional_argc] nsIDOMNodeIterator createNodeIterator(in nsIDOMNode root,
                                                        [optional] in unsigned long whatToShow,
                                                        [optional] in nsIDOMNodeFilter filter)
                                                          raises(DOMException);
  [optional_argc] nsIDOMTreeWalker   createTreeWalker(in nsIDOMNode root,
                                                      [optional] in unsigned long whatToShow,
                                                      [optional] in nsIDOMNodeFilter filter)
                                                        raises(DOMException);

  nsIDOMEvent               createEvent(in DOMString eventType)
                                               raises(DOMException);


  // HTML
  /**
   * The window associated with this document.
   *
   * @see <http://www.whatwg.org/html/#dom-document-defaultview>
   */
  readonly attribute mozIDOMWindowProxy   defaultView;

  /**
   * @see <http://www.whatwg.org/html/#dom-document-characterset>
   */
  readonly attribute DOMString      characterSet;
  /**
   * @see <http://www.whatwg.org/html/#dom-document-dir>
   */
           attribute DOMString      dir;

  /**
   * @see <http://www.whatwg.org/html/#dom-document-location>
   */
  readonly attribute nsIDOMLocation location;

  /**
   * @see <http://www.whatwg.org/html/#document.title>
   */
           attribute DOMString      title;

  /**
   * @see <http://www.whatwg.org/html/#dom-document-readystate>
   */
  readonly attribute DOMString      readyState;
  /**
   * @see <http://www.whatwg.org/html/#dom-document-lastmodified>
   */
  readonly attribute DOMString      lastModified;
  /**
   * @see <http://www.whatwg.org/html/#dom-document-referrer>
   */
  readonly attribute DOMString      referrer;

  /**
   * @see <http://www.whatwg.org/html/#dom-document-hasfocus>
   */
  boolean      hasFocus();

  /**
   * @see <http://www.whatwg.org/html/#dom-document-activeelement>
   */
  readonly attribute nsIDOMElement  activeElement;

  /**
   * Retrieve elements matching all classes listed in a
   * space-separated string.
   *
   * @see <http://www.whatwg.org/html/#dom-document-getelementsbyclassname>
   */
  nsIDOMNodeList getElementsByClassName(in DOMString classes);


  // CSSOM
  /**
   * @see <http://dev.w3.org/csswg/cssom/#dom-document-stylesheets>
   */
  readonly attribute nsIDOMStyleSheetList   styleSheets;

  /**
   * This attribute must return the preferred style sheet set as set by the
   * author. It is determined from the order of style sheet declarations and
   * the Default-Style HTTP headers, as eventually defined elsewhere in the Web
   * Apps 1.0 specification. If there is no preferred style sheet set, this
   * attribute must return the empty string. The case of this attribute must
   * exactly match the case given by the author where the preferred style sheet
   * is specified or implied. This attribute must never return null.
   *
   * @see <http://dev.w3.org/csswg/cssom/#dom-document-preferredStyleSheetSet>
   */
  readonly attribute DOMString preferredStyleSheetSet;

  /**
   * This attribute indicates which style sheet set is in use. This attribute
   * is live; changing the disabled attribute on style sheets directly will
   * change the value of this attribute.
   *
   * If all the sheets that are enabled and have a title have the same title
   * (by case-sensitive comparisons) then the value of this attribute must be
   * exactly equal to the title of the first enabled style sheet with a title
   * in the styleSheets list. Otherwise, if style sheets from different sets
   * are enabled, then the return value must be null (there is no way to
   * determine what the currently selected style sheet set is in those
   * conditions). Otherwise, either all style sheets that have a title are
   * disabled, or there are no alternate style sheets, and
   * selectedStyleSheetSet must return the empty string.
   *
   * Setting this attribute to the null value must have no effect.
   *
   * Setting this attribute to a non-null value must call
   * enableStyleSheetsForSet() with that value as the function's argument, and
   * set lastStyleSheetSet to that value.
   *
   * From the DOM's perspective, all views have the same
   * selectedStyleSheetSet. If a UA supports multiple views with different
   * selected alternate style sheets, then this attribute (and the StyleSheet
   * interface's disabled attribute) must return and set the value for the
   * default view.
   *
   * @see <http://dev.w3.org/csswg/cssom/#dom-document-selectedStyleSheetSet>
   */
  [binaryname(MozSelectedStyleSheetSet)]
  attribute DOMString selectedStyleSheetSet;

  /*
   * This property must initially have the value null. Its value changes when
   * the selectedStyleSheetSet attribute is set.
   *
   * @see <http://dev.w3.org/csswg/cssom/#dom-document-lastStyleSheetSet>
   */
  readonly attribute DOMString lastStyleSheetSet;
  
  /**
   * This must return the live list of the currently available style sheet
   * sets. This list is constructed by enumerating all the style sheets for
   * this document available to the implementation, in the order they are
   * listed in the styleSheets attribute, adding the title of each style sheet
   * with a title to the list, avoiding duplicates by dropping titles that
   * match (case-sensitively) titles that have already been added to the
   * list.
   *
   * @see <http://dev.w3.org/csswg/cssom/#dom-document-styleSheetSets>
   */
  readonly attribute nsISupports styleSheetSets;

  /**
   * Calling this method must change the disabled attribute on each StyleSheet
   * object with a title attribute with a length greater than 0 in the
   * styleSheets attribute, so that all those whose title matches the name
   * argument are enabled, and all others are disabled. Title matches must be
   * case-sensitive. Calling this method with the empty string disables all
   * alternate and preferred style sheets (but does not change the state of
   * persistent style sheets, that is those with no title attribute).
   *
   * Calling this method with a null value must have no effect.
   *
   * Style sheets that do not have a title are never affected by this
   * method. This method does not change the values of the lastStyleSheetSet or
   * preferredStyleSheetSet attributes.
   *
   * @see <http://dev.w3.org/csswg/cssom/#dom-document-enableStyleSheetsForSet>
   */
  [binaryname(MozEnableStyleSheetsForSet)]
  void enableStyleSheetsForSet(in DOMString name);


  // CSSOM-View
  /**
   * Returns the element from the caller's document at the given point,
   * relative to the upper-left-most point in the (possibly scrolled)
   * window or frame.
   *
   * If the element at the given point belongs to another document (such as
   * an iframe's subdocument), the element in the calling document's DOM
   * (e.g. the iframe) is returned. If the element at the given point is
   * anonymous or XBL generated content, such as a textbox's scrollbars, then
   * the first non-anonymous parent element (that is, the textbox) is returned.
   *
   * This method returns null if either coordinate is negative, or if the
   * specified point lies outside the visible bounds of the document.
   *
   * Callers from XUL documents should wait until the onload event has fired
   * before calling this method.
   *
   * @see <http://dev.w3.org/csswg/cssom-view/#dom-document-elementfrompoint>
   */
  nsIDOMElement             elementFromPoint(in float x, in float y);


  // Mozilla extensions
  /**
   * @see <https://developer.mozilla.org/en/DOM/document.contentType>
   */
  readonly attribute DOMString      contentType;

  /**
   * True if this document is synthetic : stand alone image, video, audio file,
   * etc.
   */
  readonly attribute boolean        mozSyntheticDocument;

  /**
   * Returns the script element whose script is currently being processed.
   *
   * @see <https://developer.mozilla.org/en/DOM/document.currentScript>
   */
  readonly attribute nsIDOMElement  currentScript;

  /**
   * Release the current mouse capture if it is on an element within this
   * document.
   *
   * @see <https://developer.mozilla.org/en/DOM/document.releaseCapture>
   */
  void releaseCapture();

  /**
   * Use the given DOM element as the source image of target |-moz-element()|.
   *
   * This function introduces a new special ID (called "image element ID"),
   * which is only used by |-moz-element()|, and associates it with the given
   * DOM element.  Image elements ID's have the higher precedence than general
   * HTML id's, so if |document.mozSetImageElement(<id>, <element>)| is called,
   * |-moz-element(#<id>)| uses |<element>| as the source image even if there
   * is another element with id attribute = |<id>|.  To unregister an image
   * element ID |<id>|, call |document.mozSetImageElement(<id>, null)|.
   *
   * Example:
   * <script>
   *   canvas = document.createElement("canvas");
   *   canvas.setAttribute("width", 100);
   *   canvas.setAttribute("height", 100);
   *   // draw to canvas
   *   document.mozSetImageElement("canvasbg", canvas);
   * </script>
   * <div style="background-image: -moz-element(#canvasbg);"></div>
   *
   * @param aImageElementId an image element ID to associate with
   * |aImageElement|
   * @param aImageElement a DOM element to be used as the source image of
   * |-moz-element(#aImageElementId)|. If this is null, the function will
   * unregister the image element ID |aImageElementId|.
   *
   * @see <https://developer.mozilla.org/en/DOM/document.mozSetImageElement>
   */
  void mozSetImageElement(in DOMString aImageElementId,
                          in nsIDOMElement aImageElement);

  /**
   * Element which is currently the full-screen element as per the DOM
   * full-screen api.
   *
   * @see <https://wiki.mozilla.org/index.php?title=Gecko:FullScreenAPI>
   */
  readonly attribute nsIDOMElement mozFullScreenElement;

  /**
   * Causes the document to leave DOM full-screen mode, if it's in
   * full-screen mode, as per the DOM full-screen api.
   *
   * @see <https://wiki.mozilla.org/index.php?title=Gecko:FullScreenAPI>
   */
  void mozCancelFullScreen();   
  
  /**
   * Denotes whether this document is in DOM full-screen mode, as per the DOM
   * full-screen api.
   *
   * @see <https://wiki.mozilla.org/index.php?title=Gecko:FullScreenAPI>
   */
  readonly attribute boolean mozFullScreen;  

  /**
   * Denotes whether the full-screen-api.enabled is true, no windowed
   * plugins are present, and all ancestor documents have the
   * allowfullscreen attribute set.
   *
   * @see <https://wiki.mozilla.org/index.php?title=Gecko:FullScreenAPI>
   */
  readonly attribute boolean mozFullScreenEnabled;

  /**
   * The element to which the mouse pointer is locked, if any, as per the
   * DOM pointer lock api.
   *
   * @see <http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html>
   */
  readonly attribute nsIDOMElement mozPointerLockElement;

  /**
   * Retrieve the location of the caret position (DOM node and character
   * offset within that node), given a point.
   *
   * @param x Horizontal point at which to determine the caret position, in
   *          page coordinates.
   * @param y Vertical point at which to determine the caret position, in
   *          page coordinates.
   */
  nsISupports /* CaretPosition */ caretPositionFromPoint(in float x, in float y);

  /**
   * Exit pointer is lock if locked, as per the DOM pointer lock api.
   *
   * @see <http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html>
   */
  void mozExitPointerLock();

  /**
   * Visibility API implementation.
   */
  readonly attribute boolean hidden;
  readonly attribute DOMString visibilityState;

  /**
   * Returns "BackCompat" if we're in quirks mode or "CSS1Compat" if we're in
   * strict mode.  (XML documents are always in strict mode.)
   */
  readonly attribute DOMString compatMode;

  /**
   * Return nodes that match a given CSS selector.
   *
   * @see <http://dev.w3.org/2006/webapi/selectors-api/>
   */
  nsIDOMElement querySelector([Null(Stringify)] in DOMString selectors);
  nsIDOMNodeList querySelectorAll([Null(Stringify)] in DOMString selectors);
};