summaryrefslogtreecommitdiffstats
path: root/accessible/interfaces/msaa
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /accessible/interfaces/msaa
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'accessible/interfaces/msaa')
-rw-r--r--accessible/interfaces/msaa/AccessibleMarshal.def11
-rw-r--r--accessible/interfaces/msaa/AccessibleMarshal.rc5
-rw-r--r--accessible/interfaces/msaa/ISimpleDOMDocument.idl83
-rw-r--r--accessible/interfaces/msaa/ISimpleDOMNode.idl188
-rw-r--r--accessible/interfaces/msaa/ISimpleDOMText.idl79
-rw-r--r--accessible/interfaces/msaa/Makefile.in50
-rw-r--r--accessible/interfaces/msaa/moz.build41
7 files changed, 457 insertions, 0 deletions
diff --git a/accessible/interfaces/msaa/AccessibleMarshal.def b/accessible/interfaces/msaa/AccessibleMarshal.def
new file mode 100644
index 000000000..a4992db1d
--- /dev/null
+++ b/accessible/interfaces/msaa/AccessibleMarshal.def
@@ -0,0 +1,11 @@
+;+# 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/.
+
+LIBRARY AccessibleMarshal.dll
+
+EXPORTS DllGetClassObject PRIVATE
+ DllCanUnloadNow PRIVATE
+ DllRegisterServer PRIVATE
+ DllUnregisterServer PRIVATE
+
diff --git a/accessible/interfaces/msaa/AccessibleMarshal.rc b/accessible/interfaces/msaa/AccessibleMarshal.rc
new file mode 100644
index 000000000..38d1cb41c
--- /dev/null
+++ b/accessible/interfaces/msaa/AccessibleMarshal.rc
@@ -0,0 +1,5 @@
+/* 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/. */
+
+1 typelib ISimpleDOMNode.tlb
diff --git a/accessible/interfaces/msaa/ISimpleDOMDocument.idl b/accessible/interfaces/msaa/ISimpleDOMDocument.idl
new file mode 100644
index 000000000..3797b9be0
--- /dev/null
+++ b/accessible/interfaces/msaa/ISimpleDOMDocument.idl
@@ -0,0 +1,83 @@
+/* -*- 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("// ISimpleDOMDocument")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("//")
+cpp_quote("// get_URL(out] BSTR *url)")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Get the internet URL associated with this document.")
+cpp_quote("//")
+cpp_quote("// get_title([out BSTR *title")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Get the document's title from the <TITLE> element")
+cpp_quote("//")
+cpp_quote("// get_mimeType([out BSTR *mimeType")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Get the registered mime type, such as text/html")
+cpp_quote("//")
+cpp_quote("// get_docType([out] BSTR *docType")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Get doctype associated with the <!DOCTYPE ..> element")
+cpp_quote("//")
+cpp_quote("// get_nameSpaceURIForID([in] short nameSpaceID, [out] BSTR *nameSpaceURI)")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Some of the methods for ISimpleDOMNode return a nameSpaceID (-1,0,1,2,3,....)")
+cpp_quote("// This method returns the associated namespace URI for each ID.")
+cpp_quote("//")
+cpp_quote("// set_alternateViewMediaTypes([in] BSTR *commaSeparatedMediaType)")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// For style property retrieval on nsISimpleDOMNode elements, ")
+cpp_quote("// set the additional alternate media types that properties are available for.")
+cpp_quote("// [in] BSTR *commaSeparatedMediaTypes is a comma separate list, for example \"aural, braille\".")
+cpp_quote("// The alternate media properties are requested with nsISimpleDOMNode::get_computedStyle.")
+cpp_quote("// Note: setting this value on a document will increase memory overhead, and may create a small delay.")
+cpp_quote("//")
+cpp_quote("// W3C media Types:")
+cpp_quote("// * all: Suitable for all devices. ")
+cpp_quote("// * aural: Intended for speech synthesizers. See the section on aural style sheets for details. ")
+cpp_quote("// * braille: Intended for braille tactile feedback devices. ")
+cpp_quote("// * embossed: Intended for paged braille printers. ")
+cpp_quote("// * handheld: Intended for handheld devices - typically small screen, monochrome, limited bandwidth. ")
+cpp_quote("// * print: Intended for paged, opaque material and for documents viewed on screen in print preview mode. Please consult the section on paged media for information about formatting issues that are specific to paged media. ")
+cpp_quote("// * projection: Intended for projected presentations, for example projectors or print to transparencies. Please consult the section on paged media for information about formatting issues that are specific to paged media. ")
+cpp_quote("// * screen: Intended primarily for color computer screens. ")
+cpp_quote("// * tty: intended for media using a fixed-pitch character grid, such as teletypes, terminals, or portable devices with limited display capabilities. Authors should not use pixel units with the tty media type. ")
+cpp_quote("// * tv: Intended for television-type devices - low resolution, color, limited-scrollability screens, sound")
+cpp_quote("// * See latest W3C CSS specs for complete list of media types")
+cpp_quote("//")
+cpp_quote("//")
+cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
+cpp_quote("")
+cpp_quote("")
+
+import "objidl.idl";
+import "oaidl.idl";
+
+[object, uuid(0D68D6D0-D93D-4d08-A30D-F00DD1F45B24)]
+interface ISimpleDOMDocument : IUnknown
+{
+ [propget] HRESULT URL(
+ [out, retval] BSTR * url
+ );
+ [propget] HRESULT title(
+ [out, retval] BSTR * title
+ );
+ [propget] HRESULT mimeType(
+ [out, retval] BSTR * mimeType
+ );
+ [propget] HRESULT docType(
+ [out, retval] BSTR * docType
+ );
+ [propget] HRESULT nameSpaceURIForID(
+ [in] short nameSpaceID,
+ [out, retval] BSTR * nameSpaceURI
+ );
+ [propput] HRESULT alternateViewMediaTypes(
+ [in] BSTR * commaSeparatedMediaTypes
+ );
+}
diff --git a/accessible/interfaces/msaa/ISimpleDOMNode.idl b/accessible/interfaces/msaa/ISimpleDOMNode.idl
new file mode 100644
index 000000000..105cfbbc1
--- /dev/null
+++ b/accessible/interfaces/msaa/ISimpleDOMNode.idl
@@ -0,0 +1,188 @@
+/* -*- 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 nsIDOMDocument::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 nsIDOMDocument::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";
+
+import "ISimpleDOMText.idl";
+import "ISimpleDOMDocument.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 nsIDOMDocument::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 nsIDOMDocument::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] HRESULT language([out, retval] BSTR *language);
+}
+
+
+[
+ uuid(a6245497-9c0b-4449-85a5-bd6ad07df8ea),
+ helpstring("ISimpleDOM Type Library")
+]
+library ISimpleDOM
+{
+ interface ISimpleDOMNode;
+ interface ISimpleDOMText;
+ interface ISimpleDOMDocument;
+};
+
diff --git a/accessible/interfaces/msaa/ISimpleDOMText.idl b/accessible/interfaces/msaa/ISimpleDOMText.idl
new file mode 100644
index 000000000..87bccfe61
--- /dev/null
+++ b/accessible/interfaces/msaa/ISimpleDOMText.idl
@@ -0,0 +1,79 @@
+/* -*- 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/. */
+
+import "objidl.idl";
+import "oaidl.idl";
+
+cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
+cpp_quote("//")
+cpp_quote("// ISimpleDOMText")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// An interface that extends MSAA's IAccessible to provide important additional capabilities on text nodes")
+cpp_quote("//")
+cpp_quote("// [propget] domText(/* out,retval */ BSTR *domText")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Similar to IAccessible::get_accName, but does not strip out whitespace characters.")
+cpp_quote("// Important for retrieving the correct start/end substring indices to use with other")
+cpp_quote("// methods in ISimpleDOMText.")
+cpp_quote("//")
+cpp_quote("//")
+cpp_quote("// get_[un]clippedSubstringBounds(")
+cpp_quote("// /* [in] */ unsigned int startIndex,")
+cpp_quote("// /* [in] */ unsigned int endIndex,")
+cpp_quote("// /* [out] */ int *x,")
+cpp_quote("// /* [out] */ int *y,")
+cpp_quote("// /* [out] */ int *width,")
+cpp_quote("// /* [out] */ int *height);")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Both methods get_clippedSubstringBounds and get_unclippedSubstringBounds return the screen pixel")
+cpp_quote("// coordinates of the given text substring. The in parameters for start and end indices refer")
+cpp_quote("// to the string returned by ISimpleDOMText::get_domText().")
+cpp_quote("//")
+cpp_quote("//")
+cpp_quote("// scrollToSubstring(")
+cpp_quote("// /* [in] */ unsigned int startIndex,")
+cpp_quote("// /* [in] */ unsigned int endIndex);")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// In scrollable views, scrolls to ensure that the specified substring is visible onscreen.")
+cpp_quote("// The in parameters for start and end indices refer to the string returned")
+cpp_quote("// by ISimpleDOMText::get_domText().")
+cpp_quote("//")
+cpp_quote("//")
+cpp_quote("// [propget] fontFamily(/* out,retval */ BSTR *fontFamily);")
+cpp_quote("// ---------------------------------------------------------------------------------------------------=")
+cpp_quote("// Return a single computed font family name, which is better than the comma delineated list")
+cpp_quote("// that is returned by the ISimpleDOMNode computed style methods for font-family.")
+cpp_quote("// In other words, return something like 'Arial' instead of 'Arial, Helvetica, Sans-serif'.")
+cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
+cpp_quote("")
+cpp_quote("")
+
+[object, uuid(4e747be5-2052-4265-8af0-8ecad7aad1c0)]
+interface ISimpleDOMText: IUnknown
+{
+ // Includes whitespace in DOM
+ [propget] HRESULT domText([out, retval] BSTR *domText);
+
+ HRESULT get_clippedSubstringBounds([in] unsigned int startIndex,
+ [in] unsigned int endIndex,
+ [out] int *x,
+ [out] int *y,
+ [out] int *width,
+ [out] int *height);
+
+ HRESULT get_unclippedSubstringBounds([in] unsigned int startIndex,
+ [in] unsigned int endIndex,
+ [out] int *x,
+ [out] int *y,
+ [out] int *width,
+ [out] int *height);
+
+ HRESULT scrollToSubstring([in] unsigned int startIndex,
+ [in] unsigned int endIndex);
+
+ [propget] HRESULT fontFamily([out, retval] BSTR *fontFamily);
+};
+
diff --git a/accessible/interfaces/msaa/Makefile.in b/accessible/interfaces/msaa/Makefile.in
new file mode 100644
index 000000000..28a11adb4
--- /dev/null
+++ b/accessible/interfaces/msaa/Makefile.in
@@ -0,0 +1,50 @@
+# 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/.
+
+GARBAGE += $(MIDL_GENERATED_FILES) done_gen dlldata.c
+
+MIDL_GENERATED_FILES = \
+ ISimpleDOMNode.h \
+ ISimpleDOMNode_p.c \
+ ISimpleDOMNode_i.c \
+ ISimpleDOMDocument.h \
+ ISimpleDOMDocument_p.c \
+ ISimpleDOMDocument_i.c \
+ ISimpleDOMText.h \
+ ISimpleDOMText_p.c \
+ ISimpleDOMText_i.c \
+ $(NULL)
+
+$(MIDL_GENERATED_FILES): done_gen
+
+done_gen: ISimpleDOMNode.idl \
+ ISimpleDOMDocument.idl \
+ ISimpleDOMText.idl
+
+ $(MIDL) $(MIDL_FLAGS) -I $(srcdir) -Oicf $(srcdir)/ISimpleDOMNode.idl
+ $(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMDocument.idl
+ $(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMText.idl
+ touch $@
+
+export:: done_gen
+
+# This marshall dll is also registered in the installer
+register::
+ regsvr32 -s $(DIST)/bin/$(SHARED_LIBRARY)
+
+EMBED_MANIFEST_AT = 2
+
+midl_exports := \
+ ISimpleDOMDocument.h \
+ ISimpleDOMDocument_i.c \
+ ISimpleDOMNode.h \
+ ISimpleDOMNode_i.c \
+ ISimpleDOMText.h \
+ ISimpleDOMText_i.c \
+ $(NULL)
+
+INSTALL_TARGETS += midl_exports
+midl_exports_FILES := $(midl_exports)
+midl_exports_DEST = $(DIST)/include
+midl_exports_TARGET := export
diff --git a/accessible/interfaces/msaa/moz.build b/accessible/interfaces/msaa/moz.build
new file mode 100644
index 000000000..7f50b3047
--- /dev/null
+++ b/accessible/interfaces/msaa/moz.build
@@ -0,0 +1,41 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+GeckoSharedLibrary('AccessibleMarshal', linkage=None)
+
+SOURCES += [
+ '!dlldata.c',
+ '!ISimpleDOMDocument_i.c',
+ '!ISimpleDOMDocument_p.c',
+ '!ISimpleDOMNode_i.c',
+ '!ISimpleDOMNode_p.c',
+ '!ISimpleDOMText_i.c',
+ '!ISimpleDOMText_p.c',
+]
+
+DEFINES['REGISTER_PROXY_DLL'] = True
+
+DEFFILE = SRCDIR + '/AccessibleMarshal.def'
+
+OS_LIBS += [
+ 'kernel32',
+ 'rpcrt4',
+ 'oleaut32',
+]
+
+GENERATED_FILES += [
+ 'ISimpleDOMNode.tlb',
+]
+
+RCINCLUDE = 'AccessibleMarshal.rc'
+
+# The Windows MIDL code generator creates things like:
+#
+# #endif !_MIDL_USE_GUIDDEF_
+#
+# which clang-cl complains about. MSVC doesn't, so turn this warning off.
+if CONFIG['CLANG_CL']:
+ CFLAGS += ['-Wno-extra-tokens']