Merge from mozilla-central.
authorDavid Anderson <danderson@mozilla.com>
Mon, 30 Apr 2012 12:53:32 -0700
changeset 94071 44911569fb04d891073656cac1f794495723f573
parent 93105 fb7572ed4bc6832b84b14670c490b61c9db2d278 (current diff)
parent 94070 3812e7c1b642701e10465b554a51b5c581c1d257 (diff)
child 94072 2427c5815cfa1686f367b795fce5917d20f975d0
push idunknown
push userunknown
push dateunknown
milestone15.0a1
Merge from mozilla-central.
.hgtags
accessible/src/atk/ApplicationAccessibleWrap.cpp
accessible/src/atk/ApplicationAccessibleWrap.h
accessible/src/atk/nsAccessibleWrap.cpp
accessible/src/atk/nsAccessibleWrap.h
accessible/src/atk/nsApplicationAccessibleWrap.cpp
accessible/src/atk/nsApplicationAccessibleWrap.h
accessible/src/atk/nsRoleMap.h
accessible/src/base/AccEvent.cpp
accessible/src/base/Makefile.in
accessible/src/base/nsAccDocManager.cpp
accessible/src/base/nsAccDocManager.h
accessible/src/base/nsAccUtils.h
accessible/src/base/nsAccessNode.cpp
accessible/src/base/nsAccessNode.h
accessible/src/base/nsAccessibilityService.cpp
accessible/src/base/nsAccessibilityService.h
accessible/src/base/nsApplicationAccessible.cpp
accessible/src/base/nsApplicationAccessible.h
accessible/src/base/nsDocAccessible.cpp
accessible/src/base/nsRootAccessible.cpp
accessible/src/generic/ARIAGridAccessible.cpp
accessible/src/generic/ARIAGridAccessible.h
accessible/src/generic/ApplicationAccessible.cpp
accessible/src/generic/ApplicationAccessible.h
accessible/src/html/nsHTMLImageAccessible.cpp
accessible/src/html/nsHTMLTableAccessible.cpp
accessible/src/html/nsHTMLTableAccessible.h
accessible/src/html/nsHyperTextAccessible.cpp
accessible/src/mac/mozTextAccessible.mm
accessible/src/mac/nsAccessibleWrap.h
accessible/src/mac/nsAccessibleWrap.mm
accessible/src/mac/nsApplicationAccessibleWrap.h
accessible/src/mac/nsRoleMap.h
accessible/src/msaa/nsAccessNodeWrap.cpp
accessible/src/msaa/nsAccessibleWrap.cpp
accessible/src/msaa/nsApplicationAccessibleWrap.cpp
accessible/src/msaa/nsApplicationAccessibleWrap.h
accessible/src/msaa/nsRoleMap.h
accessible/src/other/nsApplicationAccessibleWrap.h
accessible/src/xul/nsXULListboxAccessible.cpp
accessible/src/xul/nsXULListboxAccessible.h
accessible/src/xul/nsXULTreeAccessible.cpp
accessible/src/xul/nsXULTreeAccessible.h
accessible/src/xul/nsXULTreeGridAccessible.cpp
accessible/src/xul/nsXULTreeGridAccessible.h
aclocal.m4
b2g/confvars.sh
b2g/installer/package-manifest.in
browser/app/macbuild/Contents/Info.plist.in
browser/app/profile/firefox.js
browser/base/content/browser.js
browser/base/content/browser.xul
browser/base/content/highlighter.css
browser/base/content/nsContextMenu.js
browser/base/content/tabbrowser.xml
browser/base/content/test/subtst_contextmenu.html
browser/base/content/test/test_contextmenu.html
browser/components/feeds/src/nsFeedSniffer.cpp
browser/components/feeds/test/Makefile.in
browser/components/feeds/test/chrome/Makefile.in
browser/components/migration/src/nsBrowserProfileMigratorUtils.cpp
browser/components/migration/src/nsBrowserProfileMigratorUtils.h
browser/components/migration/src/nsIEProfileMigrator.cpp
browser/components/migration/src/nsIEProfileMigrator.h
browser/components/nsBrowserGlue.js
browser/components/preferences/aboutPermissions.js
browser/components/sessionstore/src/nsSessionStore.js
browser/components/tabview/storagePolicy.js
browser/components/tabview/tabitems.js
browser/components/tabview/tabview.js
browser/components/tabview/test/Makefile.in
browser/components/tabview/test/browser_tabview_bug597248.js
browser/components/tabview/test/browser_tabview_bug627288.js
browser/components/tabview/test/browser_tabview_bug677310.js
browser/components/tabview/test/browser_tabview_thumbnail_storage.js
browser/components/tabview/test/head.js
browser/components/tabview/thumbnailStorage.js
browser/components/tabview/ui.js
browser/config/mozconfigs/win32/vs2010-mozconfig
browser/config/mozconfigs/win64/vs2010-mozconfig
browser/config/version.txt
browser/devtools/highlighter/Makefile.in
browser/devtools/highlighter/test/Makefile.in
browser/devtools/highlighter/test/browser_inspector_duplicate_ruleview.js
browser/devtools/highlighter/test/browser_inspector_editor.js
browser/devtools/highlighter/test/browser_inspector_initialization.js
browser/devtools/highlighter/test/browser_inspector_registertools.js
browser/devtools/highlighter/test/browser_inspector_store.js
browser/devtools/highlighter/test/browser_inspector_tab_switch.js
browser/devtools/jar.mn
browser/devtools/shared/Templater.jsm
browser/devtools/shared/test/browser_gcli_integrate.js
browser/devtools/shared/test/browser_gcli_web.js
browser/devtools/styleinspector/CssHtmlTree.jsm
browser/devtools/styleinspector/CssLogic.jsm
browser/devtools/styleinspector/StyleInspector.jsm
browser/devtools/webconsole/HUDService.jsm
browser/devtools/webconsole/test/Makefile.in
browser/devtools/webconsole/test/browser_gcli_break.html
browser/devtools/webconsole/test/browser_gcli_break.js
browser/devtools/webconsole/test/browser_gcli_commands.js
browser/devtools/webconsole/test/browser_gcli_helpers.js
browser/devtools/webconsole/test/browser_gcli_inspect.html
browser/devtools/webconsole/test/browser_gcli_inspect.js
browser/devtools/webconsole/test/browser_gcli_integrate.js
browser/devtools/webconsole/test/browser_gcli_require.js
browser/devtools/webconsole/test/browser_gcli_web.js
browser/devtools/webconsole/test/browser_webconsole_bug_595934_message_categories.js
browser/devtools/webconsole/test/browser_webconsole_bug_653531_highlighter_console_helper.js
browser/locales/en-US/chrome/browser/browser.dtd
browser/locales/en-US/chrome/browser/browser.properties
browser/locales/en-US/chrome/browser/devtools/inspector.properties
browser/locales/en-US/chrome/browser/devtools/styleinspector.properties
build/autoconf/glib.m4
build/mobile/devicemanagerADB.py
build/mobile/devicemanagerSUT.py
build/mozinfo.py
build/stdc++compat.cpp
caps/src/nsScriptSecurityManager.cpp
config/autoconf.mk.in
config/milestone.txt
config/system-headers
configure.in
content/base/public/nsContentUtils.h
content/base/public/nsINode.h
content/base/public/nsIXMLHttpRequest.idl
content/base/src/nsCCUncollectableMarker.cpp
content/base/src/nsCommentNode.cpp
content/base/src/nsContentSink.cpp
content/base/src/nsContentUtils.cpp
content/base/src/nsCrossSiteListenerProxy.cpp
content/base/src/nsDOMAttribute.h
content/base/src/nsDOMDocumentType.h
content/base/src/nsDOMFileReader.cpp
content/base/src/nsDocument.cpp
content/base/src/nsDocument.h
content/base/src/nsDocumentFragment.cpp
content/base/src/nsEventSource.cpp
content/base/src/nsFrameLoader.cpp
content/base/src/nsFrameLoader.h
content/base/src/nsGenericElement.cpp
content/base/src/nsHTMLContentSerializer.cpp
content/base/src/nsNodeInfo.cpp
content/base/src/nsObjectLoadingContent.cpp
content/base/src/nsPlainTextSerializer.cpp
content/base/src/nsRange.cpp
content/base/src/nsRange.h
content/base/src/nsScriptLoader.cpp
content/base/src/nsTextNode.h
content/base/src/nsWebSocket.cpp
content/base/src/nsWebSocket.h
content/base/src/nsXHTMLContentSerializer.cpp
content/base/src/nsXMLHttpRequest.cpp
content/base/src/nsXMLHttpRequest.h
content/base/test/test_bug352728.html
content/canvas/src/CustomQS_Canvas2D.h
content/canvas/src/CustomQS_WebGL.h
content/canvas/src/WebGLContext.cpp
content/canvas/src/WebGLContext.h
content/canvas/src/WebGLContextGL.cpp
content/canvas/src/WebGLContextValidate.cpp
content/canvas/src/nsCanvasRenderingContext2D.cpp
content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
content/canvas/test/test_canvas.html
content/events/src/nsContentEventHandler.cpp
content/events/src/nsDOMEvent.cpp
content/events/src/nsDOMKeyboardEvent.cpp
content/events/src/nsDOMMouseEvent.cpp
content/events/src/nsDOMNotifyAudioAvailableEvent.cpp
content/events/src/nsDOMTouchEvent.cpp
content/events/src/nsDOMTouchEvent.h
content/events/src/nsDOMUIEvent.cpp
content/events/src/nsDOMUIEvent.h
content/events/src/nsDOMXULCommandEvent.cpp
content/events/src/nsEventDispatcher.cpp
content/events/src/nsEventListenerManager.cpp
content/events/src/nsEventStateManager.cpp
content/events/src/nsEventStateManager.h
content/events/test/Makefile.in
content/html/content/public/nsHTMLCanvasElement.h
content/html/content/public/nsHTMLMediaElement.h
content/html/content/public/nsHTMLVideoElement.h
content/html/content/public/nsIFormControl.h
content/html/content/src/nsGenericHTMLElement.cpp
content/html/content/src/nsHTMLAnchorElement.cpp
content/html/content/src/nsHTMLAreaElement.cpp
content/html/content/src/nsHTMLAudioElement.cpp
content/html/content/src/nsHTMLBRElement.cpp
content/html/content/src/nsHTMLBodyElement.cpp
content/html/content/src/nsHTMLButtonElement.cpp
content/html/content/src/nsHTMLDataListElement.cpp
content/html/content/src/nsHTMLDivElement.cpp
content/html/content/src/nsHTMLFieldSetElement.cpp
content/html/content/src/nsHTMLFieldSetElement.h
content/html/content/src/nsHTMLFontElement.cpp
content/html/content/src/nsHTMLFormElement.cpp
content/html/content/src/nsHTMLFormElement.h
content/html/content/src/nsHTMLFrameElement.cpp
content/html/content/src/nsHTMLFrameSetElement.h
content/html/content/src/nsHTMLHRElement.cpp
content/html/content/src/nsHTMLHeadingElement.cpp
content/html/content/src/nsHTMLIFrameElement.cpp
content/html/content/src/nsHTMLImageElement.cpp
content/html/content/src/nsHTMLInputElement.cpp
content/html/content/src/nsHTMLInputElement.h
content/html/content/src/nsHTMLLIElement.cpp
content/html/content/src/nsHTMLLabelElement.cpp
content/html/content/src/nsHTMLLabelElement.h
content/html/content/src/nsHTMLLegendElement.h
content/html/content/src/nsHTMLLinkElement.cpp
content/html/content/src/nsHTMLMediaElement.cpp
content/html/content/src/nsHTMLMenuElement.h
content/html/content/src/nsHTMLMenuItemElement.h
content/html/content/src/nsHTMLMetaElement.cpp
content/html/content/src/nsHTMLOListElement.cpp
content/html/content/src/nsHTMLObjectElement.cpp
content/html/content/src/nsHTMLOptGroupElement.cpp
content/html/content/src/nsHTMLOptionElement.h
content/html/content/src/nsHTMLOutputElement.cpp
content/html/content/src/nsHTMLParagraphElement.cpp
content/html/content/src/nsHTMLPreElement.cpp
content/html/content/src/nsHTMLProgressElement.cpp
content/html/content/src/nsHTMLScriptElement.cpp
content/html/content/src/nsHTMLSelectElement.h
content/html/content/src/nsHTMLSharedElement.cpp
content/html/content/src/nsHTMLSharedObjectElement.cpp
content/html/content/src/nsHTMLSourceElement.cpp
content/html/content/src/nsHTMLStyleElement.cpp
content/html/content/src/nsHTMLTableCaptionElement.cpp
content/html/content/src/nsHTMLTableCellElement.cpp
content/html/content/src/nsHTMLTableColElement.cpp
content/html/content/src/nsHTMLTableElement.h
content/html/content/src/nsHTMLTableRowElement.cpp
content/html/content/src/nsHTMLTableSectionElement.cpp
content/html/content/src/nsHTMLTextAreaElement.cpp
content/html/content/src/nsHTMLTitleElement.cpp
content/html/content/src/nsHTMLVideoElement.cpp
content/html/content/src/nsTextEditorState.cpp
content/html/content/src/nsTextEditorState.h
content/html/content/test/reflect.js
content/html/content/test/test_bug514437.html
content/html/content/test/test_bug588683-1.html
content/html/content/test/test_bug588683-2.html
content/html/content/test/test_bug588683-3.html
content/html/content/test/test_bug588683-4.html
content/html/document/src/VideoDocument.cpp
content/html/document/src/nsHTMLDocument.cpp
content/html/document/src/nsHTMLDocument.h
content/mathml/content/src/nsMathMLElement.h
content/media/MediaResource.cpp
content/media/MediaResource.h
content/media/nsBuiltinDecoder.cpp
content/media/nsBuiltinDecoder.h
content/media/nsBuiltinDecoderReader.cpp
content/media/nsBuiltinDecoderReader.h
content/media/nsBuiltinDecoderStateMachine.cpp
content/media/nsBuiltinDecoderStateMachine.h
content/media/nsMediaCache.cpp
content/media/nsMediaCache.h
content/media/nsMediaDecoder.cpp
content/media/nsMediaDecoder.h
content/svg/content/src/nsSVGAElement.h
content/svg/content/src/nsSVGAltGlyphElement.cpp
content/svg/content/src/nsSVGAnimateMotionElement.h
content/svg/content/src/nsSVGAnimateTransformElement.cpp
content/svg/content/src/nsSVGDefsElement.cpp
content/svg/content/src/nsSVGFilterElement.h
content/svg/content/src/nsSVGFilters.cpp
content/svg/content/src/nsSVGFilters.h
content/svg/content/src/nsSVGForeignObjectElement.h
content/svg/content/src/nsSVGGElement.cpp
content/svg/content/src/nsSVGGradientElement.h
content/svg/content/src/nsSVGImageElement.h
content/svg/content/src/nsSVGLineElement.cpp
content/svg/content/src/nsSVGMarkerElement.h
content/svg/content/src/nsSVGMaskElement.h
content/svg/content/src/nsSVGMpathElement.h
content/svg/content/src/nsSVGPathElement.h
content/svg/content/src/nsSVGPatternElement.h
content/svg/content/src/nsSVGRectElement.cpp
content/svg/content/src/nsSVGSVGElement.h
content/svg/content/src/nsSVGScriptElement.cpp
content/svg/content/src/nsSVGStopElement.cpp
content/svg/content/src/nsSVGStyleElement.cpp
content/svg/content/src/nsSVGSwitchElement.h
content/svg/content/src/nsSVGSymbolElement.cpp
content/svg/content/src/nsSVGTSpanElement.cpp
content/svg/content/src/nsSVGTextElement.cpp
content/svg/content/src/nsSVGTextPathElement.h
content/svg/content/src/nsSVGTitleElement.cpp
content/svg/content/src/nsSVGUseElement.h
content/xbl/src/nsXBLBinding.cpp
content/xbl/src/nsXBLBinding.h
content/xbl/src/nsXBLDocumentInfo.cpp
content/xbl/src/nsXBLPrototypeBinding.cpp
content/xbl/src/nsXBLService.cpp
content/xml/content/src/nsXMLCDATASection.cpp
content/xml/content/src/nsXMLElement.h
content/xml/content/src/nsXMLProcessingInstruction.h
content/xml/document/src/nsXMLDocument.cpp
content/xslt/src/xpath/txMozillaXPathTreeWalker.cpp
content/xslt/src/xslt/txEXSLTFunctions.cpp
content/xslt/src/xslt/txMozillaXMLOutput.cpp
content/xslt/src/xslt/txMozillaXSLTProcessor.cpp
content/xul/content/src/nsXULElement.cpp
content/xul/content/src/nsXULElement.h
content/xul/document/src/nsXULContentSink.cpp
content/xul/document/src/nsXULContentSink.h
content/xul/document/src/nsXULDocument.cpp
content/xul/document/src/nsXULPrototypeCache.cpp
content/xul/document/src/nsXULPrototypeCache.h
content/xul/document/src/nsXULPrototypeDocument.cpp
content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp
docshell/base/nsDSURIContentListener.cpp
docshell/base/nsDocShell.cpp
docshell/base/nsDocShell.h
dom/base/nsDOMClassInfo.cpp
dom/base/nsDOMClassInfoClasses.h
dom/base/nsDOMNavigationTiming.h
dom/base/nsDOMScriptObjectFactory.cpp
dom/base/nsDOMScriptObjectHolder.h
dom/base/nsDOMWindowUtils.cpp
dom/base/nsDOMWindowUtils.h
dom/base/nsGlobalWindow.cpp
dom/base/nsGlobalWindow.h
dom/base/nsJSEnvironment.cpp
dom/base/nsPIDOMWindow.h
dom/interfaces/base/domstubs.idl
dom/interfaces/base/nsIDOMWindowUtils.idl
dom/interfaces/canvas/nsIDOMWebGLRenderingContext.idl
dom/ipc/ContentChild.cpp
dom/ipc/ContentChild.h
dom/ipc/ContentParent.cpp
dom/ipc/ContentParent.h
dom/ipc/PContent.ipdl
dom/ipc/TabChild.cpp
dom/ipc/TabChild.h
dom/ipc/TabParent.cpp
dom/ipc/TabParent.h
dom/plugins/base/nsNPAPIPlugin.cpp
dom/plugins/base/nsNPAPIPluginInstance.cpp
dom/plugins/base/nsNPAPIPluginInstance.h
dom/plugins/base/nsPluginHost.cpp
dom/plugins/base/nsPluginHost.h
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/plugins/base/nsPluginInstanceOwner.h
dom/plugins/base/nsPluginStreamListenerPeer.cpp
dom/plugins/ipc/PluginInstanceChild.cpp
dom/plugins/ipc/PluginMessageUtils.h
dom/src/storage/nsDOMStorage.cpp
dom/src/storage/nsDOMStorageDBWrapper.cpp
dom/wifi/WifiWorker.js
dom/workers/Exceptions.cpp
dom/workers/File.cpp
dom/workers/RuntimeService.cpp
dom/workers/WorkerPrivate.cpp
dom/workers/WorkerScope.cpp
dom/workers/XMLHttpRequest.cpp
editor/composer/src/nsComposerCommands.cpp
editor/composer/src/nsEditorSpellCheck.cpp
editor/libeditor/base/nsEditor.cpp
editor/libeditor/base/nsEditor.h
editor/libeditor/base/nsEditorEventListener.cpp
editor/libeditor/html/nsHTMLCSSUtils.cpp
editor/libeditor/html/nsHTMLCSSUtils.h
editor/libeditor/html/nsHTMLEditRules.cpp
editor/libeditor/html/nsHTMLEditor.cpp
editor/libeditor/html/nsHTMLEditor.h
editor/libeditor/html/nsHTMLEditorEventListener.cpp
editor/libeditor/html/nsHTMLEditorStyle.cpp
editor/libeditor/text/nsPlaintextEditor.cpp
editor/libeditor/text/nsTextEditRules.cpp
editor/libeditor/text/tests/Makefile.in
editor/txtsvc/src/nsTextServicesDocument.cpp
embedding/android/GeckoAppShell.java
embedding/components/find/src/nsWebBrowserFind.cpp
extensions/spellcheck/hunspell/src/mozHunspell.cpp
gfx/angle/src/compiler/MapLongVariableNames.cpp
gfx/cairo/bad-memset.patch
gfx/gl/GLContext.cpp
gfx/gl/GLContext.h
gfx/gl/GLContextProviderCGL.mm
gfx/gl/GLContextProviderEGL.cpp
gfx/gl/GLContextProviderGLX.cpp
gfx/gl/GLContextProviderWGL.cpp
gfx/harfbuzz/src/hb-ot-shape.cc
gfx/layers/Layers.cpp
gfx/layers/Layers.h
gfx/layers/ThebesLayerBuffer.cpp
gfx/layers/basic/BasicLayers.cpp
gfx/layers/basic/BasicLayers.h
gfx/layers/d3d9/CanvasLayerD3D9.cpp
gfx/layers/ipc/PLayers.ipdl
gfx/layers/ipc/ShadowLayers.cpp
gfx/layers/ipc/ShadowLayers.h
gfx/layers/ipc/ShadowLayersParent.cpp
gfx/layers/opengl/LayerManagerOGL.cpp
gfx/layers/opengl/LayerManagerOGL.h
gfx/layers/opengl/ThebesLayerOGL.cpp
gfx/src/nsFont.cpp
gfx/src/nsFont.h
gfx/src/nsFontMetrics.cpp
gfx/src/nsFontMetrics.h
gfx/thebes/gfxASurface.h
gfx/thebes/gfxContext.cpp
gfx/thebes/gfxCoreTextShaper.cpp
gfx/thebes/gfxDWriteFontList.cpp
gfx/thebes/gfxDWriteFonts.cpp
gfx/thebes/gfxFT2FontBase.cpp
gfx/thebes/gfxFT2FontList.cpp
gfx/thebes/gfxFont.cpp
gfx/thebes/gfxFont.h
gfx/thebes/gfxFontUtils.h
gfx/thebes/gfxGDIFontList.cpp
gfx/thebes/gfxGDIFontList.h
gfx/thebes/gfxHarfBuzzShaper.cpp
gfx/thebes/gfxImageSurface.cpp
gfx/thebes/gfxImageSurface.h
gfx/thebes/gfxMacPlatformFontList.mm
gfx/thebes/gfxPangoFonts.cpp
gfx/thebes/gfxPattern.cpp
gfx/thebes/gfxPlatform.cpp
gfx/thebes/gfxPlatformFontList.cpp
gfx/thebes/gfxPlatformFontList.h
gfx/thebes/gfxRect.cpp
gfx/thebes/gfxUserFontSet.cpp
gfx/thebes/gfxUserFontSet.h
gfx/thebes/gfxUtils.cpp
gfx/thebes/gfxUtils.h
gfx/thebes/ignorable.x-ccmap
image/public/imgIContainer.idl
image/src/DiscardTracker.cpp
image/src/RasterImage.cpp
image/src/imgFrame.cpp
image/src/imgFrame.h
intl/strres/src/nsStringBundle.cpp
intl/unicharutil/tools/ccmapbin.pl
intl/unicharutil/tools/genignorable.pl
intl/unicharutil/util/bidicattable.h
intl/unicharutil/util/genbidicattable.pl
intl/unicharutil/util/nsBidiUtils.cpp
intl/unicharutil/util/nsBidiUtils.h
intl/unicharutil/util/nsCompressedCharMap.h
ipc/testshell/XPCShellEnvironment.cpp
js/src/Makefile.in
js/src/builtin/ParallelArray.cpp
js/src/config/autoconf.mk.in
js/src/config/milestone.txt
js/src/config/system-headers
js/src/configure.in
js/src/ctypes/Library.cpp
js/src/frontend/FoldConstants.cpp
js/src/gc/Barrier.h
js/src/ion/Bailouts.cpp
js/src/ion/Ion.cpp
js/src/ion/IonBuilder.cpp
js/src/ion/IonBuilder.h
js/src/ion/MIR.cpp
js/src/ion/shared/CodeGenerator-shared.cpp
js/src/ion/shared/CodeGenerator-x86-shared.cpp
js/src/ion/x64/MacroAssembler-x64.h
js/src/jit-test/tests/basic/Proxy-function-freeze.js
js/src/jit-test/tests/basic/bug684348.js
js/src/jit-test/tests/for-of/proxy-4.js
js/src/jit-test/tests/jaeger/globalOptimize-3.js
js/src/js.msg
js/src/jsapi-tests/Makefile.in
js/src/jsapi.cpp
js/src/jsapi.h
js/src/jsarray.cpp
js/src/jsclass.h
js/src/jscntxt.cpp
js/src/jscntxtinlines.h
js/src/jscompartment.cpp
js/src/jsdate.cpp
js/src/jsdate.h
js/src/jsdbgapi.cpp
js/src/jsdbgapi.h
js/src/jsexn.cpp
js/src/jsfriendapi.cpp
js/src/jsfriendapi.h
js/src/jsfun.cpp
js/src/jsgc.cpp
js/src/jsgc.h
js/src/jsgcmark.cpp
js/src/jsgcmark.h
js/src/jsinfer.cpp
js/src/jsinterp.cpp
js/src/jsinterpinlines.h
js/src/jsiter.cpp
js/src/jsnum.cpp
js/src/jsnum.h
js/src/jsobj.cpp
js/src/jsobj.h
js/src/jsobjinlines.h
js/src/jsopcode.cpp
js/src/jsprobes.cpp
js/src/jsproxy.cpp
js/src/jsproxy.h
js/src/jsprvtd.h
js/src/jsreflect.cpp
js/src/jsscope.cpp
js/src/jsscript.cpp
js/src/jsstr.cpp
js/src/jstypedarray.cpp
js/src/jstypedarray.h
js/src/jstypedarrayinlines.h
js/src/jswrapper.cpp
js/src/jswrapper.h
js/src/jsxml.cpp
js/src/methodjit/Compiler.cpp
js/src/methodjit/FastOps.cpp
js/src/methodjit/InvokeHelpers.cpp
js/src/methodjit/MonoIC.cpp
js/src/methodjit/PolyIC.cpp
js/src/methodjit/StubCalls.cpp
js/src/methodjit/TypedArrayIC.h
js/src/shell/js.cpp
js/src/tests/e4x/Expressions/jstests.list
js/src/tests/e4x/GC/jstests.list
js/src/tests/e4x/Global/jstests.list
js/src/tests/e4x/Namespace/jstests.list
js/src/tests/e4x/QName/jstests.list
js/src/tests/e4x/Regress/jstests.list
js/src/tests/e4x/Statements/jstests.list
js/src/tests/e4x/TypeConversion/jstests.list
js/src/tests/e4x/Types/jstests.list
js/src/tests/e4x/XML/jstests.list
js/src/tests/e4x/XMLList/jstests.list
js/src/tests/e4x/decompilation/jstests.list
js/src/tests/e4x/extensions/jstests.list
js/src/tests/e4x/jstests.list
js/src/tests/ecma/Array/jstests.list
js/src/tests/ecma/Boolean/jstests.list
js/src/tests/ecma/Date/jstests.list
js/src/tests/ecma/ExecutionContexts/jstests.list
js/src/tests/ecma/Expressions/jstests.list
js/src/tests/ecma/FunctionObjects/jstests.list
js/src/tests/ecma/GlobalObject/jstests.list
js/src/tests/ecma/LexicalConventions/jstests.list
js/src/tests/ecma/Math/jstests.list
js/src/tests/ecma/NativeObjects/jstests.list
js/src/tests/ecma/Number/jstests.list
js/src/tests/ecma/ObjectObjects/jstests.list
js/src/tests/ecma/SourceText/jstests.list
js/src/tests/ecma/Statements/jstests.list
js/src/tests/ecma/String/jstests.list
js/src/tests/ecma/TypeConversion/jstests.list
js/src/tests/ecma/Types/jstests.list
js/src/tests/ecma/extensions/jstests.list
js/src/tests/ecma/jstests.list
js/src/tests/ecma_2/Exceptions/jstests.list
js/src/tests/ecma_2/Expressions/jstests.list
js/src/tests/ecma_2/FunctionObjects/jstests.list
js/src/tests/ecma_2/LexicalConventions/jstests.list
js/src/tests/ecma_2/RegExp/jstests.list
js/src/tests/ecma_2/Statements/jstests.list
js/src/tests/ecma_2/String/jstests.list
js/src/tests/ecma_2/extensions/jstests.list
js/src/tests/ecma_2/instanceof/jstests.list
js/src/tests/ecma_2/jstests.list
js/src/tests/ecma_3/Array/jstests.list
js/src/tests/ecma_3/Date/jstests.list
js/src/tests/ecma_3/Exceptions/jstests.list
js/src/tests/ecma_3/ExecutionContexts/jstests.list
js/src/tests/ecma_3/Expressions/jstests.list
js/src/tests/ecma_3/FunExpr/jstests.list
js/src/tests/ecma_3/Function/jstests.list
js/src/tests/ecma_3/LexicalConventions/jstests.list
js/src/tests/ecma_3/Number/jstests.list
js/src/tests/ecma_3/NumberFormatting/jstests.list
js/src/tests/ecma_3/Object/jstests.list
js/src/tests/ecma_3/Operators/jstests.list
js/src/tests/ecma_3/RegExp/jstests.list
js/src/tests/ecma_3/Regress/jstests.list
js/src/tests/ecma_3/Statements/jstests.list
js/src/tests/ecma_3/String/jstests.list
js/src/tests/ecma_3/Unicode/jstests.list
js/src/tests/ecma_3/extensions/jstests.list
js/src/tests/ecma_3/jstests.list
js/src/tests/ecma_3_1/Object/jstests.list
js/src/tests/ecma_3_1/RegExp/jstests.list
js/src/tests/ecma_3_1/extensions/jstests.list
js/src/tests/ecma_3_1/jstests.list
js/src/tests/ecma_5/Array/jstests.list
js/src/tests/ecma_5/Boolean/jstests.list
js/src/tests/ecma_5/Date/jstests.list
js/src/tests/ecma_5/Exceptions/jstests.list
js/src/tests/ecma_5/Expressions/jstests.list
js/src/tests/ecma_5/Function/jstests.list
js/src/tests/ecma_5/Global/jstests.list
js/src/tests/ecma_5/JSON/jstests.list
js/src/tests/ecma_5/Number/jstests.list
js/src/tests/ecma_5/Object/jstests.list
js/src/tests/ecma_5/RegExp/jstests.list
js/src/tests/ecma_5/String/jstests.list
js/src/tests/ecma_5/Types/jstests.list
js/src/tests/ecma_5/eval/jstests.list
js/src/tests/ecma_5/extensions/jstests.list
js/src/tests/ecma_5/jstests.list
js/src/tests/ecma_5/misc/jstests.list
js/src/tests/ecma_5/strict/jstests.list
js/src/tests/ecma_6/Map/jstests.list
js/src/tests/ecma_6/Set/jstests.list
js/src/tests/ecma_6/jstests.list
js/src/tests/js1_1/jstests.list
js/src/tests/js1_1/regress/jstests.list
js/src/tests/js1_2/Array/jstests.list
js/src/tests/js1_2/Objects/jstests.list
js/src/tests/js1_2/String/jstests.list
js/src/tests/js1_2/function/jstests.list
js/src/tests/js1_2/jstests.list
js/src/tests/js1_2/operator/jstests.list
js/src/tests/js1_2/regexp/jstests.list
js/src/tests/js1_2/regress/jstests.list
js/src/tests/js1_2/statements/jstests.list
js/src/tests/js1_2/version120/jstests.list
js/src/tests/js1_3/Boolean/jstests.list
js/src/tests/js1_3/Script/jstests.list
js/src/tests/js1_3/extensions/jstests.list
js/src/tests/js1_3/inherit/jstests.list
js/src/tests/js1_3/jstests.list
js/src/tests/js1_3/misc/jstests.list
js/src/tests/js1_3/regress/jstests.list
js/src/tests/js1_4/Eval/jstests.list
js/src/tests/js1_4/Functions/jstests.list
js/src/tests/js1_4/Regress/jstests.list
js/src/tests/js1_4/jstests.list
js/src/tests/js1_5/Array/jstests.list
js/src/tests/js1_5/Date/jstests.list
js/src/tests/js1_5/Error/jstests.list
js/src/tests/js1_5/Exceptions/jstests.list
js/src/tests/js1_5/Expressions/jstests.list
js/src/tests/js1_5/Function/jstests.list
js/src/tests/js1_5/GC/jstests.list
js/src/tests/js1_5/GetSet/jstests.list
js/src/tests/js1_5/LexicalConventions/jstests.list
js/src/tests/js1_5/LexicalConventions/let.js
js/src/tests/js1_5/Object/jstests.list
js/src/tests/js1_5/Regress/jstests.list
js/src/tests/js1_5/Scope/jstests.list
js/src/tests/js1_5/String/jstests.list
js/src/tests/js1_5/decompilation/jstests.list
js/src/tests/js1_5/extensions/jstests.list
js/src/tests/js1_5/jstests.list
js/src/tests/js1_6/Array/jstests.list
js/src/tests/js1_6/Regress/jstests.list
js/src/tests/js1_6/String/jstests.list
js/src/tests/js1_6/decompilation/jstests.list
js/src/tests/js1_6/extensions/jstests.list
js/src/tests/js1_6/jstests.list
js/src/tests/js1_7/GC/jstests.list
js/src/tests/js1_7/block/jstests.list
js/src/tests/js1_7/decompilation/jstests.list
js/src/tests/js1_7/expressions/jstests.list
js/src/tests/js1_7/extensions/jstests.list
js/src/tests/js1_7/geniter/jstests.list
js/src/tests/js1_7/iterable/jstests.list
js/src/tests/js1_7/jstests.list
js/src/tests/js1_7/lexical/jstests.list
js/src/tests/js1_7/regexp/jstests.list
js/src/tests/js1_7/regress/jstests.list
js/src/tests/js1_8/decompilation/jstests.list
js/src/tests/js1_8/extensions/jstests.list
js/src/tests/js1_8/genexps/jstests.list
js/src/tests/js1_8/jstests.list
js/src/tests/js1_8/regress/jstests.list
js/src/tests/js1_8_1/JSON/jstests.list
js/src/tests/js1_8_1/String/jstests.list
js/src/tests/js1_8_1/decompilation/jstests.list
js/src/tests/js1_8_1/extensions/jstests.list
js/src/tests/js1_8_1/jit/jstests.list
js/src/tests/js1_8_1/jstests.list
js/src/tests/js1_8_1/regress/jstests.list
js/src/tests/js1_8_1/strict/jstests.list
js/src/tests/js1_8_5/extensions/jstests.list
js/src/tests/js1_8_5/jstests.list
js/src/tests/js1_8_5/regress/jstests.list
js/src/tests/jstests.list
js/src/vm/ArgumentsObject.cpp
js/src/vm/Debugger.cpp
js/src/vm/GlobalObject.cpp
js/src/vm/Stack-inl.h
js/src/vm/Stack.cpp
js/src/vm/Stack.h
js/xpconnect/loader/mozJSComponentLoader.cpp
js/xpconnect/loader/mozJSSubScriptLoader.cpp
js/xpconnect/shell/xpcshell.cpp
js/xpconnect/src/XPCComponents.cpp
js/xpconnect/src/XPCConvert.cpp
js/xpconnect/src/XPCDebug.cpp
js/xpconnect/src/XPCJSRuntime.cpp
js/xpconnect/src/XPCQuickStubs.cpp
js/xpconnect/src/XPCQuickStubs.h
js/xpconnect/src/XPCWrappedJSClass.cpp
js/xpconnect/src/XPCWrappedNative.cpp
js/xpconnect/src/XPCWrappedNativeJSOps.cpp
js/xpconnect/src/XPCWrappedNativeScope.cpp
js/xpconnect/src/dom_quickstubs.qsconf
js/xpconnect/src/nsXPConnect.cpp
js/xpconnect/src/xpcprivate.h
js/xpconnect/src/xpcpublic.h
js/xpconnect/wrappers/AccessCheck.cpp
js/xpconnect/wrappers/AccessCheck.h
js/xpconnect/wrappers/FilteringWrapper.cpp
js/xpconnect/wrappers/WrapperFactory.cpp
js/xpconnect/wrappers/WrapperFactory.h
js/xpconnect/wrappers/XrayWrapper.cpp
js/xpconnect/wrappers/XrayWrapper.h
layout/base/FrameLayerBuilder.cpp
layout/base/FrameLayerBuilder.h
layout/base/nsBidi.cpp
layout/base/nsCSSFrameConstructor.cpp
layout/base/nsCSSRendering.cpp
layout/base/nsCSSRenderingBorders.cpp
layout/base/nsCSSRenderingBorders.h
layout/base/nsDisplayList.cpp
layout/base/nsDisplayList.h
layout/base/nsIPresShell.h
layout/base/nsLayoutUtils.cpp
layout/base/nsLayoutUtils.h
layout/base/nsPresArena.cpp
layout/base/nsPresShell.cpp
layout/base/nsPresShell.h
layout/base/tests/Makefile.in
layout/base/tests/test_reftests_with_caret.html
layout/build/Makefile.in
layout/build/nsLayoutModule.cpp
layout/generic/nsBlockFrame.cpp
layout/generic/nsFrame.cpp
layout/generic/nsGfxScrollFrame.cpp
layout/generic/nsGfxScrollFrame.h
layout/generic/nsHTMLReflowState.cpp
layout/generic/nsIFrame.h
layout/generic/nsSelection.cpp
layout/generic/nsTextFrameThebes.cpp
layout/generic/nsTextFrameUtils.cpp
layout/generic/nsTextFrameUtils.h
layout/generic/nsTextRunTransformations.cpp
layout/generic/nsViewportFrame.cpp
layout/ipc/RenderFrameParent.cpp
layout/ipc/RenderFrameParent.h
layout/mathml/mathml.css
layout/mathml/nsMathMLChar.cpp
layout/mathml/nsMathMLChar.h
layout/mathml/nsMathMLmactionFrame.cpp
layout/mathml/nsMathMLmencloseFrame.cpp
layout/mathml/nsMathMLmfencedFrame.cpp
layout/mathml/nsMathMLmoFrame.cpp
layout/reftests/border-radius/reftest.list
layout/reftests/bugs/reftest.list
layout/reftests/canvas/reftest.list
layout/reftests/mathml/reftest.list
layout/reftests/svg/reftest.list
layout/reftests/svg/smil/reftest.list
layout/reftests/text/reftest.list
layout/style/Declaration.cpp
layout/style/nsCSSParser.cpp
layout/style/nsCSSRules.cpp
layout/style/nsCSSValue.cpp
layout/style/nsComputedDOMStyle.cpp
layout/style/nsFontFaceLoader.cpp
layout/style/nsLayoutStylesheetCache.cpp
layout/style/nsRuleNode.cpp
layout/style/nsRuleNode.h
layout/style/nsStyleSet.cpp
layout/style/nsStyleSet.h
layout/style/nsStyleStruct.cpp
layout/style/nsStyleStruct.h
layout/style/nsStyleUtil.cpp
layout/style/nsStyleUtil.h
layout/style/test/Makefile.in
layout/style/test/property_database.js
layout/style/ua.css
layout/svg/base/src/nsSVGForeignObjectFrame.cpp
layout/svg/base/src/nsSVGGlyphFrame.cpp
layout/svg/base/src/nsSVGOuterSVGFrame.cpp
layout/tables/nsTableCellFrame.cpp
layout/tables/nsTableFrame.cpp
layout/tables/nsTableRowFrame.cpp
layout/tables/nsTableRowFrame.h
layout/xul/base/public/nsXULPopupManager.h
layout/xul/base/src/nsBoxFrame.cpp
layout/xul/base/src/nsButtonBoxFrame.cpp
layout/xul/base/src/nsLeafBoxFrame.cpp
layout/xul/base/src/nsMenuFrame.cpp
layout/xul/base/src/nsProgressMeterFrame.cpp
layout/xul/base/src/nsSliderFrame.cpp
layout/xul/base/src/nsTextBoxFrame.cpp
layout/xul/base/src/nsXULPopupManager.cpp
media/libpng/libpng.txt
media/libvpx/vp8/common/arm/armv6/recon_v6.asm
media/libvpx/vp8/common/arm/neon/recon16x16mb_neon.asm
media/libvpx/vp8/common/arm/neon/recon2b_neon.asm
media/libvpx/vp8/common/arm/neon/recon4b_neon.asm
media/libvpx/vp8/common/arm/neon/recon_neon.c
media/libvpx/vp8/common/arm/neon/reconb_neon.asm
media/libvpx/vp8/common/arm/neon/shortidct4x4llm_1_neon.asm
media/libvpx/vp8/common/common_types.h
media/libvpx/vp8/common/defaultcoefcounts.c
media/libvpx/vp8/common/defaultcoefcounts.h
media/libvpx/vp8/common/g_common.h
media/libvpx/vp8/common/invtrans.c
media/libvpx/vp8/common/recon.c
media/libvpx/vp8/common/textblit.c
media/libvpx/vp8/common/type_aliases.h
media/libvpx/vp8/decoder/arm/armv6/dequant_dc_idct_v6.asm
media/libvpx/vp8/decoder/arm/armv6/dequant_idct_v6.asm
media/libvpx/vp8/decoder/arm/armv6/dequantize_v6.asm
media/libvpx/vp8/decoder/arm/armv6/idct_blk_v6.c
media/libvpx/vp8/decoder/arm/dequantize_arm.c
media/libvpx/vp8/decoder/arm/dequantize_arm.h
media/libvpx/vp8/decoder/arm/neon/dequant_idct_neon.asm
media/libvpx/vp8/decoder/arm/neon/dequantizeb_neon.asm
media/libvpx/vp8/decoder/arm/neon/idct_blk_neon.c
media/libvpx/vp8/decoder/arm/neon/idct_dequant_0_2x_neon.asm
media/libvpx/vp8/decoder/arm/neon/idct_dequant_dc_0_2x_neon.asm
media/libvpx/vp8/decoder/arm/neon/idct_dequant_dc_full_2x_neon.asm
media/libvpx/vp8/decoder/arm/neon/idct_dequant_full_2x_neon.asm
media/libvpx/vp8/decoder/dequantize.c
media/libvpx/vp8/decoder/dequantize.h
media/libvpx/vp8/decoder/idct_blk.c
media/libvpx/vp8/decoder/x86/dequantize_mmx.asm
media/libvpx/vp8/decoder/x86/dequantize_x86.h
media/libvpx/vp8/decoder/x86/idct_blk_mmx.c
media/libvpx/vp8/decoder/x86/idct_blk_sse2.c
media/libvpx/vp8/encoder/arm/armv6/vp8_fast_fdct4x4_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_mse16x16_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_sad16x16_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_variance16x16_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_variance8x8_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_variance_halfpixvar16x16_h_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_variance_halfpixvar16x16_hv_armv6.asm
media/libvpx/vp8/encoder/arm/armv6/vp8_variance_halfpixvar16x16_v_armv6.asm
media/libvpx/vp8/encoder/arm/neon/fastfdct4x4_neon.asm
media/libvpx/vp8/encoder/arm/neon/fastfdct8x4_neon.asm
media/libvpx/vp8/encoder/arm/neon/sad16_neon.asm
media/libvpx/vp8/encoder/arm/neon/sad8_neon.asm
media/libvpx/vp8/encoder/arm/neon/variance_neon.asm
media/libvpx/vp8/encoder/arm/neon/vp8_mse16x16_neon.asm
media/libvpx/vp8/encoder/arm/neon/vp8_subpixelvariance16x16_neon.asm
media/libvpx/vp8/encoder/arm/neon/vp8_subpixelvariance16x16s_neon.asm
media/libvpx/vp8/encoder/arm/neon/vp8_subpixelvariance8x8_neon.asm
media/libvpx/vp8/encoder/arm/picklpf_arm.c
media/libvpx/vp8/encoder/arm/variance_arm.c
media/libvpx/vp8/encoder/arm/variance_arm.h
media/libvpx/vp8/encoder/sad_c.c
media/libvpx/vp8/encoder/variance.h
media/libvpx/vp8/encoder/variance_c.c
media/libvpx/vp8/encoder/x86/sad_mmx.asm
media/libvpx/vp8/encoder/x86/sad_sse2.asm
media/libvpx/vp8/encoder/x86/sad_sse3.asm
media/libvpx/vp8/encoder/x86/sad_sse4.asm
media/libvpx/vp8/encoder/x86/sad_ssse3.asm
media/libvpx/vp8/encoder/x86/variance_impl_mmx.asm
media/libvpx/vp8/encoder/x86/variance_impl_sse2.asm
media/libvpx/vp8/encoder/x86/variance_impl_ssse3.asm
media/libvpx/vp8/encoder/x86/variance_mmx.c
media/libvpx/vp8/encoder/x86/variance_sse2.c
media/libvpx/vp8/encoder/x86/variance_ssse3.c
media/libvpx/vp8/encoder/x86/variance_x86.h
media/libvpx/vpx_ports/config.h
media/libvpx/vpx_scale/arm/neon/vp8_vpxyv12_copyframeyonly_neon.asm
memory/jemalloc/jemalloc.c
mobile/android/base/AndroidManifest.xml.in
mobile/android/base/GeckoApp.java
mobile/android/base/GeckoAppShell.java
mobile/android/base/Makefile.in
mobile/android/base/SurfaceLockInfo.java
mobile/xul/app/mobile.js
mobile/xul/chrome/content/content.js
mobile/xul/confvars.sh
mobile/xul/installer/package-manifest.in
modules/libpref/src/Preferences.cpp
modules/libpref/src/init/all.js
modules/libpref/src/prefapi.cpp
mozglue/android/APKOpen.cpp
mozglue/android/nsGeckoUtils.cpp
netwerk/base/src/nsIOService.cpp
netwerk/base/src/nsIOService.h
netwerk/cache/nsCacheService.h
netwerk/cache/nsDiskCacheBinding.cpp
netwerk/cache/nsDiskCacheDeviceSQL.cpp
netwerk/cache/nsMemoryCacheDevice.cpp
netwerk/mime/nsMIMEHeaderParamImpl.cpp
netwerk/protocol/http/nsHttpChannel.cpp
netwerk/protocol/http/nsHttpChannel.h
netwerk/protocol/http/nsHttpConnection.cpp
netwerk/protocol/http/nsHttpConnectionInfo.cpp
netwerk/protocol/http/nsHttpConnectionInfo.h
netwerk/protocol/http/nsHttpConnectionMgr.cpp
netwerk/protocol/http/nsHttpConnectionMgr.h
netwerk/protocol/http/nsHttpHandler.cpp
netwerk/protocol/http/nsHttpHandler.h
netwerk/protocol/http/nsHttpResponseHead.cpp
netwerk/protocol/websocket/WebSocketChannel.cpp
netwerk/protocol/websocket/WebSocketChannel.h
parser/htmlparser/src/nsDTDUtils.cpp
rdf/base/src/rdfTriplesSerializer.cpp
security/manager/ssl/src/SSLServerCertVerification.cpp
security/manager/ssl/src/TransportSecurityInfo.cpp
security/manager/ssl/src/TransportSecurityInfo.h
security/manager/ssl/src/nsCertTree.cpp
security/manager/ssl/src/nsIdentityChecking.cpp
security/manager/ssl/src/nsNSSCallbacks.cpp
security/manager/ssl/src/nsNSSComponent.cpp
security/manager/ssl/src/nsNSSComponent.h
security/manager/ssl/src/nsNSSIOLayer.cpp
security/manager/ssl/src/nsNSSIOLayer.h
src/test/java/org/mozilla/android/sync/repositories/domain/TabsRecord.java
startupcache/StartupCache.cpp
testing/testsuite-targets.mk
testing/xpcshell/xpcshell.ini
toolkit/components/aboutmemory/content/aboutMemory.js
toolkit/components/downloads/nsDownloadManager.cpp
toolkit/components/passwordmgr/nsLoginManager.js
toolkit/components/places/AsyncFaviconHelpers.cpp
toolkit/components/places/History.cpp
toolkit/components/places/SQLFunctions.cpp
toolkit/components/places/nsNavBookmarks.cpp
toolkit/components/places/nsNavHistory.cpp
toolkit/components/telemetry/Telemetry.cpp
toolkit/components/telemetry/TelemetryHistograms.h
toolkit/components/telemetry/TelemetryPing.js
toolkit/components/url-classifier/ChunkSet.cpp
toolkit/components/url-classifier/ChunkSet.h
toolkit/components/url-classifier/Classifier.cpp
toolkit/components/url-classifier/Classifier.h
toolkit/components/url-classifier/Entries.h
toolkit/components/url-classifier/HashStore.cpp
toolkit/components/url-classifier/HashStore.h
toolkit/components/url-classifier/LookupCache.cpp
toolkit/components/url-classifier/LookupCache.h
toolkit/components/url-classifier/ProtocolParser.cpp
toolkit/components/url-classifier/ProtocolParser.h
toolkit/components/url-classifier/nsCheckSummedOutputStream.cpp
toolkit/components/url-classifier/nsCheckSummedOutputStream.h
toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
toolkit/components/url-classifier/nsUrlClassifierDBService.h
toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
toolkit/components/url-classifier/nsUrlClassifierPrefixSet.h
toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
toolkit/crashreporter/test/Makefile.in
toolkit/mozapps/installer/packager.mk
toolkit/xre/nsAppRunner.cpp
toolkit/xre/nsNativeAppSupportWin.cpp
toolkit/xre/nsUpdateDriver.cpp
toolkit/xre/nsXREDirProvider.cpp
widget/android/AndroidBridge.cpp
widget/android/AndroidBridge.h
widget/android/AndroidJNI.cpp
widget/android/nsAppShell.cpp
widget/android/nsWindow.cpp
widget/android/nsWindow.h
widget/cocoa/TextInputHandler.mm
widget/cocoa/nsChildView.h
widget/cocoa/nsChildView.mm
widget/cocoa/nsClipboard.mm
widget/cocoa/nsCocoaUtils.h
widget/cocoa/nsCocoaUtils.mm
widget/gtk2/nsDeviceContextSpecG.cpp
widget/gtk2/nsDragService.cpp
widget/gtk2/nsNativeKeyBindings.cpp
widget/gtk2/nsWindow.cpp
widget/gtk2/nsWindow.h
widget/nsGUIEvent.h
widget/nsIWidget.h
widget/os2/nsWindow.cpp
widget/qt/nsWindow.cpp
widget/qt/nsWindow.h
widget/windows/nsIMM32Handler.cpp
widget/windows/nsNativeDragTarget.cpp
widget/windows/nsWindow.cpp
widget/windows/nsWindowDefs.h
widget/xpwidgets/nsBaseWidget.cpp
widget/xpwidgets/nsIdleService.cpp
xpcom/base/nsCycleCollector.cpp
xpcom/base/nsMemoryReporterManager.cpp
xpcom/components/Module.h
xpcom/ds/nsCRT.cpp
xpcom/ds/nsCRT.h
xpcom/ds/nsPersistentProperties.cpp
xpcom/glue/nsCycleCollectionParticipant.h
xpcom/io/nsLocalFileUnix.cpp
xpcom/io/nsLocalFileWin.cpp
xpcom/io/nsNativeCharsetUtils.cpp
xpfe/appshell/src/nsAppShellService.cpp
--- a/.hgtags
+++ b/.hgtags
@@ -74,8 +74,9 @@ 54bfd8bf682e295ffd7f22fa921ca343957b6c1c
 a8506ab2c65480cf2f85f54e203ea746522c62bb AURORA_BASE_20111220
 462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R16
 bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131
 bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131
 0000000000000000000000000000000000000000 AURORA_BASE_20120131
 0000000000000000000000000000000000000000 AURORA_BASE_20120131
 bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131
 b6627f28b7ec17e1b46a594df0f780d3a40847e4 FIREFOX_AURORA_13_BASE
