Merge from mozilla-central.
authorDavid Anderson <danderson@mozilla.com>
Mon, 30 Apr 2012 12:53:32 -0700
changeset 112999 44911569fb04d891073656cac1f794495723f573
parent 112998 fb7572ed4bc6832b84b14670c490b61c9db2d278 (current diff)
parent 97230 3812e7c1b642701e10465b554a51b5c581c1d257 (diff)
child 113000 2427c5815cfa1686f367b795fce5917d20f975d0
push id239
push userakeybl@mozilla.com
push dateThu, 03 Jan 2013 21:54:43 +0000
treeherdermozilla-release@3a7b66445659 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone15.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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 = nsnull;
+ApplicationAccessible* nsAccessNode::gApplicationAccessible = nsnull;
 
 /*
  * Class nsAccessNode
  */
  
 ////////////////////////////////////////////////////////////////////////////////
 // nsAccessible. nsISupports
 
@@ -125,28 +125,26 @@ nsAccessNode::Init()
 
 void
 nsAccessNode::Shutdown()
 {
   mContent = nsnull;
   mDoc = nsnull;
 }
 
-nsApplicationAccessible*
+ApplicationAccessible*
 nsAccessNode::GetApplicationAccessible()
 {
   NS_ASSERTION(!nsAccessibilityService::IsShutdown(),
                "Accessibility wasn't initialized!");
 
   if (!gApplicationAccessible) {
-    nsApplicationAccessibleWrap::PreCreate();
+    ApplicationAccessibleWrap::PreCreate();
 
-    gApplicationAccessible = new nsApplicationAccessibleWrap();
-    if (!gApplicationAccessible)
-      return nsnull;
+    gApplicationAccessible = new ApplicationAccessibleWrap();
 
     // Addref on create. Will Release in ShutdownXPAccessibility()
     NS_ADDREF(gApplicationAccessible);
 
     nsresult rv = gApplicationAccessible->Init();
     if (NS_FAILED(rv)) {
       gApplicationAccessible->Shutdown();
       NS_RELEASE(gApplicationAccessible);
@@ -195,17 +193,17 @@ void nsAccessNode::ShutdownXPAccessibili
   // Called by nsAccessibilityService::Shutdown()
   // which happens when xpcom is shutting down
   // at exit of program
 
   NS_IF_RELEASE(gStringBundle);
 
   // Release gApplicationAccessible after everything else is shutdown
   // so we don't accidently create it again while tearing down root accessibles
-  nsApplicationAccessibleWrap::Unload();
+  ApplicationAccessibleWrap::Unload();
   if (gApplicationAccessible) {
     gApplicationAccessible->Shutdown();
     NS_RELEASE(gApplicationAccessible);
   }
 
   NotifyA11yInitOrShutdown(false);
 }
 
--- a/accessible/src/base/nsAccessNode.h
+++ b/accessible/src/base/nsAccessNode.h
@@ -48,18 +48,18 @@
 #include "a11yGeneric.h"
 
 #include "nsIContent.h"
 #include "nsIDOMNode.h"
 #include "nsINameSpaceManager.h"
 #include "nsIStringBundle.h"
 #include "nsWeakReference.h"
 
+class ApplicationAccessible;
 class nsAccessNode;
-class nsApplicationAccessible;
 class nsDocAccessible;
 class nsIAccessibleDocument;
 class nsRootAccessible;
 
 class nsIPresShell;
 class nsPresContext;
 class nsIFrame;
 class nsIDocShellTreeItem;
@@ -78,17 +78,17 @@ public:
     NS_DECL_CYCLE_COLLECTION_CLASS(nsAccessNode)
 
     static void InitXPAccessibility();
     static void ShutdownXPAccessibility();
 
   /**
    * Return an application accessible.
    */
-  static nsApplicationAccessible* GetApplicationAccessible();
+  static ApplicationAccessible* GetApplicationAccessible();
 
   /**
    * Return the document accessible for this access node.
    */
   nsDocAccessible* Document() const { return mDoc; }
 
   /**
    * Return the root document accessible for this accessnode.
@@ -169,13 +169,13 @@ protected:
 
   static bool gIsFormFillEnabled;
 
 private:
   nsAccessNode() MOZ_DELETE;
   nsAccessNode(const nsAccessNode&) MOZ_DELETE;
   nsAccessNode& operator =(const nsAccessNode&) MOZ_DELETE;
   
-  static nsApplicationAccessible *gApplicationAccessible;
+  static ApplicationAccessible* gApplicationAccessible;
 };
 
 #endif
 
--- a/accessible/src/base/nsAccessibilityService.cpp
+++ b/accessible/src/base/nsAccessibilityService.cpp
@@ -35,25 +35,25 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */