summaryrefslogtreecommitdiffstats
path: root/accessible/interfaces/msaa/ISimpleDOMNode.idl
blob: 860111e1eab921bd3bb063d1ee365b22599816c1 (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
/* -*- Mode: C++; 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/. */

cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
cpp_quote("//")
cpp_quote("// ISimpleDOMNode")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// An interface that extends MSAA's IAccessible to provide readonly DOM node information via cross-process COM.")
cpp_quote("//")
cpp_quote("// get_nodeInfo(")
cpp_quote("//  /* [out] */ BSTR  *nodeName,   // For elements, this is the tag name")
cpp_quote("//  /* [out] */ short  *nameSpaceID,")
cpp_quote("//  /* [out] */ BSTR  *nodeValue, ")
cpp_quote("//  /* [out] */ unsigned int    *numChildren); ")
cpp_quote("//  /* [out] */ unsigned int    *uniqueID;  // In Win32 accessible events we generate, the target's childID matches to this")
cpp_quote("//  /* [out] */ unsigned short  *nodeType,")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Get the basic information about a node.")
cpp_quote("// The namespace ID can be mapped to an URI using nsISimpleDOMDocument::get_nameSpaceURIForID()")
cpp_quote("//")
cpp_quote("// get_attributes(")
cpp_quote("//  /* [in]  */ unsigned short maxAttribs,")
cpp_quote("//  /* [out] */ unsigned short  *numAttribs,")
cpp_quote("//  /* [out] */ BSTR  *attribNames,")
cpp_quote("//  /* [out] */ short *nameSpaceID,")
cpp_quote("//  /* [out] */ BSTR  *attribValues);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Returns 3 arrays - the attribute names and values, and a namespace ID for each")
cpp_quote("// If the namespace ID is 0, it's the same namespace as the node's namespace")
cpp_quote("//")
cpp_quote("// get_attributesForNames(")
cpp_quote("//  /* [in] */ unsigned short numAttribs,")
cpp_quote("//  /* [in] */ BSTR   *attribNames,")
cpp_quote("//  /* [in] */ short  *nameSpaceID,")
cpp_quote("//  /* [out] */ BSTR  *attribValues);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Takes 2 arrays - the attribute names and namespace IDs, and returns an array of corresponding values")
cpp_quote("// If the namespace ID is 0, it's the same namespace as the node's namespace")
cpp_quote("//")
cpp_quote("// computedStyle(  ")
cpp_quote("//  /* [in]  */ unsigned short maxStyleProperties,")
cpp_quote("//  /* [out] */ unsigned short *numStyleProperties, ")
cpp_quote("//  /* [in]  */ boolean useAlternateView,  // If TRUE, returns properites for media as set in Document's set_alternateViewMediaTypes")
cpp_quote("//  /* [out] */ BSTR *styleProperties, ")
cpp_quote("//  /* [out] */ BSTR *styleValues);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Returns 2 arrays -- the style properties and their values")
cpp_quote("//  useAlternateView=FALSE: gets properties for the default media type (usually screen)")
cpp_quote("//  useAlternateView=TRUE: properties for media types set w/ nsIDOMSimpleDocument::set_alternateViewMediaTypes()")
cpp_quote("//")
cpp_quote("// computedStyleForProperties(  ")
cpp_quote("//  /* [in] */  unsigned short numStyleProperties, ")
cpp_quote("//  /* [in] */  boolean useAlternateView,  // If TRUE, returns properites for media as set in Document's set_alternateViewMediaTypes")
cpp_quote("//  /* [in] */  BSTR *styleProperties, ")
cpp_quote("//  /* [out] */ BSTR *styleValues);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Scroll the current view so that this dom node is visible.")
cpp_quote("//  placeTopLeft=TRUE: scroll until the top left corner of the dom node is at the top left corner of the view.")
cpp_quote("//  placeTopLeft=FALSE: scroll minimally to make the dom node visible. Don't scroll at all if already visible.")
cpp_quote("//")
cpp_quote("// scrollTo( ")
cpp_quote("//  /* [in] */ boolean placeTopLeft); ")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Returns style property values for those properties in the styleProperties [in] array")
cpp_quote("// Returns 2 arrays -- the style properties and their values")
cpp_quote("//  useAlternateView=FALSE: gets properties for the default media type (usually screen)")
cpp_quote("//  useAlternateView=TRUE: properties for media types set w/ nsIDOMSimpleDocument::set_alternateViewMediaTypes()")
cpp_quote("//")
cpp_quote("// get_parentNode     (/* [out] */ ISimpleDOMNode **newNodePtr);")
cpp_quote("// get_firstChild     (/* [out] */ ISimpleDOMNode **newNodePtr);")
cpp_quote("// get_lastChild      (/* [out] */ ISimpleDOMNode **newNodePtr);")
cpp_quote("// get_previousSibling(/* [out] */ ISimpleDOMNode **newNodePtr);")
cpp_quote("// get_nextSibling    (/* [out] */ ISimpleDOMNode **newNodePtr);")
cpp_quote("// get_childAt        (/* [in] */ unsigned childIndex, /* [out] */ ISimpleDOMNode **newNodePtr);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// DOM navigation - get a different node.")
cpp_quote("//")
cpp_quote("// get_innerHTML(/* [out] */ BSTR *htmlText);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Returns HTML of this DOM node's subtree. Does not include the start and end tag for this node/element.")
cpp_quote("//")
cpp_quote("//")
cpp_quote("// get_localInterface(/* [out] */ void **localInterface);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Only available in Gecko's process")
cpp_quote("//")
cpp_quote("//")
cpp_quote("// get_language(/* [out] */ BSTR *htmlText);")
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
cpp_quote("// Returns the computed language for this node, or empty string if unknown.")
cpp_quote("//")
cpp_quote("//")
cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
cpp_quote("")
cpp_quote("")

import "objidl.idl";
import "oaidl.idl";

[object, uuid(1814ceeb-49e2-407f-af99-fa755a7d2607)]
interface ISimpleDOMNode : IUnknown
{
  const unsigned short NODETYPE_ELEMENT = 1;
  const unsigned short NODETYPE_ATTRIBUTE = 2;
  const unsigned short NODETYPE_TEXT = 3;
  const unsigned short NODETYPE_CDATA_SECTION = 4;
  const unsigned short NODETYPE_ENTITY_REFERENCE = 5;
  const unsigned short NODETYPE_ENTITY = 6;
  const unsigned short NODETYPE_PROCESSING_INSTRUCTION = 7;
  const unsigned short NODETYPE_COMMENT = 8;
  const unsigned short NODETYPE_DOCUMENT = 9;
  const unsigned short NODETYPE_DOCUMENT_TYPE = 10;
  const unsigned short NODETYPE_DOCUMENT_FRAGMENT = 11;
  const unsigned short NODETYPE_NOTATION = 12;

  [propget] HRESULT nodeInfo(
    [out] BSTR *nodeName,   // for performance returns NULL for text nodes (true nodeName would be "#text")
    [out] short *nameSpaceID,
    [out] BSTR *nodeValue,
    [out] unsigned int *numChildren,
    [out] unsigned int *uniqueID, // In Win32 accessible events we generate, the target's childID matches to this
    [out, retval] unsigned short *nodeType
  );

  [propget] HRESULT attributes(
    [in] unsigned short maxAttribs,
    [out, size_is(maxAttribs), length_is(*numAttribs)] BSTR *attribNames,
    [out, size_is(maxAttribs), length_is(*numAttribs)] short *nameSpaceID,
    [out, size_is(maxAttribs), length_is(*numAttribs)] BSTR *attribValues,
    [out, retval] unsigned short *numAttribs
  );

  [propget] HRESULT attributesForNames(
    [in] unsigned short numAttribs,
    [in, size_is(numAttribs), length_is(numAttribs)] BSTR *attribNames,
    [in, size_is(numAttribs), length_is(numAttribs)] short *nameSpaceID,
    [out, retval, size_is(numAttribs), length_is(numAttribs)] BSTR *attribValues
  );

  [propget] HRESULT computedStyle(
    [in] unsigned short maxStyleProperties,
    [in] boolean useAlternateView,  // If TRUE, returns properites for media as set in Document's set_alternateViewMediaTypes
    [out, size_is(maxStyleProperties), length_is(*numStyleProperties)] BSTR *styleProperties,
    [out, size_is(maxStyleProperties), length_is(*numStyleProperties)] BSTR *styleValues,
    [out, retval] unsigned short *numStyleProperties
  );

  [propget] HRESULT computedStyleForProperties(
    [in] unsigned short numStyleProperties,
    [in] boolean useAlternateView,  // If TRUE, returns properites for media as set in Document's set_alternateViewMediaTypes
    [in, size_is(numStyleProperties), length_is(numStyleProperties)] BSTR *styleProperties,
    [out, retval, size_is(numStyleProperties), length_is(numStyleProperties)] BSTR *styleValues
  );

  HRESULT scrollTo([in] boolean placeTopLeft);

  [propget] HRESULT parentNode([out, retval] ISimpleDOMNode **node);
  [propget] HRESULT firstChild([out, retval] ISimpleDOMNode **node);
  [propget] HRESULT lastChild([out, retval] ISimpleDOMNode **node);
  [propget] HRESULT previousSibling([out, retval] ISimpleDOMNode **node);
  [propget] HRESULT nextSibling([out, retval] ISimpleDOMNode **node);
  [propget] HRESULT childAt([in] unsigned childIndex,
                            [out, retval] ISimpleDOMNode **node);

  [propget] HRESULT innerHTML([out, retval] BSTR *innerHTML);

  [propget, local] HRESULT localInterface([out][retval] void **localInterface);

  [propget, call_as(get_localInterface)]
  HRESULT remoteLocalInterface([out][retval] IUnknown **localInterface);

  [propget] HRESULT language([out, retval] BSTR *language);
}