+357da346ceb705d196a46574804c7c4ec44ac186 FIREFOX_AURORA_14_BASE
--- a/accessible/public/nsIAccessibleRole.idl
+++ b/accessible/public/nsIAccessibleRole.idl
@@ -35,21 +35,18 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsISupports.idl"
 
 /**
  * Defines cross platform (Gecko) roles.
- *
- * @note - When adding a new role, be sure to also add it to nsRoleMap.h for
- *         each platform.
  */
-[scriptable, uuid(f134da65-39a8-4330-843c-5bd42780b34c)]
+[scriptable, uuid(50db5e86-9a45-4637-a5c3-4ff148c33270)]
 interface nsIAccessibleRole : nsISupports
 {
   /**
    * Used when accessible hans't strong defined role.
    */
   const unsigned long ROLE_NOTHING = 0;
 
   /**
@@ -793,14 +790,23 @@ interface nsIAccessibleRole : nsISupport
   const unsigned long ROLE_FIGURE = 124;
 
   /**
    * Represents a rich item with a check box.
    */
   const unsigned long ROLE_CHECK_RICH_OPTION = 125;
 
   /**
-   * It's not role actually. This constant is important to help ensure
-   * nsRoleMap's are synchronized.
+   * An HTML definition list <dl>
+   */
+  const unsigned long ROLE_DEFINITION_LIST = 126;
+
+  /**
+   * An HTML definition term <dt>
    */
-  const unsigned long ROLE_LAST_ENTRY = 126;
+  const unsigned long ROLE_TERM = 127;
+
+  /**
+   * An HTML definition <dd>
+   */
+  const unsigned long ROLE_DEFINITION = 128;
 };
 
rename from accessible/src/atk/nsApplicationAccessibleWrap.cpp
rename to accessible/src/atk/ApplicationAccessibleWrap.cpp
--- a/accessible/src/atk/nsApplicationAccessibleWrap.cpp
+++ b/accessible/src/atk/ApplicationAccessibleWrap.cpp
@@ -33,17 +33,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsApplicationAccessibleWrap.h"
+#include "ApplicationAccessibleWrap.h"
 
 #include "nsCOMPtr.h"
 #include "nsMai.h"
 #include "prlink.h"
 #include "prenv.h"
 #include "nsIGConfService.h"
 #include "nsIServiceManager.h"
 #include "nsAutoPtr.h"
@@ -461,35 +461,29 @@ mai_util_remove_key_event_listener (guin
     }
 
     g_hash_table_remove(sKey_listener_list, GUINT_TO_POINTER (remove_listener));
     if (g_hash_table_size(sKey_listener_list) == 0) {
         gtk_key_snooper_remove(sKey_snooper_id);
     }
 }
 
-AtkObject *
+AtkObject*
 mai_util_get_root(void)
 {
-    if (nsAccessibilityService::IsShutdown()) {
-        // We've shutdown, try to use gail instead
-        // (to avoid assert in spi_atk_tidy_windows())
-        if (gail_get_root)
-            return gail_get_root();
-
-        return nsnull;
-    }
-
-    nsApplicationAccessible *applicationAcc =
-        nsAccessNode::GetApplicationAccessible();
-
-    if (applicationAcc)
-        return applicationAcc->GetAtkObject();
+  if (nsAccessibilityService::IsShutdown()) {
+    // We've shutdown, try to use gail instead
+    // (to avoid assert in spi_atk_tidy_windows())
+    if (gail_get_root)
+      return gail_get_root();
 
     return nsnull;
+  }
+
+  return nsAccessNode::GetApplicationAccessible()->GetAtkObject();
 }
 
 G_CONST_RETURN gchar *
 mai_util_get_toolkit_name(void)
 {
     return MAI_NAME;
 }
 
@@ -545,25 +539,25 @@ add_listener (GSignalEmissionHook listen
     else {
         g_warning("Invalid object type %s\n", object_type);
     }
     return rc;
 }
 
 static nsresult LoadGtkModule(GnomeAccessibilityModule& aModule);
 
-// nsApplicationAccessibleWrap
+// ApplicationAccessibleWrap
 
-nsApplicationAccessibleWrap::nsApplicationAccessibleWrap():
-    nsApplicationAccessible()
+ApplicationAccessibleWrap::ApplicationAccessibleWrap():
+  ApplicationAccessible()
 {
-    MAI_LOG_DEBUG(("======Create AppRootAcc=%p\n", (void*)this));
+  MAI_LOG_DEBUG(("======Create AppRootAcc=%p\n", (void*)this));
 }
 
-nsApplicationAccessibleWrap::~nsApplicationAccessibleWrap()
+ApplicationAccessibleWrap::~ApplicationAccessibleWrap()
 {
     MAI_LOG_DEBUG(("======Destory AppRootAcc=%p\n", (void*)this));
     nsAccessibleWrap::ShutdownAtkObject();
 }
 
 static gboolean
 toplevel_event_watcher(GSignalInvocationHint* ihint,
                        guint                  n_param_values,
@@ -608,17 +602,17 @@ toplevel_event_watcher(GSignalInvocation
 
     }
   }
 
   return TRUE;
 }
 
 bool
-nsApplicationAccessibleWrap::Init()
+ApplicationAccessibleWrap::Init()
 {
     if (ShouldA11yBeEnabled()) {
         // load and initialize gail library
         nsresult rv = LoadGtkModule(sGail);
         if (NS_SUCCEEDED(rv)) {
             (*sGail.init)();
         }
         else {
@@ -650,21 +644,21 @@ nsApplicationAccessibleWrap::Init()
               reinterpret_cast<gpointer>(nsIAccessibleEvent::EVENT_SHOW), NULL);
           sToplevel_hide_hook =
             g_signal_add_emission_hook(g_signal_lookup("hide", GTK_TYPE_WINDOW),
               0, toplevel_event_watcher,
               reinterpret_cast<gpointer>(nsIAccessibleEvent::EVENT_HIDE), NULL);
         }
     }
 
-    return nsApplicationAccessible::Init();
+    return ApplicationAccessible::Init();
 }
 
 void
-nsApplicationAccessibleWrap::Unload()
+ApplicationAccessibleWrap::Unload()
 {
     if (sToplevel_event_hook_added) {
       sToplevel_event_hook_added = false;
       g_signal_remove_emission_hook(g_signal_lookup("show", GTK_TYPE_WINDOW),
                                     sToplevel_show_hook);
       g_signal_remove_emission_hook(g_signal_lookup("hide", GTK_TYPE_WINDOW),
                                     sToplevel_hide_hook);
     }
@@ -692,27 +686,27 @@ nsApplicationAccessibleWrap::Unload()
     }
     // if (sATKLib) {
     //     PR_UnloadLibrary(sATKLib);
     //     sATKLib = nsnull;
     // }
 }
 
 NS_IMETHODIMP
-nsApplicationAccessibleWrap::GetName(nsAString& aName)
+ApplicationAccessibleWrap::GetName(nsAString& aName)
 {
   // ATK doesn't provide a way to obtain an application name (for example,
   // Firefox or Thunderbird) like IA2 does. Thus let's return an application
   // name as accessible name that was used to get a branding name (for example,
   // Minefield aka nightly Firefox or Daily aka nightly Thunderbird).
   return GetAppName(aName);
 }
 
 NS_IMETHODIMP
-nsApplicationAccessibleWrap::GetNativeInterface(void **aOutAccessible)
+ApplicationAccessibleWrap::GetNativeInterface(void** aOutAccessible)
 {
     *aOutAccessible = nsnull;
 
     if (!mAtkObject) {
         mAtkObject =
             reinterpret_cast<AtkObject *>
                             (g_object_new(MAI_TYPE_ATK_OBJECT, NULL));
         NS_ENSURE_TRUE(mAtkObject, NS_ERROR_OUT_OF_MEMORY);
@@ -740,19 +734,19 @@ gboolean fireRootAccessibleAddedCB(gpoin
     g_object_unref(eventData->app_accessible);
     g_object_unref(eventData->root_accessible);
     free(data);
 
     return FALSE;
 }
 
 bool
-nsApplicationAccessibleWrap::AppendChild(nsAccessible *aChild)
+ApplicationAccessibleWrap::AppendChild(nsAccessible* aChild)
 {
-    if (!nsApplicationAccessible::AppendChild(aChild))
+    if (!ApplicationAccessible::AppendChild(aChild))
       return false;
 
     AtkObject *atkAccessible = nsAccessibleWrap::GetAtkObject(aChild);
     atk_object_set_parent(atkAccessible, mAtkObject);
 
     PRUint32 count = mChildren.Length();
 
     // Emit children_changed::add in a timeout
@@ -767,30 +761,30 @@ nsApplicationAccessibleWrap::AppendChild
       g_object_ref(atkAccessible);
       g_timeout_add(0, fireRootAccessibleAddedCB, eventData);
     }
 
     return true;
 }
 
 bool
-nsApplicationAccessibleWrap::RemoveChild(nsAccessible* aChild)
+ApplicationAccessibleWrap::RemoveChild(nsAccessible* aChild)
 {
     PRInt32 index = aChild->IndexInParent();
 
     AtkObject *atkAccessible = nsAccessibleWrap::GetAtkObject(aChild);
     atk_object_set_parent(atkAccessible, NULL);
     g_signal_emit_by_name(mAtkObject, "children_changed::remove", index,
                           atkAccessible, NULL);
 
-    return nsApplicationAccessible::RemoveChild(aChild);
+    return ApplicationAccessible::RemoveChild(aChild);
 }
 
 void
-nsApplicationAccessibleWrap::PreCreate()
+ApplicationAccessibleWrap::PreCreate()
 {
     if (!sATKChecked) {
         sATKLib = PR_LoadLibrary(sATKLibName);
         if (sATKLib) {
             AtkGetTypeType pfn_atk_hyperlink_impl_get_type = (AtkGetTypeType) PR_FindFunctionSymbol(sATKLib, sATKHyperlinkImplGetTypeSymbol);
             if (pfn_atk_hyperlink_impl_get_type)
                 g_atk_hyperlink_impl_type = pfn_atk_hyperlink_impl_get_type();
 
rename from accessible/src/atk/nsApplicationAccessibleWrap.h
rename to accessible/src/atk/ApplicationAccessibleWrap.h
--- a/accessible/src/atk/nsApplicationAccessibleWrap.h
+++ b/accessible/src/atk/ApplicationAccessibleWrap.h
@@ -33,30 +33,30 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#ifndef __NS_APP_ROOT_ACCESSIBLE_H__
-#define __NS_APP_ROOT_ACCESSIBLE_H__
+#ifndef MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
+#define MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
 
-#include "nsApplicationAccessible.h"
+#include "ApplicationAccessible.h"
 
-class nsApplicationAccessibleWrap: public nsApplicationAccessible
+class ApplicationAccessibleWrap: public ApplicationAccessible
 {
 public:
     static void Unload();
     static void PreCreate();
 
 public:
-    nsApplicationAccessibleWrap();
-    virtual ~nsApplicationAccessibleWrap();
+    ApplicationAccessibleWrap();
+    virtual ~ApplicationAccessibleWrap();
 
     // nsAccessNode
     virtual bool Init();
 
     // nsAccessible
     NS_IMETHOD GetName(nsAString &aName);
 
     virtual bool AppendChild(nsAccessible* aChild);
--- a/accessible/src/atk/Makefile.in
+++ b/accessible/src/atk/Makefile.in
@@ -48,17 +48,17 @@ LIBXUL_LIBRARY = 1
 
 
 CPPSRCS = \
   AtkSocketAccessible.cpp \
   nsAccessNodeWrap.cpp \
   nsAccessibleWrap.cpp \
   nsDocAccessibleWrap.cpp \
   nsRootAccessibleWrap.cpp \
-  nsApplicationAccessibleWrap.cpp \
+  ApplicationAccessibleWrap.cpp \
   nsMaiInterfaceComponent.cpp \
   nsMaiInterfaceAction.cpp \
   nsMaiInterfaceText.cpp \
   nsMaiInterfaceEditableText.cpp \
   nsMaiInterfaceSelection.cpp \
   nsMaiInterfaceValue.cpp \
   nsMaiHyperlink.cpp \
   nsMaiInterfaceHypertext.cpp \
--- a/accessible/src/atk/nsAccessNodeWrap.cpp
+++ b/accessible/src/atk/nsAccessNodeWrap.cpp
@@ -33,17 +33,16 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsAccessNodeWrap.h"
-#include "nsApplicationAccessibleWrap.h"
 
 /* For documentation of the accessibility architecture, 
  * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
  */
 
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsAccessNodeWrap
--- a/accessible/src/atk/nsAccessibleWrap.cpp
+++ b/accessible/src/atk/nsAccessibleWrap.cpp
@@ -33,48 +33,46 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "mozilla/Util.h"
-
-#include "nsAccessible.h"
 #include "nsAccessibleWrap.h"
 
+#include "Accessible-inl.h"
+#include "ApplicationAccessibleWrap.h"
 #include "InterfaceInitFuncs.h"
 #include "nsAccUtils.h"
-#include "nsApplicationAccessibleWrap.h"
 #include "nsIAccessibleRelation.h"
 #include "nsRootAccessible.h"
 #include "nsDocAccessibleWrap.h"
 #include "nsIAccessibleValue.h"
 #include "nsMai.h"
 #include "nsMaiHyperlink.h"
 #include "nsString.h"
 #include "nsAutoPtr.h"
 #include "prprf.h"
-#include "nsRoleMap.h"
 #include "nsStateMap.h"
 #include "Relation.h"
 #include "States.h"
 
+#include "mozilla/Util.h"
 #include "nsXPCOMStrings.h"
 #include "nsComponentManagerUtils.h"
 
 using namespace mozilla;
 using namespace mozilla::a11y;
 
 nsAccessibleWrap::EAvailableAtkSignals nsAccessibleWrap::gAvailableAtkSignals =
   eUnknown;
 
-//defined in nsApplicationAccessibleWrap.cpp
+//defined in ApplicationAccessibleWrap.cpp
 extern "C" GType g_atk_hyperlink_impl_type;
 
 /* MaiAtkObject */
 
 enum {
   ACTIVATE,
   CREATE,
   DEACTIVATE,
@@ -718,34 +716,30 @@ getDescriptionCB(AtkObject *aAtkObj)
                                    NS_ConvertUTF16toUTF8(uniDesc).get());
 
     return aAtkObj->description;
 }
 
 AtkRole
 getRoleCB(AtkObject *aAtkObj)
 {
-    nsAccessibleWrap *accWrap = GetAccessibleWrap(aAtkObj);
-    if (!accWrap) {
-        return ATK_ROLE_INVALID;
-    }
+  nsAccessibleWrap* accWrap = GetAccessibleWrap(aAtkObj);
+  if (!accWrap)
+    return ATK_ROLE_INVALID;
 
 #ifdef DEBUG_A11Y
-    NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap),
-                 "Does not support nsIAccessibleText when it should");
+  NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap),
+      "Does not support nsIAccessibleText when it should");
 #endif
 
-    if (aAtkObj->role == ATK_ROLE_INVALID) {
-        // map to the actual value
-        PRUint32 atkRole = atkRoleMap[accWrap->Role()];
-        NS_ASSERTION(atkRoleMap[nsIAccessibleRole::ROLE_LAST_ENTRY] ==
-                     kROLE_ATK_LAST_ENTRY, "ATK role map skewed");
-        aAtkObj->role = static_cast<AtkRole>(atkRole);
-    }
+  if (aAtkObj->role != ATK_ROLE_INVALID)
     return aAtkObj->role;
+
+  return aAtkObj->role =
+    static_cast<AtkRole>(nsAccessibleWrap::AtkRoleFor(accWrap->Role()));
 }
 
 AtkAttributeSet*
 ConvertToAtkAttributeSet(nsIPersistentProperties* aAttributes)
 {
     if (!aAttributes)
         return nsnull;
 
@@ -972,35 +966,30 @@ refRelationSetCB(AtkObject *aAtkObj)
 
   return relation_set;
 }
 
 // Check if aAtkObj is a valid MaiAtkObject, and return the nsAccessibleWrap
 // for it.
 nsAccessibleWrap *GetAccessibleWrap(AtkObject *aAtkObj)
 {
-    NS_ENSURE_TRUE(IS_MAI_OBJECT(aAtkObj), nsnull);
-    nsAccessibleWrap *tmpAccWrap = MAI_ATK_OBJECT(aAtkObj)->accWrap;
+  NS_ENSURE_TRUE(IS_MAI_OBJECT(aAtkObj), nsnull);
+  nsAccessibleWrap* accWrap = MAI_ATK_OBJECT(aAtkObj)->accWrap;
 
-    // Check if AccessibleWrap was deconstructed
-    if (tmpAccWrap == nsnull) {
-        return nsnull;
-    }
-
-    NS_ENSURE_TRUE(tmpAccWrap->GetAtkObject() == aAtkObj, nsnull);
+  // Check if the accessible was deconstructed.
+  if (!accWrap)
+    return nsnull;
 
-    nsApplicationAccessible *applicationAcc =
-        nsAccessNode::GetApplicationAccessible();
-    nsAccessibleWrap* tmpAppAccWrap =
-        static_cast<nsAccessibleWrap*>(applicationAcc);
+  NS_ENSURE_TRUE(accWrap->GetAtkObject() == aAtkObj, nsnull);
 
-    if (tmpAppAccWrap != tmpAccWrap && !tmpAccWrap->IsValidObject())
-        return nsnull;
+  nsAccessibleWrap* appAccWrap = nsAccessNode::GetApplicationAccessible();
+  if (appAccWrap != accWrap && !accWrap->IsValidObject())
+    return nsnull;
 
-    return tmpAccWrap;
+  return accWrap;
 }
 
 nsresult
 nsAccessibleWrap::HandleAccEvent(AccEvent* aEvent)
 {
     nsresult rv = nsAccessible::HandleAccEvent(aEvent);
     NS_ENSURE_SUCCESS(rv, rv);
 
@@ -1401,8 +1390,24 @@ nsAccessibleWrap::FireAtkShowHideEvent(A
     char *signal_name = g_strconcat(aIsAdded ? "children_changed::add" :  "children_changed::remove",
                                     isFromUserInput ? "" : kNonUserInputEvent, NULL);
     g_signal_emit_by_name(parentObject, signal_name, indexInParent, aObject, NULL);
     g_free(signal_name);
 
     return NS_OK;
 }
 
+PRUint32
+nsAccessibleWrap::AtkRoleFor(role aRole)
+{
+#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
+  case roles::geckoRole: \
+    return atkRole;
+
+  switch (aRole) {
+#include "RoleMap.h"
+    default:
+      MOZ_NOT_REACHED("Unknown role.");
+      return ATK_ROLE_UNKNOWN;
+  }
+
+#undef ROLE
+}
--- a/accessible/src/atk/nsAccessibleWrap.h
+++ b/accessible/src/atk/nsAccessibleWrap.h
@@ -111,16 +111,21 @@ public:
     void SetMaiHyperlink(MaiHyperlink* aMaiHyperlink);
 
     static const char * ReturnString(nsAString &aString) {
       static nsCString returnedString;
       returnedString = NS_ConvertUTF16toUTF8(aString);
       return returnedString.get();
     }
 
+  /**
+   * Function mapping from cross platform roles to ATK roles.
+   */
+  inline static PRUint32 AtkRoleFor(mozilla::a11y::role aRole);
+
 protected:
     virtual nsresult FirePlatformEvent(AccEvent* aEvent);
 
     nsresult FireAtkStateChangeEvent(AccEvent* aEvent, AtkObject *aObject);
     nsresult FireAtkTextChangedEvent(AccEvent* aEvent, AtkObject *aObject);
     nsresult FireAtkShowHideEvent(AccEvent* aEvent, AtkObject *aObject,
                                   bool aIsAdded);
 
--- a/accessible/src/atk/nsMaiInterfaceAction.cpp
+++ b/accessible/src/atk/nsMaiInterfaceAction.cpp
@@ -34,16 +34,17 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "InterfaceInitFuncs.h"
 
+#include "Accessible-inl.h"
 #include "nsMai.h"
 #include "Role.h"
 
 #include "nsString.h"
 
 using namespace mozilla::a11y;
 
 extern "C" {
--- a/accessible/src/atk/nsMaiInterfaceText.cpp
+++ b/accessible/src/atk/nsMaiInterfaceText.cpp
@@ -37,27 +37,26 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "InterfaceInitFuncs.h"
 
 #include "nsHyperTextAccessible.h"
 #include "nsMai.h"
-#include "nsRoleMap.h"
 
 #include "nsIPersistentProperties2.h"
 
 AtkAttributeSet* ConvertToAtkAttributeSet(nsIPersistentProperties* aAttributes);
 
 static void
 ConvertTexttoAsterisks(nsAccessibleWrap* accWrap, nsAString& aString)
 {
     // convert each char to "*" when it's "password text" 
-    PRUint32 atkRole = atkRoleMap[accWrap->NativeRole()];
+    PRUint32 atkRole = nsAccessibleWrap::AtkRoleFor(accWrap->NativeRole());
     if (atkRole == ATK_ROLE_PASSWORD_TEXT) {
         for (PRUint32 i = 0; i < aString.Length(); i++)
             aString.Replace(i, 1, NS_LITERAL_STRING("*"));
     }
 }
 
 extern "C" {
 
@@ -156,17 +155,17 @@ getCharacterAtOffsetCB(AtkText *aText, g
 
     /* PRUnichar is unsigned short in Mozilla */
     /* gnuichar is guint32 in glib */
     PRUnichar uniChar;
     nsresult rv =
         accText->GetCharacterAtOffset(aOffset, &uniChar);
 
     // convert char to "*" when it's "password text" 
-    PRUint32 atkRole = atkRoleMap[accWrap->NativeRole()];
+    PRUint32 atkRole = nsAccessibleWrap::AtkRoleFor(accWrap->NativeRole());
     if (atkRole == ATK_ROLE_PASSWORD_TEXT)
         uniChar = '*';
 
     return (NS_FAILED(rv)) ? 0 : static_cast<gunichar>(uniChar);
 }
 
 static gchar*
 getTextBeforeOffsetCB(AtkText *aText, gint aOffset,
deleted file mode 100644
--- a/accessible/src/atk/nsRoleMap.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is IBM Corporation
- * Portions created by the Initial Developer are Copyright (C) 2006
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Gao, Ming (gaoming@cn.ibm.com)
- *   Aaron Leventhal (aleventh@us.ibm.com)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include <atk/atk.h>
-#include "nsAccessibleWrap.h"
-
-const PRUint32 kROLE_ATK_LAST_ENTRY = 0xffffffff;
-
-// Map array from cross platform roles to  ATK roles
-static const PRUint32 atkRoleMap[] = {
-                                  // Cross Platform Roles       #
-    ATK_ROLE_UNKNOWN,             // roles::NOTHING              0
-    ATK_ROLE_UNKNOWN,             // roles::TITLEBAR             1
-    ATK_ROLE_MENU_BAR,            // roles::MENUBAR              2
-    ATK_ROLE_SCROLL_BAR,          // roles::SCROLLBAR            3
-    ATK_ROLE_UNKNOWN,             // roles::GRIP                 4
-    ATK_ROLE_UNKNOWN,             // roles::SOUND                5
-    ATK_ROLE_UNKNOWN,             // roles::CURSOR               6
-    ATK_ROLE_UNKNOWN,             // roles::CARET                7
-    ATK_ROLE_ALERT,               // roles::ALERT                8
-    ATK_ROLE_WINDOW,              // roles::WINDOW               9
-    ATK_ROLE_INTERNAL_FRAME,      // roles::INTERNAL_FRAME       10
-    ATK_ROLE_MENU,                // roles::MENUPOPUP            11
-    ATK_ROLE_MENU_ITEM,           // roles::MENUITEM             12
-    ATK_ROLE_TOOL_TIP,            // roles::TOOLTIP              13
-    ATK_ROLE_EMBEDDED,            // roles::APPLICATION          14
-    ATK_ROLE_DOCUMENT_FRAME,      // roles::DOCUMENT             15
-    ATK_ROLE_PANEL,               // roles::PANE                 16
-    ATK_ROLE_CHART,               // roles::CHART                17
-    ATK_ROLE_DIALOG,              // roles::DIALOG               18
-    ATK_ROLE_UNKNOWN,             // roles::BORDER               19
-    ATK_ROLE_PANEL,               // roles::GROUPING             20
-    ATK_ROLE_SEPARATOR,           // roles::SEPARATOR            21
-    ATK_ROLE_TOOL_BAR,            // roles::TOOLBAR              22
-    ATK_ROLE_STATUSBAR,           // roles::STATUSBAR            23
-    ATK_ROLE_TABLE,               // roles::TABLE                24
-    ATK_ROLE_COLUMN_HEADER,       // roles::COLUMNHEADER         25
-    ATK_ROLE_ROW_HEADER,          // roles::ROWHEADER            26
-    ATK_ROLE_UNKNOWN,             // roles::COLUMN               27
-    ATK_ROLE_LIST_ITEM,           // roles::ROW                  28
-    ATK_ROLE_TABLE_CELL,          // roles::CELL                 29
-    ATK_ROLE_LINK,                // roles::LINK                 30
-    ATK_ROLE_UNKNOWN,             // roles::HELPBALLOON          31
-    ATK_ROLE_IMAGE,               // roles::CHARACTER            32
-    ATK_ROLE_LIST,                // roles::LIST                 33
-    ATK_ROLE_LIST_ITEM,           // roles::LISTITEM             34
-    ATK_ROLE_TREE,                // roles::OUTLINE              35
-    ATK_ROLE_LIST_ITEM,           // roles::OUTLINEITEM          36
-    ATK_ROLE_PAGE_TAB,            // roles::PAGETAB              37
-    ATK_ROLE_SCROLL_PANE,         // roles::PROPERTYPAGE         38
-    ATK_ROLE_UNKNOWN,             // roles::INDICATOR            39
-    ATK_ROLE_IMAGE,               // roles::GRAPHIC              40
-    ATK_ROLE_UNKNOWN,             // roles::STATICTEXT           41
-    ATK_ROLE_UNKNOWN,             // roles::TEXT_LEAF            42
-    ATK_ROLE_PUSH_BUTTON,         // roles::PUSHBUTTON           43
-    ATK_ROLE_CHECK_BOX,           // roles::CHECKBUTTON          44
-    ATK_ROLE_RADIO_BUTTON,        // roles::RADIOBUTTON          45
-    ATK_ROLE_COMBO_BOX,           // roles::COMBOBOX             46
-    ATK_ROLE_COMBO_BOX,           // roles::DROPLIST             47
-    ATK_ROLE_PROGRESS_BAR,        // roles::PROGRESSBAR          48
-    ATK_ROLE_DIAL,                // roles::DIAL                 49
-    ATK_ROLE_UNKNOWN,             // roles::HOTKEYFIELD          50
-    ATK_ROLE_SLIDER,              // roles::SLIDER               51
-    ATK_ROLE_SPIN_BUTTON,         // roles::SPINBUTTON           52
-    ATK_ROLE_IMAGE,               // roles::DIAGRAM              53
-    ATK_ROLE_ANIMATION,           // roles::ANIMATION            54
-    ATK_ROLE_UNKNOWN,             // roles::EQUATION             55
-    ATK_ROLE_PUSH_BUTTON,         // roles::BUTTONDROPDOWN       56
-    ATK_ROLE_PUSH_BUTTON,         // roles::BUTTONMENU           57
-    ATK_ROLE_UNKNOWN,             // roles::BUTTONDROPDOWNGRID   58
-    ATK_ROLE_UNKNOWN,             // roles::WHITESPACE           59
-    ATK_ROLE_PAGE_TAB_LIST,       // roles::PAGETABLIST          60
-    ATK_ROLE_UNKNOWN,             // roles::CLOCK                61
-    ATK_ROLE_PUSH_BUTTON,         // roles::SPLITBUTTON          62
-    ATK_ROLE_UNKNOWN,             // roles::IPADDRESS            63
-    ATK_ROLE_ACCEL_LABEL,         // roles::ACCEL_LABEL          64
-    ATK_ROLE_ARROW,               // roles::ARROW                65
-    ATK_ROLE_CANVAS,              // roles::CANVAS               66
-    ATK_ROLE_CHECK_MENU_ITEM,     // roles::CHECK_MENU_ITEM      67
-    ATK_ROLE_COLOR_CHOOSER,       // roles::COLOR_CHOOSER        68
-    ATK_ROLE_DATE_EDITOR,         // roles::DATE_EDITOR          69
-    ATK_ROLE_DESKTOP_ICON,        // roles::DESKTOP_ICON         70
-    ATK_ROLE_DESKTOP_FRAME,       // roles::DESKTOP_FRAME        71
-    ATK_ROLE_DIRECTORY_PANE,      // roles::DIRECTORY_PANE       72
-    ATK_ROLE_FILE_CHOOSER,        // roles::FILE_CHOOSER         73
-    ATK_ROLE_FONT_CHOOSER,        // roles::FONT_CHOOSER         74
-    ATK_ROLE_FRAME,               // roles::CHROME_WINDOW        75
-    ATK_ROLE_GLASS_PANE,          // roles::GLASS_PANE           76
-    ATK_ROLE_HTML_CONTAINER,      // roles::HTML_CONTAINER       77
-    ATK_ROLE_ICON,                // roles::ICON                 78
-    ATK_ROLE_LABEL,               // roles::LABEL                79
-    ATK_ROLE_LAYERED_PANE,        // roles::LAYERED_PANE         80
-    ATK_ROLE_OPTION_PANE,         // roles::OPTION_PANE          81
-    ATK_ROLE_PASSWORD_TEXT,       // roles::PASSWORD_TEXT        82
-    ATK_ROLE_POPUP_MENU,          // roles::POPUP_MENU           83
-    ATK_ROLE_RADIO_MENU_ITEM,     // roles::RADIO_MENU_ITEM      84
-    ATK_ROLE_ROOT_PANE,           // roles::ROOT_PANE            85
-    ATK_ROLE_SCROLL_PANE,         // roles::SCROLL_PANE          86
-    ATK_ROLE_SPLIT_PANE,          // roles::SPLIT_PANE           87
-    ATK_ROLE_TABLE_COLUMN_HEADER, // roles::TABLE_COLUMN_HEADER  88
-    ATK_ROLE_TABLE_ROW_HEADER,    // roles::TABLE_ROW_HEADER     89
-    ATK_ROLE_TEAR_OFF_MENU_ITEM,  // roles::TEAR_OFF_MENU_ITEM   90
-    ATK_ROLE_TERMINAL,            // roles::TERMINAL             91
-    ATK_ROLE_TEXT,                // roles::TEXT_CONTAINER       92
-    ATK_ROLE_TOGGLE_BUTTON,       // roles::TOGGLE_BUTTON        93
-    ATK_ROLE_TREE_TABLE,          // roles::TREE_TABLE           94
-    ATK_ROLE_VIEWPORT,            // roles::VIEWPORT             95
-    ATK_ROLE_HEADER,              // roles::HEADER               96
-    ATK_ROLE_FOOTER,              // roles::FOOTER               97
-    ATK_ROLE_PARAGRAPH,           // roles::PARAGRAPH            98
-    ATK_ROLE_RULER,               // roles::RULER                99
-    ATK_ROLE_AUTOCOMPLETE,        // roles::AUTOCOMPLETE         100
-    ATK_ROLE_EDITBAR,             // roles::EDITBAR              101
-    ATK_ROLE_ENTRY,               // roles::ENTRY                102
-    ATK_ROLE_CAPTION,             // roles::CAPTION              103
-    ATK_ROLE_DOCUMENT_FRAME,      // roles::DOCUMENT_FRAME       104
-    ATK_ROLE_HEADING,             // roles::HEADING              105
-    ATK_ROLE_PAGE,                // roles::PAGE                 106
-    ATK_ROLE_SECTION,             // roles::SECTION              107
-    ATK_ROLE_REDUNDANT_OBJECT,    // roles::REDUNDANT_OBJECT     108
-    ATK_ROLE_FORM,                // roles::FORM                 109
-    ATK_ROLE_INPUT_METHOD_WINDOW, // roles::IME                  110
-    ATK_ROLE_APPLICATION,         // roles::APP_ROOT             111
-    ATK_ROLE_MENU,                // roles::PARENT_MENUITEM      112
-    ATK_ROLE_CALENDAR,            // roles::CALENDAR             113
-    ATK_ROLE_MENU,                // roles::COMBOBOX_LIST        114
-    ATK_ROLE_MENU_ITEM,           // roles::COMBOBOX_OPTION      115
-    ATK_ROLE_IMAGE,               // roles::IMAGE_MAP            116
-    ATK_ROLE_LIST_ITEM,           // roles::OPTION               117
-    ATK_ROLE_LIST_ITEM,           // roles::RICH_OPTION          118
-    ATK_ROLE_LIST,                // roles::LISTBOX              119
-    ATK_ROLE_UNKNOWN,             // roles::FLAT_EQUATION        120
-    ATK_ROLE_TABLE_CELL,          // roles::GRID_CELL            121
-    ATK_ROLE_PANEL,               // roles::EMBEDDED_OBJECT      122
-    ATK_ROLE_SECTION,             // roles::NOTE                 123
-    ATK_ROLE_PANEL,               // roles::FIGURE               124
-    ATK_ROLE_CHECK_BOX,           // roles::CHECK_RICH_OPTION    125
-    kROLE_ATK_LAST_ENTRY          // roles::LAST_ENTRY
-};
-
--- a/accessible/src/base/AccEvent.cpp
+++ b/accessible/src/base/AccEvent.cpp
@@ -34,19 +34,19 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "AccEvent.h"
 
+#include "ApplicationAccessibleWrap.h"
 #include "nsAccessibilityService.h"
 #include "nsAccUtils.h"
-#include "nsApplicationAccessibleWrap.h"
 #include "nsDocAccessible.h"
 #include "nsIAccessibleText.h"
 #include "nsAccEvent.h"
 #include "States.h"
 
 #include "nsIDOMDocument.h"
 #include "nsEventStateManager.h"
 #include "nsIServiceManager.h"
@@ -150,17 +150,17 @@ AccEvent::CaptureIsFromUserInput(EIsFrom
 {
   nsINode *targetNode = GetNode();
 
 #ifdef DEBUG
   if (!targetNode) {
     // XXX: remove this hack during reorganization of 506907. Meanwhile we
     // want to get rid an assertion for application accessible events which
     // don't have DOM node (see bug 506206).
-    nsApplicationAccessible *applicationAcc =
+    ApplicationAccessible* applicationAcc =
       nsAccessNode::GetApplicationAccessible();
 
     if (mAccessible != static_cast<nsIAccessible*>(applicationAcc))
       NS_ASSERTION(targetNode, "There should always be a DOM node for an event");
   }
 #endif
 
   if (aIsFromUserInput != eAutoDetect) {
--- a/accessible/src/base/Makefile.in
+++ b/accessible/src/base/Makefile.in
@@ -64,17 +64,16 @@ CPPSRCS = \
   nsAccUtils.cpp \
   nsAccessibilityService.cpp \
   nsAccessible.cpp \
   nsAccessiblePivot.cpp \
   nsAccTreeWalker.cpp \
   nsBaseWidgetAccessible.cpp \
   nsEventShell.cpp \
   nsRootAccessible.cpp \
-  nsApplicationAccessible.cpp \
   nsCaretAccessible.cpp \
   nsTextAccessible.cpp \
   nsTextEquivUtils.cpp \
   StyleInfo.cpp \
   TextAttrs.cpp \
   TextUpdater.cpp \
   $(NULL)
 
--- a/accessible/src/base/Role.h
+++ b/accessible/src/base/Role.h
@@ -36,23 +36,26 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef _role_h_
 #define _role_h_
 
 /**
- * Note: Make sure to update the localized role names when changing the list.
+ * @note Make sure to update the localized role names when changing the list.
+ * @note When adding a new role, be sure to also add it to base/RoleMap.h and
+ *       update nsIAccessibleRole.
  */
 
 namespace mozilla {
 namespace a11y {
 namespace roles {
-  enum Role {
+
+enum Role {
   /**
    * Used when accessible hans't strong defined role.
    */
   NOTHING = 0,
 
   /**
    * Represents a title or caption bar for a window. It is used by MSAA only,
    * supported automatically by MS Windows.
@@ -794,19 +797,31 @@ namespace roles {
   FIGURE = 124,
 
   /**
    * Represents a rich item with a check box.
    */
   CHECK_RICH_OPTION = 125,
 
   /**
-   * It's not role actually. This constant is important to help ensure
-   * nsRoleMap's are synchronized.
+   * Represent a definition list (dl in HTML).
+   */
+  DEFINITION_LIST = 126,
+
+  /**
+   * Represent a term in a definition list (dt in HTML).
    */
-  LAST_ENTRY = 126
-  };
+  TERM = 127,
+
+  /**
+   * Represent a definition in a definition list (dd in HTML)
+   */
+  DEFINITION = 128,
+};
+
 } // namespace role
+
 typedef enum mozilla::a11y::roles::Role role;
+
 } // namespace a11y
 } // namespace mozilla
 
 #endif
new file mode 100644
--- /dev/null
+++ b/accessible/src/base/RoleMap.h
@@ -0,0 +1,920 @@
+/* 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/. */
+
+/**
+ * Usage: declare the macro ROLE()with the following arguments:
+ * ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role)
+ */
+
+ROLE(NOTHING,
+     "nothing",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_UNKNOWN)
+
+ROLE(TITLEBAR,
+     "titlebar",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,  //Irrelevant on OS X; windows are always native.
+     ROLE_SYSTEM_TITLEBAR,
+     ROLE_SYSTEM_TITLEBAR)
+
+ROLE(MENUBAR,
+     "menubar",
+     ATK_ROLE_MENU_BAR,
+     NSAccessibilityMenuBarRole,  //Irrelevant on OS X; the menubar will always be native and on the top of the screen.
+     ROLE_SYSTEM_MENUBAR,
+     ROLE_SYSTEM_MENUBAR)
+
+ROLE(SCROLLBAR,
+     "scrollbar",
+     ATK_ROLE_SCROLL_BAR,
+     NSAccessibilityScrollBarRole,  //We might need to make this its own mozAccessible, to support the children objects (valueindicator, down/up buttons).
+     ROLE_SYSTEM_SCROLLBAR,
+     ROLE_SYSTEM_SCROLLBAR)
+
+ROLE(GRIP,
+     "grip",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilitySplitterRole,
+     ROLE_SYSTEM_GRIP,
+     ROLE_SYSTEM_GRIP)
+
+ROLE(SOUND,
+     "sound",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,  //Unused on OS X.
+     ROLE_SYSTEM_SOUND,
+     ROLE_SYSTEM_SOUND)
+
+ROLE(CURSOR,
+     "cursor",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,  //Unused on OS X.
+     ROLE_SYSTEM_CURSOR,
+     ROLE_SYSTEM_CURSOR)
+
+ROLE(CARET,
+     "caret",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,  //Unused on OS X.
+     ROLE_SYSTEM_CARET,
+     ROLE_SYSTEM_CARET)
+
+ROLE(ALERT,
+     "alert",
+     ATK_ROLE_ALERT,
+     NSAccessibilityWindowRole,
+     ROLE_SYSTEM_ALERT,
+     ROLE_SYSTEM_ALERT)
+
+ROLE(WINDOW,
+     "window",
+     ATK_ROLE_WINDOW,
+     NSAccessibilityWindowRole,  //Irrelevant on OS X; all window a11y is handled by the system.
+     ROLE_SYSTEM_WINDOW,
+     ROLE_SYSTEM_WINDOW)
+
+ROLE(INTERNAL_FRAME,
+     "internal frame",
+     ATK_ROLE_INTERNAL_FRAME,
+     NSAccessibilityScrollAreaRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_INTERNAL_FRAME)
+
+ROLE(MENUPOPUP,
+     "menupopup",
+     ATK_ROLE_MENU,
+     NSAccessibilityMenuRole,  //The parent of menuitems.
+     ROLE_SYSTEM_MENUPOPUP,
+     ROLE_SYSTEM_MENUPOPUP)
+
+ROLE(MENUITEM,
+     "menuitem",
+     ATK_ROLE_MENU_ITEM,
+     NSAccessibilityMenuItemRole,
+     ROLE_SYSTEM_MENUITEM,
+     ROLE_SYSTEM_MENUITEM)
+
+ROLE(TOOLTIP,
+     "tooltip",
+     ATK_ROLE_TOOL_TIP,
+     @"AXHelpTag",  //10.4+ only, so we re-define the constant.
+     ROLE_SYSTEM_TOOLTIP,
+     ROLE_SYSTEM_TOOLTIP)
+
+ROLE(APPLICATION,
+     "application",
+     ATK_ROLE_EMBEDDED,
+     NSAccessibilityGroupRole,  //Unused on OS X. the system will take care of this.
+     ROLE_SYSTEM_APPLICATION,
+     ROLE_SYSTEM_APPLICATION)
+
+ROLE(DOCUMENT,
+     "document",
+     ATK_ROLE_DOCUMENT_FRAME,
+     @"AXWebArea",
+     ROLE_SYSTEM_DOCUMENT,
+     ROLE_SYSTEM_DOCUMENT)
+
+/**
+ *  msaa comment:
+ *   We used to map to ROLE_SYSTEM_PANE, but JAWS would
+ *   not read the accessible name for the contaning pane.
+ *   However, JAWS will read the accessible name for a groupbox.
+ *   By mapping a PANE to a GROUPING, we get no undesirable effects,
+ *   but fortunately JAWS will then read the group's label,
+ *   when an inner control gets focused.
+ */
+ROLE(PANE,
+     "pane",
+     ATK_ROLE_PANEL,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_GROUPING,
+     ROLE_SYSTEM_GROUPING)
+
+ROLE(CHART,
+     "chart",
+     ATK_ROLE_CHART,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_CHART,
+     ROLE_SYSTEM_CHART)
+
+ROLE(DIALOG,
+     "dialog",
+     ATK_ROLE_DIALOG,
+     NSAccessibilityWindowRole,  //There's a dialog subrole.
+     ROLE_SYSTEM_DIALOG,
+     ROLE_SYSTEM_DIALOG)
+
+ROLE(BORDER,
+     "border",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,  //Unused on OS X.
+     ROLE_SYSTEM_BORDER,
+     ROLE_SYSTEM_BORDER)
+
+ROLE(GROUPING,
+     "grouping",
+     ATK_ROLE_PANEL,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_GROUPING,
+     ROLE_SYSTEM_GROUPING)
+
+ROLE(SEPARATOR,
+     "separator",
+     ATK_ROLE_SEPARATOR,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_SEPARATOR,
+     ROLE_SYSTEM_SEPARATOR)
+
+ROLE(TOOLBAR,
+     "toolbar",
+     ATK_ROLE_TOOL_BAR,
+     NSAccessibilityToolbarRole,
+     ROLE_SYSTEM_TOOLBAR,
+     ROLE_SYSTEM_TOOLBAR)
+
+ROLE(STATUSBAR,
+     "statusbar",
+     ATK_ROLE_STATUSBAR,
+     NSAccessibilityUnknownRole,  //Doesn't exist on OS X (a status bar is its parts; a progressbar, a label, etc.)
+     ROLE_SYSTEM_STATUSBAR,
+     ROLE_SYSTEM_STATUSBAR)
+
+ROLE(TABLE,
+     "table",
+     ATK_ROLE_TABLE,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_TABLE,
+     ROLE_SYSTEM_TABLE)
+
+ROLE(COLUMNHEADER,
+     "columnheader",
+     ATK_ROLE_COLUMN_HEADER,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_COLUMNHEADER,
+     ROLE_SYSTEM_COLUMNHEADER)
+
+ROLE(ROWHEADER,
+     "rowheader",
+     ATK_ROLE_ROW_HEADER,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_ROWHEADER,
+     ROLE_SYSTEM_ROWHEADER)
+
+ROLE(COLUMN,
+     "column",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityColumnRole,
+     ROLE_SYSTEM_COLUMN,
+     ROLE_SYSTEM_COLUMN)
+
+ROLE(ROW,
+     "row",
+     ATK_ROLE_LIST_ITEM,
+     NSAccessibilityRowRole,
+     ROLE_SYSTEM_ROW,
+     ROLE_SYSTEM_ROW)
+
+ROLE(CELL,
+     "cell",
+     ATK_ROLE_TABLE_CELL,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_CELL,
+     ROLE_SYSTEM_CELL)
+
+ROLE(LINK,
+     "link",
+     ATK_ROLE_LINK,
+     @"AXLink",  //10.4+ the attr first define in SDK 10.4, so we define it here too. ROLE_LINK
+     ROLE_SYSTEM_LINK,
+     ROLE_SYSTEM_LINK)
+
+ROLE(HELPBALLOON,
+     "helpballoon",
+     ATK_ROLE_UNKNOWN,
+     @"AXHelpTag",
+     ROLE_SYSTEM_HELPBALLOON,
+     ROLE_SYSTEM_HELPBALLOON)
+
+ROLE(CHARACTER,
+     "character",
+     ATK_ROLE_IMAGE,
+     NSAccessibilityUnknownRole,  //Unused on OS X.
+     ROLE_SYSTEM_CHARACTER,
+     ROLE_SYSTEM_CHARACTER)
+
+ROLE(LIST,
+     "list",
+     ATK_ROLE_LIST,
+     NSAccessibilityListRole,
+     ROLE_SYSTEM_LIST,
+     ROLE_SYSTEM_LIST)
+
+ROLE(LISTITEM,
+     "listitem",
+     ATK_ROLE_LIST_ITEM,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_LISTITEM,
+     ROLE_SYSTEM_LISTITEM)
+
+ROLE(OUTLINE,
+     "outline",
+     ATK_ROLE_TREE,
+     NSAccessibilityOutlineRole,
+     ROLE_SYSTEM_OUTLINE,
+     ROLE_SYSTEM_OUTLINE)
+
+ROLE(OUTLINEITEM,
+     "outlineitem",
+     ATK_ROLE_LIST_ITEM,
+     NSAccessibilityRowRole,  //XXX: use OutlineRow as subrole.
+     ROLE_SYSTEM_OUTLINEITEM,
+     ROLE_SYSTEM_OUTLINEITEM)
+
+ROLE(PAGETAB,
+     "pagetab",
+     ATK_ROLE_PAGE_TAB,
+     NSAccessibilityRadioButtonRole,
+     ROLE_SYSTEM_PAGETAB,
+     ROLE_SYSTEM_PAGETAB)
+
+ROLE(PROPERTYPAGE,
+     "propertypage",
+     ATK_ROLE_SCROLL_PANE,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_PROPERTYPAGE,
+     ROLE_SYSTEM_PROPERTYPAGE)
+
+ROLE(INDICATOR,
+     "indicator",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_INDICATOR,
+     ROLE_SYSTEM_INDICATOR)
+
+ROLE(GRAPHIC,
+     "graphic",
+     ATK_ROLE_IMAGE,
+     NSAccessibilityImageRole,
+     ROLE_SYSTEM_GRAPHIC,
+     ROLE_SYSTEM_GRAPHIC)
+
+ROLE(STATICTEXT,
+     "statictext",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityStaticTextRole,
+     ROLE_SYSTEM_STATICTEXT,
+     ROLE_SYSTEM_STATICTEXT)
+
+ROLE(TEXT_LEAF,
+     "text leaf",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityStaticTextRole,
+     ROLE_SYSTEM_TEXT,
+     ROLE_SYSTEM_TEXT)
+
+ROLE(PUSHBUTTON,
+     "pushbutton",
+     ATK_ROLE_PUSH_BUTTON,
+     NSAccessibilityButtonRole,
+     ROLE_SYSTEM_PUSHBUTTON,
+     ROLE_SYSTEM_PUSHBUTTON)
+
+ROLE(CHECKBUTTON,
+     "checkbutton",
+     ATK_ROLE_CHECK_BOX,
+     NSAccessibilityCheckBoxRole,
+     ROLE_SYSTEM_CHECKBUTTON,
+     ROLE_SYSTEM_CHECKBUTTON)
+
+ROLE(RADIOBUTTON,
+     "radiobutton",
+     ATK_ROLE_RADIO_BUTTON,
+     NSAccessibilityRadioButtonRole,
+     ROLE_SYSTEM_RADIOBUTTON,
+     ROLE_SYSTEM_RADIOBUTTON)
+
+ROLE(COMBOBOX,
+     "combobox",
+     ATK_ROLE_COMBO_BOX,
+     NSAccessibilityPopUpButtonRole,
+     ROLE_SYSTEM_COMBOBOX,
+     ROLE_SYSTEM_COMBOBOX)
+
+ROLE(DROPLIST,
+     "droplist",
+     ATK_ROLE_COMBO_BOX,
+     NSAccessibilityPopUpButtonRole,
+     ROLE_SYSTEM_DROPLIST,
+     ROLE_SYSTEM_DROPLIST)
+
+ROLE(PROGRESSBAR,
+     "progressbar",
+     ATK_ROLE_PROGRESS_BAR,
+     NSAccessibilityProgressIndicatorRole,
+     ROLE_SYSTEM_PROGRESSBAR,
+     ROLE_SYSTEM_PROGRESSBAR)
+
+ROLE(DIAL,
+     "dial",
+     ATK_ROLE_DIAL,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_DIAL,
+     ROLE_SYSTEM_DIAL)
+
+ROLE(HOTKEYFIELD,
+     "hotkeyfield",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_HOTKEYFIELD,
+     ROLE_SYSTEM_HOTKEYFIELD)
+
+ROLE(SLIDER,
+     "slider",
+     ATK_ROLE_SLIDER,
+     NSAccessibilitySliderRole,
+     ROLE_SYSTEM_SLIDER,
+     ROLE_SYSTEM_SLIDER)
+
+ROLE(SPINBUTTON,
+     "spinbutton",
+     ATK_ROLE_SPIN_BUTTON,
+     NSAccessibilityIncrementorRole,  //Subroles: Increment/Decrement.
+     ROLE_SYSTEM_SPINBUTTON,
+     ROLE_SYSTEM_SPINBUTTON)
+
+ROLE(DIAGRAM,
+     "diagram",
+     ATK_ROLE_IMAGE,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_DIAGRAM,
+     ROLE_SYSTEM_DIAGRAM)
+
+ROLE(ANIMATION,
+     "animation",
+     ATK_ROLE_ANIMATION,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_ANIMATION,
+     ROLE_SYSTEM_ANIMATION)
+
+ROLE(EQUATION,
+     "equation",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_EQUATION,
+     ROLE_SYSTEM_EQUATION)
+
+ROLE(BUTTONDROPDOWN,
+     "buttondropdown",
+     ATK_ROLE_PUSH_BUTTON,
+     NSAccessibilityPopUpButtonRole,
+     ROLE_SYSTEM_BUTTONDROPDOWN,
+     ROLE_SYSTEM_BUTTONDROPDOWN)
+
+ROLE(BUTTONMENU,
+     "buttonmenu",
+     ATK_ROLE_PUSH_BUTTON,
+     NSAccessibilityMenuButtonRole,
+     ROLE_SYSTEM_BUTTONMENU,
+     ROLE_SYSTEM_BUTTONMENU)
+
+ROLE(BUTTONDROPDOWNGRID,
+     "buttondropdowngrid",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_BUTTONDROPDOWNGRID,
+     ROLE_SYSTEM_BUTTONDROPDOWNGRID)
+
+ROLE(WHITESPACE,
+     "whitespace",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_WHITESPACE,
+     ROLE_SYSTEM_WHITESPACE)
+
+ROLE(PAGETABLIST,
+     "pagetablist",
+     ATK_ROLE_PAGE_TAB_LIST,
+     NSAccessibilityTabGroupRole,
+     ROLE_SYSTEM_PAGETABLIST,
+     ROLE_SYSTEM_PAGETABLIST)
+
+ROLE(CLOCK,
+     "clock",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,  //Unused on OS X
+     ROLE_SYSTEM_CLOCK,
+     ROLE_SYSTEM_CLOCK)
+
+ROLE(SPLITBUTTON,
+     "splitbutton",
+     ATK_ROLE_PUSH_BUTTON,
+     NSAccessibilityButtonRole,
+     ROLE_SYSTEM_SPLITBUTTON,
+     ROLE_SYSTEM_SPLITBUTTON)
+
+ROLE(IPADDRESS,
+     "ipaddress",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_IPADDRESS,
+     ROLE_SYSTEM_IPADDRESS)
+
+ROLE(ACCEL_LABEL,
+     "accel label",
+     ATK_ROLE_ACCEL_LABEL,
+     NSAccessibilityStaticTextRole,
+     ROLE_SYSTEM_STATICTEXT,
+     ROLE_SYSTEM_STATICTEXT)
+
+ROLE(ARROW,
+     "arrow",
+     ATK_ROLE_ARROW,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_INDICATOR,
+     ROLE_SYSTEM_INDICATOR)
+
+ROLE(CANVAS,
+     "canvas",
+     ATK_ROLE_CANVAS,
+     NSAccessibilityImageRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_CANVAS)
+
+ROLE(CHECK_MENU_ITEM,
+     "check menu item",
+     ATK_ROLE_CHECK_MENU_ITEM,
+     NSAccessibilityMenuItemRole,
+     ROLE_SYSTEM_MENUITEM,
+     IA2_ROLE_CHECK_MENU_ITEM)
+
+ROLE(COLOR_CHOOSER,
+     "color chooser",
+     ATK_ROLE_COLOR_CHOOSER,
+     NSAccessibilityColorWellRole,
+     ROLE_SYSTEM_DIALOG,
+     IA2_ROLE_COLOR_CHOOSER)
+
+ROLE(DATE_EDITOR,
+     "date editor",
+     ATK_ROLE_DATE_EDITOR,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_DATE_EDITOR)
+
+ROLE(DESKTOP_ICON,
+     "desktop icon",
+     ATK_ROLE_DESKTOP_ICON,
+     NSAccessibilityImageRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_DESKTOP_ICON)
+
+ROLE(DESKTOP_FRAME,
+     "desktop frame",
+     ATK_ROLE_DESKTOP_FRAME,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_DESKTOP_PANE)
+
+ROLE(DIRECTORY_PANE,
+     "directory pane",
+     ATK_ROLE_DIRECTORY_PANE,
+     NSAccessibilityBrowserRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_DIRECTORY_PANE)
+
+ROLE(FILE_CHOOSER,
+     "file chooser",
+     ATK_ROLE_FILE_CHOOSER,
+     NSAccessibilityUnknownRole,  //Unused on OS X
+     USE_ROLE_STRING,
+     IA2_ROLE_FILE_CHOOSER)
+
+ROLE(FONT_CHOOSER,
+     "font chooser",
+     ATK_ROLE_FONT_CHOOSER,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_FONT_CHOOSER)
+
+ROLE(CHROME_WINDOW,
+     "chrome window",
+     ATK_ROLE_FRAME,
+     NSAccessibilityUnknownRole,  //Unused on OS X
+     ROLE_SYSTEM_APPLICATION,
+     IA2_ROLE_FRAME)
+
+ROLE(GLASS_PANE,
+     "glass pane",
+     ATK_ROLE_GLASS_PANE,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_GLASS_PANE)
+
+ROLE(HTML_CONTAINER,
+     "html container",
+     ATK_ROLE_HTML_CONTAINER,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_UNKNOWN)
+
+ROLE(ICON,
+     "icon",
+     ATK_ROLE_ICON,
+     NSAccessibilityImageRole,
+     ROLE_SYSTEM_PUSHBUTTON,
+     IA2_ROLE_ICON)
+
+ROLE(LABEL,
+     "label",
+     ATK_ROLE_LABEL,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_STATICTEXT,
+     IA2_ROLE_LABEL)
+
+ROLE(LAYERED_PANE,
+     "layered pane",
+     ATK_ROLE_LAYERED_PANE,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_LAYERED_PANE)
+
+ROLE(OPTION_PANE,
+     "option pane",
+     ATK_ROLE_OPTION_PANE,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_OPTION_PANE)
+
+ROLE(PASSWORD_TEXT,
+     "password text",
+     ATK_ROLE_PASSWORD_TEXT,
+     NSAccessibilityTextFieldRole,
+     ROLE_SYSTEM_TEXT,
+     ROLE_SYSTEM_TEXT)
+
+ROLE(POPUP_MENU,
+     "popup menu",
+     ATK_ROLE_POPUP_MENU,
+     NSAccessibilityUnknownRole,  //Unused
+     ROLE_SYSTEM_MENUPOPUP,
+     ROLE_SYSTEM_MENUPOPUP)
+
+ROLE(RADIO_MENU_ITEM,
+     "radio menu item",
+     ATK_ROLE_RADIO_MENU_ITEM,
+     NSAccessibilityMenuItemRole,
+     ROLE_SYSTEM_MENUITEM,
+     IA2_ROLE_RADIO_MENU_ITEM)
+
+ROLE(ROOT_PANE,
+     "root pane",
+     ATK_ROLE_ROOT_PANE,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_ROOT_PANE)
+
+ROLE(SCROLL_PANE,
+     "scroll pane",
+     ATK_ROLE_SCROLL_PANE,
+     NSAccessibilityScrollAreaRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_SCROLL_PANE)
+
+ROLE(SPLIT_PANE,
+     "split pane",
+     ATK_ROLE_SPLIT_PANE,
+     NSAccessibilitySplitGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_SPLIT_PANE)
+
+ROLE(TABLE_COLUMN_HEADER,
+     "table column header",
+     ATK_ROLE_TABLE_COLUMN_HEADER,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_COLUMNHEADER,
+     ROLE_SYSTEM_COLUMNHEADER)
+
+ROLE(TABLE_ROW_HEADER,
+     "table row header",
+     ATK_ROLE_TABLE_ROW_HEADER,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_ROWHEADER,
+     ROLE_SYSTEM_ROWHEADER)
+
+ROLE(TEAR_OFF_MENU_ITEM,
+     "tear off menu item",
+     ATK_ROLE_TEAR_OFF_MENU_ITEM,
+     NSAccessibilityMenuItemRole,
+     ROLE_SYSTEM_MENUITEM,
+     IA2_ROLE_TEAR_OFF_MENU)
+
+ROLE(TERMINAL,
+     "terminal",
+     ATK_ROLE_TERMINAL,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_TERMINAL)
+
+ROLE(TEXT_CONTAINER,
+     "text container",
+     ATK_ROLE_TEXT,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_TEXT_FRAME)
+
+ROLE(TOGGLE_BUTTON,
+     "toggle button",
+     ATK_ROLE_TOGGLE_BUTTON,
+     NSAccessibilityButtonRole,
+     ROLE_SYSTEM_PUSHBUTTON,
+     IA2_ROLE_TOGGLE_BUTTON)
+
+ROLE(TREE_TABLE,
+     "tree table",
+     ATK_ROLE_TREE_TABLE,
+     NSAccessibilityTableRole,
+     ROLE_SYSTEM_OUTLINE,
+     ROLE_SYSTEM_OUTLINE)
+
+ROLE(VIEWPORT,
+     "viewport",
+     ATK_ROLE_VIEWPORT,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_PANE,
+     IA2_ROLE_VIEW_PORT)
+
+ROLE(HEADER,
+     "header",
+     ATK_ROLE_HEADER,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_HEADER)
+
+ROLE(FOOTER,
+     "footer",
+     ATK_ROLE_FOOTER,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_FOOTER)
+
+ROLE(PARAGRAPH,
+     "paragraph",
+     ATK_ROLE_PARAGRAPH,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_PARAGRAPH)
+
+ROLE(RULER,
+     "ruler",
+     ATK_ROLE_RULER,
+     @"AXRuler",  //10.4+ only, so we re-define the constant.
+     USE_ROLE_STRING,
+     IA2_ROLE_RULER)
+
+ROLE(AUTOCOMPLETE,
+     "autocomplete",
+     ATK_ROLE_AUTOCOMPLETE,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_COMBOBOX,
+     ROLE_SYSTEM_COMBOBOX)
+
+ROLE(EDITBAR,
+     "editbar",
+     ATK_ROLE_EDITBAR,
+     NSAccessibilityTextFieldRole,
+     ROLE_SYSTEM_TEXT,
+     IA2_ROLE_EDITBAR)
+
+ROLE(ENTRY,
+     "entry",
+     ATK_ROLE_ENTRY,
+     NSAccessibilityTextFieldRole,
+     ROLE_SYSTEM_TEXT,
+     ROLE_SYSTEM_TEXT)
+
+ROLE(CAPTION,
+     "caption",
+     ATK_ROLE_CAPTION,
+     NSAccessibilityStaticTextRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_CAPTION)
+
+ROLE(DOCUMENT_FRAME,
+     "document frame",
+     ATK_ROLE_DOCUMENT_FRAME,
+     NSAccessibilityScrollAreaRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_UNKNOWN)
+
+ROLE(HEADING,
+     "heading",
+     ATK_ROLE_HEADING,
+     @"AXHeading",
+     USE_ROLE_STRING,
+     IA2_ROLE_HEADING)
+
+ROLE(PAGE,
+     "page",
+     ATK_ROLE_PAGE,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_PAGE)
+
+ROLE(SECTION,
+     "section",
+     ATK_ROLE_SECTION,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_SECTION)
+
+ROLE(REDUNDANT_OBJECT,
+     "redundant object",
+     ATK_ROLE_REDUNDANT_OBJECT,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_REDUNDANT_OBJECT)
+
+ROLE(FORM,
+     "form",
+     ATK_ROLE_FORM,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_FORM)
+
+ROLE(IME,
+     "ime",
+     ATK_ROLE_INPUT_METHOD_WINDOW,
+     NSAccessibilityUnknownRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_INPUT_METHOD_WINDOW)
+
+ROLE(APP_ROOT,
+     "app root",
+     ATK_ROLE_APPLICATION,
+     NSAccessibilityUnknownRole,  //Unused on OS X
+     ROLE_SYSTEM_APPLICATION,
+     ROLE_SYSTEM_APPLICATION)
+
+ROLE(PARENT_MENUITEM,
+     "parent menuitem",
+     ATK_ROLE_MENU,
+     NSAccessibilityMenuItemRole,
+     ROLE_SYSTEM_MENUITEM,
+     ROLE_SYSTEM_MENUITEM)
+
+ROLE(CALENDAR,
+     "calendar",
+     ATK_ROLE_CALENDAR,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_CLIENT,
+     ROLE_SYSTEM_CLIENT)
+
+ROLE(COMBOBOX_LIST,
+     "combobox list",
+     ATK_ROLE_MENU,
+     NSAccessibilityMenuRole,
+     ROLE_SYSTEM_LIST,
+     ROLE_SYSTEM_LIST)
+
+ROLE(COMBOBOX_OPTION,
+     "combobox option",
+     ATK_ROLE_MENU_ITEM,
+     NSAccessibilityMenuItemRole,
+     ROLE_SYSTEM_LISTITEM,
+     ROLE_SYSTEM_LISTITEM)
+
+ROLE(IMAGE_MAP,
+     "image map",
+     ATK_ROLE_IMAGE,
+     NSAccessibilityImageRole,
+     ROLE_SYSTEM_GRAPHIC,
+     ROLE_SYSTEM_GRAPHIC)
+
+ROLE(OPTION,
+     "listbox option",
+     ATK_ROLE_LIST_ITEM,
+     NSAccessibilityRowRole,
+     ROLE_SYSTEM_LISTITEM,
+     ROLE_SYSTEM_LISTITEM)
+
+ROLE(RICH_OPTION,
+     "listbox rich option",
+     ATK_ROLE_LIST_ITEM,
+     NSAccessibilityRowRole,
+     ROLE_SYSTEM_LISTITEM,
+     ROLE_SYSTEM_LISTITEM)
+
+ROLE(LISTBOX,
+     "listbox",
+     ATK_ROLE_LIST,
+     NSAccessibilityListRole,
+     ROLE_SYSTEM_LIST,
+     ROLE_SYSTEM_LIST)
+
+ROLE(FLAT_EQUATION,
+     "flat equation",
+     ATK_ROLE_UNKNOWN,
+     NSAccessibilityUnknownRole,
+     ROLE_SYSTEM_EQUATION,
+     ROLE_SYSTEM_EQUATION)
+
+ROLE(GRID_CELL,
+     "gridcell",
+     ATK_ROLE_TABLE_CELL,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_CELL,
+     ROLE_SYSTEM_CELL)
+
+ROLE(EMBEDDED_OBJECT,
+     "embedded object",
+     ATK_ROLE_PANEL,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_EMBEDDED_OBJECT)
+
+ROLE(NOTE,
+     "note",
+     ATK_ROLE_SECTION,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_NOTE)
+
+ROLE(FIGURE,
+     "figure",
+     ATK_ROLE_PANEL,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_GROUPING,
+     ROLE_SYSTEM_GROUPING)
+
+ROLE(CHECK_RICH_OPTION,
+     "check rich option",
+     ATK_ROLE_CHECK_BOX,
+     NSAccessibilityCheckBoxRole,
+     ROLE_SYSTEM_CHECKBUTTON,
+     ROLE_SYSTEM_CHECKBUTTON)
+
+ROLE(DEFINITION_LIST,
+     "definitionlist",
+     ATK_ROLE_LIST,
+     NSAccessibilityListRole,
+     ROLE_SYSTEM_LIST,
+     ROLE_SYSTEM_LIST)
+
+ROLE(TERM,
+     "term",
+     ATK_ROLE_LIST_ITEM,
+     NSAccessibilityGroupRole,
+     ROLE_SYSTEM_LISTITEM,
+     ROLE_SYSTEM_LISTITEM)
+
+ROLE(DEFINITION,
+     "definition",
+     ATK_ROLE_PARAGRAPH,
+     NSAccessibilityGroupRole,
+     USE_ROLE_STRING,
+     IA2_ROLE_PARAGRAPH)
--- a/accessible/src/base/nsAccDocManager.cpp
+++ b/accessible/src/base/nsAccDocManager.cpp
@@ -33,19 +33,19 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsAccDocManager.h"
 
+#include "ApplicationAccessible.h"
 #include "nsAccessibilityService.h"
 #include "nsAccUtils.h"
-#include "nsApplicationAccessible.h"
 #include "nsARIAMap.h"
 #include "nsRootAccessibleWrap.h"
 #include "States.h"
 
 #include "nsCURILoader.h"
 #include "nsDocShellLoadTypes.h"
 #include "nsIChannel.h"
 #include "nsIContentViewer.h"
--- a/accessible/src/base/nsAccDocManager.h
+++ b/accessible/src/base/nsAccDocManager.h
@@ -39,16 +39,17 @@
 #define nsAccDocManager_h_
 
 #include "nsIDocument.h"
 #include "nsIDOMEventListener.h"
 #include "nsRefPtrHashtable.h"
 #include "nsIWebProgress.h"
 #include "nsIWebProgressListener.h"
 #include "nsWeakReference.h"
+#include "nsIPresShell.h"
 
 class nsAccessible;
 class nsDocAccessible;
 
 //#define DEBUG_ACCDOCMGR
 
 /**
  * Manage the document accessible life cycle.
@@ -65,16 +66,24 @@ public:
   NS_DECL_NSIDOMEVENTLISTENER
 
   /**
    * Return document accessible for the given DOM node.
    */
   nsDocAccessible *GetDocAccessible(nsIDocument *aDocument);
 
   /**
+   * Return document accessible for the given presshell.
+   */
+  nsDocAccessible* GetDocAccessible(const nsIPresShell* aPresShell)
+  {
+    return aPresShell ? GetDocAccessible(aPresShell->GetDocument()) : nsnull;
+  }
+
+  /**
    * Search through all document accessibles for an accessible with the given
    * unique id.
    */
   nsAccessible* FindAccessibleInCache(nsINode* aNode) const;
 
   /**
    * Return document accessible from the cache. Convenient method for testing.
    */
--- a/accessible/src/base/nsAccUtils.h
+++ b/accessible/src/base/nsAccUtils.h
@@ -133,44 +133,33 @@ public:
   static bool HasDefinedARIAToken(nsIContent *aContent, nsIAtom *aAtom);
 
   /**
    * Return atomic value of ARIA attribute of boolean or NMTOKEN type.
    */
   static nsIAtom* GetARIAToken(mozilla::dom::Element* aElement, nsIAtom* aAttr);
 
   /**
-   * Return document accessible for the given presshell.
-   */
-  static nsDocAccessible* GetDocAccessibleFor(const nsIPresShell* aPresShell)
-  {
-    return aPresShell ?
-      GetAccService()->GetDocAccessible(aPresShell->GetDocument()) : nsnull;
-  }
-
-  /**
    * Return document accessible for the given DOM node.
    */
   static nsDocAccessible *GetDocAccessibleFor(nsINode *aNode)
   {
     nsIPresShell *presShell = nsCoreUtils::GetPresShellFor(aNode);
-    return presShell ?
-      GetAccService()->GetDocAccessible(presShell->GetDocument()) : nsnull;
+    return GetAccService()->GetDocAccessible(presShell);
   }
 
   /**
    * Return document accessible for the given docshell.
    */
   static nsDocAccessible *GetDocAccessibleFor(nsIDocShellTreeItem *aContainer)
   {
     nsCOMPtr<nsIDocShell> docShell(do_QueryInterface(aContainer));
     nsCOMPtr<nsIPresShell> presShell;
     docShell->GetPresShell(getter_AddRefs(presShell));
-    return presShell ?
-      GetAccService()->GetDocAccessible(presShell->GetDocument()) : nsnull;
+    return GetAccService()->GetDocAccessible(presShell);
   }
 
   /**
     * Return ancestor in this document with the given role if it exists.
     *
     * @param  aDescendant  [in] descendant to start search with
     * @param  aRole        [in] role to find matching ancestor for
     * @return               the ancestor accessible with the given role, or
--- a/accessible/src/base/nsAccessNode.cpp
+++ b/accessible/src/base/nsAccessNode.cpp
@@ -33,19 +33,19 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsAccessNode.h"
 
+#include "ApplicationAccessibleWrap.h"
 #include "nsAccessibilityService.h"
 #include "nsAccUtils.h"
-#include "nsApplicationAccessibleWrap.h"
 #include "nsCoreUtils.h"
 #include "nsRootAccessible.h"
 
 #include "nsIDocShell.h"
 #include "nsIDocShellTreeItem.h"
 #include "nsIDOMWindow.h"
 #include "nsIFrame.h"
 #include "nsIInterfaceRequestorUtils.h"
@@ -62,17 +62,17 @@
 /* For documentation of the accessibility architecture, 
  * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
  */
 
 nsIStringBundle *nsAccessNode::gStringBundle = 0;
 
 bool nsAccessNode::gIsFormFillEnabled = false;
 
-nsApplicationAccessible *nsAccessNode::gApplicationAccessible = n