Merge m-i to m-c
authorNigel Babu <nigelbabu@gmail.com>
Thu, 07 Aug 2014 08:47:18 +0530
changeset 198265 afcb3af79d09513b2772c629c23a0d9f7b7437b4
parent 198264 8c27495ddfdb169d7f365b735e5c223e5bad9aba (current diff)
parent 198191 3433804a42b16487c62d73a2e6058bb31f777574 (diff)
child 198266 1854d22e1d066e867b4caeb421374c329747542f
child 198310 797c49aa311c3b3c213fb77845c780cbfc994d0a
child 198375 48c9243ab15a240fe1f67f59a3103a1c7f93e43a
push id47338
push usernigelbabu@gmail.com
push dateThu, 07 Aug 2014 04:00:10 +0000
treeherdermozilla-inbound@1854d22e1d06 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone34.0a1
first release with
nightly linux32
afcb3af79d09 / 34.0a1 / 20140807030202 / files
nightly linux64
afcb3af79d09 / 34.0a1 / 20140807030202 / files
nightly mac
afcb3af79d09 / 34.0a1 / 20140807030202 / files
nightly win32
afcb3af79d09 / 34.0a1 / 20140807030202 / files
nightly win64
afcb3af79d09 / 34.0a1 / 20140807030202 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge m-i to m-c
b2g/branding/official/locales/Makefile.in
b2g/branding/unofficial/locales/Makefile.in
browser/branding/aurora/locales/Makefile.in
browser/branding/nightly/locales/Makefile.in
browser/branding/official/locales/Makefile.in
browser/branding/unofficial/locales/Makefile.in
config/nspr/Makefile.in
config/nspr/moz.build
configure.in
content/base/test/csp/file_csp_report.sjs
content/svg/content/moz.build
content/svg/content/src/DOMSVGAnimatedLengthList.cpp
content/svg/content/src/DOMSVGAnimatedLengthList.h
content/svg/content/src/DOMSVGAnimatedNumberList.cpp
content/svg/content/src/DOMSVGAnimatedNumberList.h
content/svg/content/src/DOMSVGLength.cpp
content/svg/content/src/DOMSVGLength.h
content/svg/content/src/DOMSVGLengthList.cpp
content/svg/content/src/DOMSVGLengthList.h
content/svg/content/src/DOMSVGNumber.cpp
content/svg/content/src/DOMSVGNumber.h
content/svg/content/src/DOMSVGNumberList.cpp
content/svg/content/src/DOMSVGNumberList.h
content/svg/content/src/DOMSVGPathSeg.cpp
content/svg/content/src/DOMSVGPathSeg.h
content/svg/content/src/DOMSVGPathSegList.cpp
content/svg/content/src/DOMSVGPathSegList.h
content/svg/content/src/DOMSVGPoint.cpp
content/svg/content/src/DOMSVGPoint.h
content/svg/content/src/DOMSVGPointList.cpp
content/svg/content/src/DOMSVGPointList.h
content/svg/content/src/DOMSVGStringList.cpp
content/svg/content/src/DOMSVGStringList.h
content/svg/content/src/DOMSVGTransformList.cpp
content/svg/content/src/DOMSVGTransformList.h
content/svg/content/src/SVGAElement.cpp
content/svg/content/src/SVGAElement.h
content/svg/content/src/SVGAltGlyphElement.cpp
content/svg/content/src/SVGAltGlyphElement.h
content/svg/content/src/SVGAngle.cpp
content/svg/content/src/SVGAngle.h
content/svg/content/src/SVGAnimateElement.cpp
content/svg/content/src/SVGAnimateElement.h
content/svg/content/src/SVGAnimateMotionElement.cpp
content/svg/content/src/SVGAnimateMotionElement.h
content/svg/content/src/SVGAnimateTransformElement.cpp
content/svg/content/src/SVGAnimateTransformElement.h
content/svg/content/src/SVGAnimatedAngle.cpp
content/svg/content/src/SVGAnimatedAngle.h
content/svg/content/src/SVGAnimatedBoolean.cpp
content/svg/content/src/SVGAnimatedBoolean.h
content/svg/content/src/SVGAnimatedEnumeration.cpp
content/svg/content/src/SVGAnimatedEnumeration.h
content/svg/content/src/SVGAnimatedInteger.cpp
content/svg/content/src/SVGAnimatedInteger.h
content/svg/content/src/SVGAnimatedLength.cpp
content/svg/content/src/SVGAnimatedLength.h
content/svg/content/src/SVGAnimatedLengthList.cpp
content/svg/content/src/SVGAnimatedLengthList.h
content/svg/content/src/SVGAnimatedNumber.cpp
content/svg/content/src/SVGAnimatedNumber.h
content/svg/content/src/SVGAnimatedNumberList.cpp
content/svg/content/src/SVGAnimatedNumberList.h
content/svg/content/src/SVGAnimatedPathSegList.cpp
content/svg/content/src/SVGAnimatedPathSegList.h
content/svg/content/src/SVGAnimatedPointList.cpp
content/svg/content/src/SVGAnimatedPointList.h
content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
content/svg/content/src/SVGAnimatedPreserveAspectRatio.h
content/svg/content/src/SVGAnimatedRect.cpp
content/svg/content/src/SVGAnimatedRect.h
content/svg/content/src/SVGAnimatedString.cpp
content/svg/content/src/SVGAnimatedString.h
content/svg/content/src/SVGAnimatedTransformList.cpp
content/svg/content/src/SVGAnimatedTransformList.h
content/svg/content/src/SVGAnimationElement.cpp
content/svg/content/src/SVGAnimationElement.h
content/svg/content/src/SVGAttrValueWrapper.cpp
content/svg/content/src/SVGAttrValueWrapper.h
content/svg/content/src/SVGCircleElement.cpp
content/svg/content/src/SVGCircleElement.h
content/svg/content/src/SVGClipPathElement.cpp
content/svg/content/src/SVGClipPathElement.h
content/svg/content/src/SVGComponentTransferFunctionElement.h
content/svg/content/src/SVGContentUtils.cpp
content/svg/content/src/SVGContentUtils.h
content/svg/content/src/SVGDefsElement.cpp
content/svg/content/src/SVGDefsElement.h
content/svg/content/src/SVGDescElement.cpp
content/svg/content/src/SVGDescElement.h
content/svg/content/src/SVGElementFactory.cpp
content/svg/content/src/SVGElementFactory.h
content/svg/content/src/SVGEllipseElement.cpp
content/svg/content/src/SVGEllipseElement.h
content/svg/content/src/SVGFEBlendElement.cpp
content/svg/content/src/SVGFEBlendElement.h
content/svg/content/src/SVGFEColorMatrixElement.cpp
content/svg/content/src/SVGFEColorMatrixElement.h
content/svg/content/src/SVGFEComponentTransferElement.cpp
content/svg/content/src/SVGFEComponentTransferElement.h
content/svg/content/src/SVGFECompositeElement.cpp
content/svg/content/src/SVGFECompositeElement.h
content/svg/content/src/SVGFEConvolveMatrixElement.cpp
content/svg/content/src/SVGFEConvolveMatrixElement.h
content/svg/content/src/SVGFEDiffuseLightingElement.cpp
content/svg/content/src/SVGFEDiffuseLightingElement.h
content/svg/content/src/SVGFEDisplacementMapElement.cpp
content/svg/content/src/SVGFEDisplacementMapElement.h
content/svg/content/src/SVGFEDistantLightElement.cpp
content/svg/content/src/SVGFEDistantLightElement.h
content/svg/content/src/SVGFEDropShadowElement.cpp
content/svg/content/src/SVGFEDropShadowElement.h
content/svg/content/src/SVGFEFloodElement.cpp
content/svg/content/src/SVGFEFloodElement.h
content/svg/content/src/SVGFEGaussianBlurElement.cpp
content/svg/content/src/SVGFEGaussianBlurElement.h
content/svg/content/src/SVGFEImageElement.cpp
content/svg/content/src/SVGFEImageElement.h
content/svg/content/src/SVGFEMergeElement.cpp
content/svg/content/src/SVGFEMergeElement.h
content/svg/content/src/SVGFEMergeNodeElement.cpp
content/svg/content/src/SVGFEMergeNodeElement.h
content/svg/content/src/SVGFEMorphologyElement.cpp
content/svg/content/src/SVGFEMorphologyElement.h
content/svg/content/src/SVGFEOffsetElement.cpp
content/svg/content/src/SVGFEOffsetElement.h
content/svg/content/src/SVGFEPointLightElement.cpp
content/svg/content/src/SVGFEPointLightElement.h
content/svg/content/src/SVGFESpecularLightingElement.cpp
content/svg/content/src/SVGFESpecularLightingElement.h
content/svg/content/src/SVGFESpotLightElement.cpp
content/svg/content/src/SVGFESpotLightElement.h
content/svg/content/src/SVGFETileElement.cpp
content/svg/content/src/SVGFETileElement.h
content/svg/content/src/SVGFETurbulenceElement.cpp
content/svg/content/src/SVGFETurbulenceElement.h
content/svg/content/src/SVGFilterElement.cpp
content/svg/content/src/SVGFilterElement.h
content/svg/content/src/SVGForeignObjectElement.cpp
content/svg/content/src/SVGForeignObjectElement.h
content/svg/content/src/SVGFragmentIdentifier.cpp
content/svg/content/src/SVGFragmentIdentifier.h
content/svg/content/src/SVGGElement.cpp
content/svg/content/src/SVGGElement.h
content/svg/content/src/SVGGradientElement.cpp
content/svg/content/src/SVGGradientElement.h
content/svg/content/src/SVGGraphicsElement.cpp
content/svg/content/src/SVGGraphicsElement.h
content/svg/content/src/SVGIFrameElement.cpp
content/svg/content/src/SVGIFrameElement.h
content/svg/content/src/SVGIRect.h
content/svg/content/src/SVGImageElement.cpp
content/svg/content/src/SVGImageElement.h
content/svg/content/src/SVGIntegerPairSMILType.cpp
content/svg/content/src/SVGIntegerPairSMILType.h
content/svg/content/src/SVGLength.cpp
content/svg/content/src/SVGLength.h
content/svg/content/src/SVGLengthList.cpp
content/svg/content/src/SVGLengthList.h
content/svg/content/src/SVGLengthListSMILType.cpp
content/svg/content/src/SVGLengthListSMILType.h
content/svg/content/src/SVGLineElement.cpp
content/svg/content/src/SVGLineElement.h
content/svg/content/src/SVGMPathElement.cpp
content/svg/content/src/SVGMPathElement.h
content/svg/content/src/SVGMarkerElement.cpp
content/svg/content/src/SVGMarkerElement.h
content/svg/content/src/SVGMaskElement.cpp
content/svg/content/src/SVGMaskElement.h
content/svg/content/src/SVGMatrix.cpp
content/svg/content/src/SVGMatrix.h
content/svg/content/src/SVGMetadataElement.cpp
content/svg/content/src/SVGMetadataElement.h
content/svg/content/src/SVGMotionSMILAnimationFunction.cpp
content/svg/content/src/SVGMotionSMILAnimationFunction.h
content/svg/content/src/SVGMotionSMILAttr.cpp
content/svg/content/src/SVGMotionSMILAttr.h
content/svg/content/src/SVGMotionSMILPathUtils.cpp
content/svg/content/src/SVGMotionSMILPathUtils.h
content/svg/content/src/SVGMotionSMILType.cpp
content/svg/content/src/SVGMotionSMILType.h
content/svg/content/src/SVGNumberList.cpp
content/svg/content/src/SVGNumberList.h
content/svg/content/src/SVGNumberListSMILType.cpp
content/svg/content/src/SVGNumberListSMILType.h
content/svg/content/src/SVGNumberPairSMILType.cpp
content/svg/content/src/SVGNumberPairSMILType.h
content/svg/content/src/SVGOrientSMILType.cpp
content/svg/content/src/SVGOrientSMILType.h
content/svg/content/src/SVGPathData.cpp
content/svg/content/src/SVGPathData.h
content/svg/content/src/SVGPathElement.cpp
content/svg/content/src/SVGPathElement.h
content/svg/content/src/SVGPathSegListSMILType.cpp
content/svg/content/src/SVGPathSegListSMILType.h
content/svg/content/src/SVGPathSegUtils.cpp
content/svg/content/src/SVGPathSegUtils.h
content/svg/content/src/SVGPatternElement.cpp
content/svg/content/src/SVGPatternElement.h
content/svg/content/src/SVGPoint.h
content/svg/content/src/SVGPointList.cpp
content/svg/content/src/SVGPointList.h
content/svg/content/src/SVGPointListSMILType.cpp
content/svg/content/src/SVGPointListSMILType.h
content/svg/content/src/SVGPolygonElement.cpp
content/svg/content/src/SVGPolygonElement.h
content/svg/content/src/SVGPolylineElement.cpp
content/svg/content/src/SVGPolylineElement.h
content/svg/content/src/SVGPreserveAspectRatio.cpp
content/svg/content/src/SVGPreserveAspectRatio.h
content/svg/content/src/SVGRect.cpp
content/svg/content/src/SVGRect.h
content/svg/content/src/SVGRectElement.cpp
content/svg/content/src/SVGRectElement.h
content/svg/content/src/SVGSVGElement.cpp
content/svg/content/src/SVGSVGElement.h
content/svg/content/src/SVGScriptElement.cpp
content/svg/content/src/SVGScriptElement.h
content/svg/content/src/SVGSetElement.cpp
content/svg/content/src/SVGSetElement.h
content/svg/content/src/SVGStopElement.cpp
content/svg/content/src/SVGStopElement.h
content/svg/content/src/SVGStringList.cpp
content/svg/content/src/SVGStringList.h
content/svg/content/src/SVGStyleElement.cpp
content/svg/content/src/SVGStyleElement.h
content/svg/content/src/SVGSwitchElement.cpp
content/svg/content/src/SVGSwitchElement.h
content/svg/content/src/SVGSymbolElement.cpp
content/svg/content/src/SVGSymbolElement.h
content/svg/content/src/SVGTSpanElement.cpp
content/svg/content/src/SVGTSpanElement.h
content/svg/content/src/SVGTagList.h
content/svg/content/src/SVGTests.cpp
content/svg/content/src/SVGTests.h
content/svg/content/src/SVGTextContentElement.cpp
content/svg/content/src/SVGTextContentElement.h
content/svg/content/src/SVGTextElement.cpp
content/svg/content/src/SVGTextElement.h
content/svg/content/src/SVGTextPathElement.cpp
content/svg/content/src/SVGTextPathElement.h
content/svg/content/src/SVGTextPositioningElement.cpp
content/svg/content/src/SVGTextPositioningElement.h
content/svg/content/src/SVGTitleElement.cpp
content/svg/content/src/SVGTitleElement.h
content/svg/content/src/SVGTransform.cpp
content/svg/content/src/SVGTransform.h
content/svg/content/src/SVGTransformList.cpp
content/svg/content/src/SVGTransformList.h
content/svg/content/src/SVGTransformListParser.cpp
content/svg/content/src/SVGTransformListParser.h
content/svg/content/src/SVGTransformListSMILType.cpp
content/svg/content/src/SVGTransformListSMILType.h
content/svg/content/src/SVGTransformableElement.cpp
content/svg/content/src/SVGTransformableElement.h
content/svg/content/src/SVGUseElement.cpp
content/svg/content/src/SVGUseElement.h
content/svg/content/src/SVGViewBoxSMILType.cpp
content/svg/content/src/SVGViewBoxSMILType.h
content/svg/content/src/SVGViewElement.cpp
content/svg/content/src/SVGViewElement.h
content/svg/content/src/SVGZoomEvent.cpp
content/svg/content/src/SVGZoomEvent.h
content/svg/content/src/crashtests/307322-1.svg
content/svg/content/src/crashtests/327705-1.svg
content/svg/content/src/crashtests/336994-1.html
content/svg/content/src/crashtests/344888-1.svg
content/svg/content/src/crashtests/345445-1.svg
content/svg/content/src/crashtests/360836-1.svg
content/svg/content/src/crashtests/367357-1.xhtml
content/svg/content/src/crashtests/369051-1.svg
content/svg/content/src/crashtests/369249-1.svg
content/svg/content/src/crashtests/369291-1.svg
content/svg/content/src/crashtests/369291-2.svg
content/svg/content/src/crashtests/369568-1.svg
content/svg/content/src/crashtests/372046-1.svg
content/svg/content/src/crashtests/372046-2.svg
content/svg/content/src/crashtests/374882-1.svg
content/svg/content/src/crashtests/380101-1.svg
content/svg/content/src/crashtests/381777-1.svg
content/svg/content/src/crashtests/383685-1.svg
content/svg/content/src/crashtests/385096.html
content/svg/content/src/crashtests/385554-1.html
content/svg/content/src/crashtests/385554-2.xul
content/svg/content/src/crashtests/388712-1.svg
content/svg/content/src/crashtests/395616-1.html
content/svg/content/src/crashtests/396618-1.html
content/svg/content/src/crashtests/397017-1.html
content/svg/content/src/crashtests/397551-1.svg
content/svg/content/src/crashtests/397704-1.svg
content/svg/content/src/crashtests/398926-both-different.svg
content/svg/content/src/crashtests/398926-both-same.svg
content/svg/content/src/crashtests/398926-fill.svg
content/svg/content/src/crashtests/398926-stroke.svg
content/svg/content/src/crashtests/405639-1.svg
content/svg/content/src/crashtests/406361-1.html
content/svg/content/src/crashtests/409811-1.html
content/svg/content/src/crashtests/410659-1.svg
content/svg/content/src/crashtests/410659-2.svg
content/svg/content/src/crashtests/410659-3.svg
content/svg/content/src/crashtests/412104-1.svg
content/svg/content/src/crashtests/413174-1.svg
content/svg/content/src/crashtests/414188-1.svg
content/svg/content/src/crashtests/427325-1.svg
content/svg/content/src/crashtests/428228-1.svg
content/svg/content/src/crashtests/428841-1.svg
content/svg/content/src/crashtests/435209-1.svg
content/svg/content/src/crashtests/436418-mpathRoot-1.svg
content/svg/content/src/crashtests/448244-1.svg
content/svg/content/src/crashtests/466576-1.xhtml
content/svg/content/src/crashtests/499879-1.svg
content/svg/content/src/crashtests/535691-1.svg
content/svg/content/src/crashtests/539167-1.svg
content/svg/content/src/crashtests/573316-1.svg
content/svg/content/src/crashtests/579356-1.svg
content/svg/content/src/crashtests/579356-2.svg
content/svg/content/src/crashtests/595608-1.svg
content/svg/content/src/crashtests/601251-1.html
content/svg/content/src/crashtests/601406-1.svg
content/svg/content/src/crashtests/603145-1.svg
content/svg/content/src/crashtests/613899-1.svg
content/svg/content/src/crashtests/613899-2.svg
content/svg/content/src/crashtests/719779-1.svg
content/svg/content/src/crashtests/723441-1.html
content/svg/content/src/crashtests/723441-resource.svg
content/svg/content/src/crashtests/751515-1.svg
content/svg/content/src/crashtests/761507-1.svg
content/svg/content/src/crashtests/831561.html
content/svg/content/src/crashtests/837450-1.svg
content/svg/content/src/crashtests/842463-1.html
content/svg/content/src/crashtests/847138-1.svg
content/svg/content/src/crashtests/864509.svg
content/svg/content/src/crashtests/880544-1.svg
content/svg/content/src/crashtests/880544-2.svg
content/svg/content/src/crashtests/880544-3.svg
content/svg/content/src/crashtests/880544-4.svg
content/svg/content/src/crashtests/880544-5.svg
content/svg/content/src/crashtests/898915-1.svg
content/svg/content/src/crashtests/crashtests.list
content/svg/content/src/crashtests/zero-size-image.svg
content/svg/content/src/moz.build
content/svg/content/src/nsISVGPoint.cpp
content/svg/content/src/nsISVGPoint.h
content/svg/content/src/nsSVGAngle.cpp
content/svg/content/src/nsSVGAngle.h
content/svg/content/src/nsSVGAnimatedTransformList.cpp
content/svg/content/src/nsSVGAnimatedTransformList.h
content/svg/content/src/nsSVGAttrTearoffTable.h
content/svg/content/src/nsSVGBoolean.cpp
content/svg/content/src/nsSVGBoolean.h
content/svg/content/src/nsSVGClass.cpp
content/svg/content/src/nsSVGClass.h
content/svg/content/src/nsSVGDataParser.cpp
content/svg/content/src/nsSVGDataParser.h
content/svg/content/src/nsSVGElement.cpp
content/svg/content/src/nsSVGElement.h
content/svg/content/src/nsSVGEnum.cpp
content/svg/content/src/nsSVGEnum.h
content/svg/content/src/nsSVGFeatures.cpp
content/svg/content/src/nsSVGFeatures.h
content/svg/content/src/nsSVGFeaturesList.h
content/svg/content/src/nsSVGFilters.cpp
content/svg/content/src/nsSVGFilters.h
content/svg/content/src/nsSVGInteger.cpp
content/svg/content/src/nsSVGInteger.h
content/svg/content/src/nsSVGIntegerPair.cpp
content/svg/content/src/nsSVGIntegerPair.h
content/svg/content/src/nsSVGLength2.cpp
content/svg/content/src/nsSVGLength2.h
content/svg/content/src/nsSVGNumber2.cpp
content/svg/content/src/nsSVGNumber2.h
content/svg/content/src/nsSVGNumberPair.cpp
content/svg/content/src/nsSVGNumberPair.h
content/svg/content/src/nsSVGPathDataParser.cpp
content/svg/content/src/nsSVGPathDataParser.h
content/svg/content/src/nsSVGPathGeometryElement.cpp
content/svg/content/src/nsSVGPathGeometryElement.h
content/svg/content/src/nsSVGPolyElement.cpp
content/svg/content/src/nsSVGPolyElement.h
content/svg/content/src/nsSVGString.cpp
content/svg/content/src/nsSVGString.h
content/svg/content/src/nsSVGTransform.cpp
content/svg/content/src/nsSVGTransform.h
content/svg/content/src/nsSVGViewBox.cpp
content/svg/content/src/nsSVGViewBox.h
content/svg/content/test/MutationEventChecker.js
content/svg/content/test/a_href_destination.svg
content/svg/content/test/a_href_helper_01.svg
content/svg/content/test/a_href_helper_02_03.svg
content/svg/content/test/a_href_helper_04.svg
content/svg/content/test/animated-svg-image-helper.html
content/svg/content/test/animated-svg-image-helper.svg
content/svg/content/test/bbox-helper.svg
content/svg/content/test/bounds-helper.svg
content/svg/content/test/dataTypes-helper.svg
content/svg/content/test/fragments-helper.svg
content/svg/content/test/getBBox-method-helper.svg
content/svg/content/test/getCTM-helper.svg
content/svg/content/test/getSubStringLength-helper.svg
content/svg/content/test/matrixUtils.js
content/svg/content/test/mochitest.ini
content/svg/content/test/pointer-events.js
content/svg/content/test/scientific-helper.svg
content/svg/content/test/selectSubString-helper.svg
content/svg/content/test/switch-helper.svg
content/svg/content/test/test_SVGLengthList-2.xhtml
content/svg/content/test/test_SVGLengthList.xhtml
content/svg/content/test/test_SVGMatrix.xhtml
content/svg/content/test/test_SVGNumberList.xhtml
content/svg/content/test/test_SVGPathSegList.xhtml
content/svg/content/test/test_SVGPointList.xhtml
content/svg/content/test/test_SVGStringList.xhtml
content/svg/content/test/test_SVGStyleElement.xhtml
content/svg/content/test/test_SVGTransformList.xhtml
content/svg/content/test/test_SVGTransformListAddition.xhtml
content/svg/content/test/test_SVGUnitTypes.html
content/svg/content/test/test_SVG_namespace_ids.html
content/svg/content/test/test_SVGxxxList.xhtml
content/svg/content/test/test_SVGxxxListIndexing.xhtml
content/svg/content/test/test_a_href_01.xhtml
content/svg/content/test/test_a_href_02.xhtml
content/svg/content/test/test_animLengthObjectIdentity.xhtml
content/svg/content/test/test_animLengthReadonly.xhtml
content/svg/content/test/test_animLengthUnits.xhtml
content/svg/content/test/test_bbox-with-invalid-viewBox.xhtml
content/svg/content/test/test_bbox.xhtml
content/svg/content/test/test_bounds.html
content/svg/content/test/test_bug872812.html
content/svg/content/test/test_dataTypes.html
content/svg/content/test/test_dataTypesModEvents.html
content/svg/content/test/test_fragments.html
content/svg/content/test/test_getBBox-method.html
content/svg/content/test/test_getCTM.html
content/svg/content/test/test_getElementById.xhtml
content/svg/content/test/test_getSubStringLength.xhtml
content/svg/content/test/test_hasFeature.xhtml
content/svg/content/test/test_lang.xhtml
content/svg/content/test/test_length.xhtml
content/svg/content/test/test_lengthParsing.html
content/svg/content/test/test_non-scaling-stroke.html
content/svg/content/test/test_nonAnimStrings.xhtml
content/svg/content/test/test_onerror.xhtml
content/svg/content/test/test_pathAnimInterpolation.xhtml
content/svg/content/test/test_pathLength.html
content/svg/content/test/test_pathSeg.xhtml
content/svg/content/test/test_pointAtLength.xhtml
content/svg/content/test/test_pointer-events-1a.xhtml
content/svg/content/test/test_pointer-events-1b.xhtml
content/svg/content/test/test_pointer-events-2.xhtml
content/svg/content/test/test_pointer-events-3.xhtml
content/svg/content/test/test_pointer-events-4.xhtml
content/svg/content/test/test_pointer-events-5.xhtml
content/svg/content/test/test_pointer-events-6.xhtml
content/svg/content/test/test_scientific.html
content/svg/content/test/test_selectSubString.xhtml
content/svg/content/test/test_stroke-linecap-hit-testing.xhtml
content/svg/content/test/test_switch.xhtml
content/svg/content/test/test_text.html
content/svg/content/test/test_text_2.html
content/svg/content/test/test_text_dirty.html
content/svg/content/test/test_text_lengthAdjust.html
content/svg/content/test/test_text_scaled.html
content/svg/content/test/test_text_selection.html
content/svg/content/test/test_text_update.html
content/svg/content/test/test_transform.xhtml
content/svg/content/test/test_transformParsing.html
content/svg/content/test/test_valueAsString.xhtml
content/svg/content/test/test_valueLeaks.xhtml
content/svg/content/test/test_viewport.html
content/svg/content/test/test_zoom.xhtml
content/svg/content/test/text-helper-scaled.svg
content/svg/content/test/text-helper-selection.svg
content/svg/content/test/text-helper.svg
content/svg/content/test/viewport-helper.svg
content/svg/content/test/zoom-helper.svg
content/svg/document/src/SVGDocument.cpp
content/svg/document/src/SVGDocument.h
content/svg/document/src/moz.build
content/svg/moz.build
content/xul/content/crashtests/107518-1.xml
content/xul/content/crashtests/252448-1.xul
content/xul/content/crashtests/253479-1.xul
content/xul/content/crashtests/253479-2.xul
content/xul/content/crashtests/326644-1-inner.xul
content/xul/content/crashtests/326644-1.html
content/xul/content/crashtests/326644-2-inner.xul
content/xul/content/crashtests/326644-2.html
content/xul/content/crashtests/326864-1.xul
content/xul/content/crashtests/326875-1.xul
content/xul/content/crashtests/326881-1.xul
content/xul/content/crashtests/329982-1.xhtml
content/xul/content/crashtests/336096-1.xhtml
content/xul/content/crashtests/354611-1.html
content/xul/content/crashtests/360078-1.xhtml
content/xul/content/crashtests/360078-1xbl.xml
content/xul/content/crashtests/363791-1.xul
content/xul/content/crashtests/384740-1.xul
content/xul/content/crashtests/384877-1-inner.xul
content/xul/content/crashtests/384877-1.html
content/xul/content/crashtests/386947-1.xul
content/xul/content/crashtests/425821-1.xul
content/xul/content/crashtests/429085-1.xhtml
content/xul/content/crashtests/431906-1-inner.xul
content/xul/content/crashtests/431906-1.html
content/xul/content/crashtests/451311-1.xul
content/xul/content/crashtests/461917-1.xhtml
content/xul/content/crashtests/509719-1-overlay.xul
content/xul/content/crashtests/509719-1.xul
content/xul/content/crashtests/509719-2-overlay.xul
content/xul/content/crashtests/509719-2.xul
content/xul/content/crashtests/crashtests.list
content/xul/content/moz.build
content/xul/content/public/moz.build
content/xul/content/public/nsIXULContextMenuBuilder.idl
content/xul/content/src/moz.build
content/xul/content/src/nsXULContextMenuBuilder.cpp
content/xul/content/src/nsXULContextMenuBuilder.h
content/xul/content/src/nsXULElement.cpp
content/xul/content/src/nsXULElement.h
content/xul/content/src/nsXULPopupListener.cpp
content/xul/content/src/nsXULPopupListener.h
content/xul/content/test/398289-resource.xul
content/xul/content/test/chrome.ini
content/xul/content/test/file_bug236853.rdf
content/xul/content/test/mochitest.ini
content/xul/content/test/test_bug233643.xul
content/xul/content/test/test_bug236853.xul
content/xul/content/test/test_bug398289.html
content/xul/content/test/test_bug486990.xul
content/xul/content/test/test_bug749367.xul
content/xul/content/test/test_bug775972.xul
content/xul/content/test/test_import_xul_to_content.xul
content/xul/document/crashtests/326204-1.xul
content/xul/document/crashtests/344215-1.xul
content/xul/document/crashtests/386914-1-inner.xul
content/xul/document/crashtests/386914-1.html
content/xul/document/crashtests/428951-1.xul
content/xul/document/crashtests/468211-1.xul
content/xul/document/crashtests/468211-2-binding.xml
content/xul/document/crashtests/468211-2.xul
content/xul/document/crashtests/468211-3.xul
content/xul/document/crashtests/495635-1.xul
content/xul/document/crashtests/583230.xul
content/xul/document/crashtests/crashtests.list
content/xul/document/crashtests/extA1.xul
content/xul/document/crashtests/extA2.xul
content/xul/document/crashtests/extB1.xul
content/xul/document/moz.build
content/xul/document/public/moz.build
content/xul/document/public/nsIController.idl
content/xul/document/public/nsIControllers.idl
content/xul/document/public/nsIXULDocument.h
content/xul/document/public/nsIXULOverlayProvider.idl
content/xul/document/src/XULDocument.cpp
content/xul/document/src/XULDocument.h
content/xul/document/src/moz.build
content/xul/document/src/nsForwardReference.h
content/xul/document/src/nsXULCommandDispatcher.cpp
content/xul/document/src/nsXULCommandDispatcher.h
content/xul/document/src/nsXULContentSink.cpp
content/xul/document/src/nsXULContentSink.h
content/xul/document/src/nsXULControllers.cpp
content/xul/document/src/nsXULControllers.h
content/xul/document/src/nsXULPrototypeCache.cpp
content/xul/document/src/nsXULPrototypeCache.h
content/xul/document/src/nsXULPrototypeDocument.cpp
content/xul/document/src/nsXULPrototypeDocument.h
content/xul/document/test/bug497875-iframe.xul
content/xul/document/test/chrome.ini
content/xul/document/test/overlay1_bug335375.xul
content/xul/document/test/overlay2_bug335375.xul
content/xul/document/test/overlay_640158.xul
content/xul/document/test/test_bug199692.xul
content/xul/document/test/test_bug311681.xul
content/xul/document/test/test_bug335375.xul
content/xul/document/test/test_bug391002.xul
content/xul/document/test/test_bug403868.xul
content/xul/document/test/test_bug414907.xul
content/xul/document/test/test_bug418216.xul
content/xul/document/test/test_bug445177.xul
content/xul/document/test/test_bug449457.xul
content/xul/document/test/test_bug468176.xul
content/xul/document/test/test_bug497875.xul
content/xul/document/test/test_bug583948.xul
content/xul/document/test/test_bug640158_overlay_persist.xul
content/xul/document/test/test_bug757137.xul
content/xul/document/test/window_bug583948.xul
content/xul/document/test/window_bug757137.xul
content/xul/moz.build
content/xul/templates/moz.build
content/xul/templates/public/moz.build
content/xul/templates/public/nsIXULBuilderListener.idl
content/xul/templates/public/nsIXULSortService.idl
content/xul/templates/public/nsIXULTemplateBuilder.idl
content/xul/templates/public/nsIXULTemplateQueryProcessor.idl
content/xul/templates/public/nsIXULTemplateResult.idl
content/xul/templates/public/nsIXULTemplateRuleFilter.idl
content/xul/templates/src/crashtests/257752-1-recursion.rdf
content/xul/templates/src/crashtests/257752-1-recursion.xul
content/xul/templates/src/crashtests/329884-1.xul
content/xul/templates/src/crashtests/330012-1.rdf
content/xul/templates/src/crashtests/330012-1.xul
content/xul/templates/src/crashtests/404346-1.xul
content/xul/templates/src/crashtests/415019-1.xul
content/xul/templates/src/crashtests/417840-1.xul
content/xul/templates/src/crashtests/424418-1.xul
content/xul/templates/src/crashtests/crashtests.list
content/xul/templates/src/moz.build
content/xul/templates/src/nsContentSupportMap.cpp
content/xul/templates/src/nsContentSupportMap.h
content/xul/templates/src/nsContentTestNode.cpp
content/xul/templates/src/nsContentTestNode.h
content/xul/templates/src/nsInstantiationNode.cpp
content/xul/templates/src/nsInstantiationNode.h
content/xul/templates/src/nsRDFBinding.cpp
content/xul/templates/src/nsRDFBinding.h
content/xul/templates/src/nsRDFConInstanceTestNode.cpp
content/xul/templates/src/nsRDFConInstanceTestNode.h
content/xul/templates/src/nsRDFConMemberTestNode.cpp
content/xul/templates/src/nsRDFConMemberTestNode.h
content/xul/templates/src/nsRDFPropertyTestNode.cpp
content/xul/templates/src/nsRDFPropertyTestNode.h
content/xul/templates/src/nsRDFQuery.cpp
content/xul/templates/src/nsRDFQuery.h
content/xul/templates/src/nsRDFTestNode.h
content/xul/templates/src/nsResourceSet.cpp
content/xul/templates/src/nsResourceSet.h
content/xul/templates/src/nsRuleNetwork.cpp
content/xul/templates/src/nsRuleNetwork.h
content/xul/templates/src/nsTemplateMap.h
content/xul/templates/src/nsTemplateMatch.cpp
content/xul/templates/src/nsTemplateMatch.h
content/xul/templates/src/nsTemplateRule.cpp
content/xul/templates/src/nsTemplateRule.h
content/xul/templates/src/nsTreeRows.cpp
content/xul/templates/src/nsTreeRows.h
content/xul/templates/src/nsXMLBinding.cpp
content/xul/templates/src/nsXMLBinding.h
content/xul/templates/src/nsXULContentBuilder.cpp
content/xul/templates/src/nsXULContentUtils.cpp
content/xul/templates/src/nsXULContentUtils.h
content/xul/templates/src/nsXULResourceList.h
content/xul/templates/src/nsXULSortService.cpp
content/xul/templates/src/nsXULSortService.h
content/xul/templates/src/nsXULTemplateBuilder.cpp
content/xul/templates/src/nsXULTemplateBuilder.h
content/xul/templates/src/nsXULTemplateQueryProcessorRDF.cpp
content/xul/templates/src/nsXULTemplateQueryProcessorRDF.h
content/xul/templates/src/nsXULTemplateQueryProcessorStorage.cpp
content/xul/templates/src/nsXULTemplateQueryProcessorStorage.h
content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp
content/xul/templates/src/nsXULTemplateQueryProcessorXML.h
content/xul/templates/src/nsXULTemplateResultRDF.cpp
content/xul/templates/src/nsXULTemplateResultRDF.h
content/xul/templates/src/nsXULTemplateResultSetRDF.cpp
content/xul/templates/src/nsXULTemplateResultSetRDF.h
content/xul/templates/src/nsXULTemplateResultStorage.cpp
content/xul/templates/src/nsXULTemplateResultStorage.h
content/xul/templates/src/nsXULTemplateResultXML.cpp
content/xul/templates/src/nsXULTemplateResultXML.h
content/xul/templates/src/nsXULTreeBuilder.cpp
content/xul/templates/tests/chrome/animals.rdf
content/xul/templates/tests/chrome/animals.sqlite
content/xul/templates/tests/chrome/animals.xml
content/xul/templates/tests/chrome/bug441785-1.rdf
content/xul/templates/tests/chrome/bug441785-2.rdf
content/xul/templates/tests/chrome/chrome.ini
content/xul/templates/tests/chrome/file_bug330010.rdf
content/xul/templates/tests/chrome/templates_shared.js
content/xul/templates/tests/chrome/test_bug329335.xul
content/xul/templates/tests/chrome/test_bug330010.xul
content/xul/templates/tests/chrome/test_bug397148.xul
content/xul/templates/tests/chrome/test_bug441785.xul
content/xul/templates/tests/chrome/test_bug476634.xul
content/xul/templates/tests/chrome/test_sortservice.xul
content/xul/templates/tests/chrome/test_tmpl_bindingsextendedsyntax.xul
content/xul/templates/tests/chrome/test_tmpl_bindingsmultiple.xul
content/xul/templates/tests/chrome/test_tmpl_bindingsquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_bindingsreversed.xul
content/xul/templates/tests/chrome/test_tmpl_bindingssameastriple.xul
content/xul/templates/tests/chrome/test_tmpl_containerandmembervariablechanged.xul
content/xul/templates/tests/chrome/test_tmpl_containervariablechanged.xul
content/xul/templates/tests/chrome/test_tmpl_containmentattribute.xul
content/xul/templates/tests/chrome/test_tmpl_defaultcontainervariableisuri.xul
content/xul/templates/tests/chrome/test_tmpl_errors.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntax.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntaxemptyconditions.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntaxotherrefvariable.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntaxremoveunmatched.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntaxsimplevariablesubstitution.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntaxtworulesrecurse.xul
content/xul/templates/tests/chrome/test_tmpl_extendedsyntaxusinganinterveningcontainer.xul
content/xul/templates/tests/chrome/test_tmpl_extendedvariablesubstitution.xul
content/xul/templates/tests/chrome/test_tmpl_gridelement.xul
content/xul/templates/tests/chrome/test_tmpl_htmlelementextendedsyntaxwithbinding.xul
content/xul/templates/tests/chrome/test_tmpl_htmlelementquerysyntaxrecursive.xul
content/xul/templates/tests/chrome/test_tmpl_htmlelementquerysyntaxwithmultiplerules.xul
content/xul/templates/tests/chrome/test_tmpl_htmlelementsimplesyntax.xul
content/xul/templates/tests/chrome/test_tmpl_htmlelementsimplesyntaxusingatextnode.xul
content/xul/templates/tests/chrome/test_tmpl_invalidqp.xul
content/xul/templates/tests/chrome/test_tmpl_listboxelement.xul
content/xul/templates/tests/chrome/test_tmpl_literalasmember.xul
content/xul/templates/tests/chrome/test_tmpl_membervariablechanged.xul
content/xul/templates/tests/chrome/test_tmpl_membervariablesubstitution.xul
content/xul/templates/tests/chrome/test_tmpl_menuelement.xul
content/xul/templates/tests/chrome/test_tmpl_menuelementrecursive.xul
content/xul/templates/tests/chrome/test_tmpl_menulistelement.xul
content/xul/templates/tests/chrome/test_tmpl_mixedsyntaxiscontainer.xul
content/xul/templates/tests/chrome/test_tmpl_mixedsyntaxiscontainerisempty.xul
content/xul/templates/tests/chrome/test_tmpl_mixedsyntaxisempty.xul
content/xul/templates/tests/chrome/test_tmpl_noaction.xul
content/xul/templates/tests/chrome/test_tmpl_noactionuriattribute.xul
content/xul/templates/tests/chrome/test_tmpl_parentconditions.xul
content/xul/templates/tests/chrome/test_tmpl_parentcontenttag.xul
content/xul/templates/tests/chrome/test_tmpl_parentsimplesyntax.xul
content/xul/templates/tests/chrome/test_tmpl_query3triples.xul
content/xul/templates/tests/chrome/test_tmpl_query3tripleswherecontains.xul
content/xul/templates/tests/chrome/test_tmpl_querymember3tripleswhereequals.xul
content/xul/templates/tests/chrome/test_tmpl_querymemberandtwotriples.xul
content/xul/templates/tests/chrome/test_tmpl_querymembertriplemembertriple.xul
content/xul/templates/tests/chrome/test_tmpl_queryresourcematch.xul
content/xul/templates/tests/chrome/test_tmpl_queryreversetriple.xul
content/xul/templates/tests/chrome/test_tmpl_queryselfwithtriple.xul
content/xul/templates/tests/chrome/test_tmpl_querysetone.xul
content/xul/templates/tests/chrome/test_tmpl_querysettwo.xul
content/xul/templates/tests/chrome/test_tmpl_querysettwowithcondition.xul
content/xul/templates/tests/chrome/test_tmpl_querysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_querysyntaxmultiplerules.xul
content/xul/templates/tests/chrome/test_tmpl_querysyntaxmultiplerulesfirstconditionall.xul
content/xul/templates/tests/chrome/test_tmpl_querysyntaxmultiplerulestwoconditions.xul
content/xul/templates/tests/chrome/test_tmpl_querytripleandmembermerge.xul
content/xul/templates/tests/chrome/test_tmpl_querytripleobjecttosubject.xul
content/xul/templates/tests/chrome/test_tmpl_querytwomembers.xul
content/xul/templates/tests/chrome/test_tmpl_querytwomembersfiltered.xul
content/xul/templates/tests/chrome/test_tmpl_querytwotriples.xul
content/xul/templates/tests/chrome/test_tmpl_queryupwardsmember.xul
content/xul/templates/tests/chrome/test_tmpl_queryupwardsmembertripleandfilteringtriple.xul
content/xul/templates/tests/chrome/test_tmpl_querywithemptyconditions.xul
content/xul/templates/tests/chrome/test_tmpl_referenceasmember.xul
content/xul/templates/tests/chrome/test_tmpl_regenerate.xul
content/xul/templates/tests/chrome/test_tmpl_selfgenerationextendedsyntax.xul
content/xul/templates/tests/chrome/test_tmpl_selfgenerationsimplesyntax.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxenclosedinacontainer.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxenclosedinacontainerwitharule.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxfilter.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxfilterwithmultiplerules.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxfilterwithrule.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxiteratingoverasinglevalue.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxusinganinterveningcontainer.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxusingatextnode.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxusingcontainerasthegenerationelement.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxusingdontrecurse.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxusingrecursivegeneration.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxusingrecursivegenerationagain.xul
content/xul/templates/tests/chrome/test_tmpl_simplesyntaxwithtwovariablesused.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutioncaretsatbeginningandend.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutioncaretsubstitution.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutionnovariable.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutionquestionmarkaspartofvariable.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutionquestionmarksubstitution.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutiontextandvariable.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutionvariableandtextconcatenated.xul
content/xul/templates/tests/chrome/test_tmpl_simplevariablesubstitutionvariablesconcatenated.xul
content/xul/templates/tests/chrome/test_tmpl_sortascendinginteger.xul
content/xul/templates/tests/chrome/test_tmpl_sortascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortascendingtworulesquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortascendingtworuleswithcontainerquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortascendingtworuleswithdifferentcontainerquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortdescendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortquerymemberandtwotriples.xul
content/xul/templates/tests/chrome/test_tmpl_sortresource2descendingsimplesyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortresource2settopredicateascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortresource2settopredicatedescendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortresourceascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortresourcedescendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortresourcesettopredicateascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortresourcesettopredicatedescendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sorttworesourcesasstringsettopredicatedescendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sorttworesourcessettopredicateascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sorttwovariablesascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sorttwovariablesascendingsimplesyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sorttwovariablesdescendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_sortunknownascendingquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_storage_bad_parameters.xul
content/xul/templates/tests/chrome/test_tmpl_storage_bad_parameters_2.xul
content/xul/templates/tests/chrome/test_tmpl_storage_bad_parameters_3.xul
content/xul/templates/tests/chrome/test_tmpl_storage_baddatasource.xul
content/xul/templates/tests/chrome/test_tmpl_storage_badquery.xul
content/xul/templates/tests/chrome/test_tmpl_storage_dynamicparameters.xul
content/xul/templates/tests/chrome/test_tmpl_storage_listbox.xul
content/xul/templates/tests/chrome/test_tmpl_storage_multiqueries.xul
content/xul/templates/tests/chrome/test_tmpl_storage_parameters.xul
content/xul/templates/tests/chrome/test_tmpl_storage_rule.xul
content/xul/templates/tests/chrome/test_tmpl_storage_simple.xul
content/xul/templates/tests/chrome/test_tmpl_storage_sortintegerasc.xul
content/xul/templates/tests/chrome/test_tmpl_storage_sortintegerdesc.xul
content/xul/templates/tests/chrome/test_tmpl_storage_sortstringasc.xul
content/xul/templates/tests/chrome/test_tmpl_storage_sortstringdesc.xul
content/xul/templates/tests/chrome/test_tmpl_storage_tree.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntax.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxnotrecursive.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxnotrecursivetreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxrecursive.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxrecursivemultiplerules.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxrecursivemultiplerulestreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxrecursivetreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementquerysyntaxtreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementsimplesyntaxnotrecursive.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementsimplesyntaxnotrecursivetreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementsimplesyntaxrecursive.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementsimplesyntaxrecursivetreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementtreecell.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementtreecellsortascending.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementtreecellsortascendingtreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementtreecelltreebuilder.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementtreeitemonly.xul
content/xul/templates/tests/chrome/test_tmpl_treeelementtreeitemsortascending.xul
content/xul/templates/tests/chrome/test_tmpl_twogenerationnodes.xul
content/xul/templates/tests/chrome/test_tmpl_whereafterignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_whereafterlowercase.xul
content/xul/templates/tests/chrome/test_tmpl_whereafternegation.xul
content/xul/templates/tests/chrome/test_tmpl_whereafteruppercase.xul
content/xul/templates/tests/chrome/test_tmpl_wherebeforeignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_wherebeforelowercase.xul
content/xul/templates/tests/chrome/test_tmpl_wherebeforenegation.xul
content/xul/templates/tests/chrome/test_tmpl_wherebeforeuppercase.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontains.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontainsignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontainsnegation.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontainsnumber.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontainsnumberstring.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontainsresource.xul
content/xul/templates/tests/chrome/test_tmpl_wherecontainstwo.xul
content/xul/templates/tests/chrome/test_tmpl_whereendswith.xul
content/xul/templates/tests/chrome/test_tmpl_whereendswithignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_whereendswithnegation.xul
content/xul/templates/tests/chrome/test_tmpl_whereequals.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsmultiple.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsmultiplenegation.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsmultiplenegationignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsnegation.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsnegationignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsnegationwrongcase.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsnumber.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsothervariable.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalsresource.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalssamevariable.xul
content/xul/templates/tests/chrome/test_tmpl_whereequalswrongcase.xul
content/xul/templates/tests/chrome/test_tmpl_wheregreater.xul
content/xul/templates/tests/chrome/test_tmpl_wheregreaternegation.xul
content/xul/templates/tests/chrome/test_tmpl_wheregreaternegationstring.xul
content/xul/templates/tests/chrome/test_tmpl_wheregreaterstring.xul
content/xul/templates/tests/chrome/test_tmpl_whereless.xul
content/xul/templates/tests/chrome/test_tmpl_wherelessnegation.xul
content/xul/templates/tests/chrome/test_tmpl_wherelessnegationstring.xul
content/xul/templates/tests/chrome/test_tmpl_wherelessstring.xul
content/xul/templates/tests/chrome/test_tmpl_wherenorel.xul
content/xul/templates/tests/chrome/test_tmpl_wherenosubject.xul
content/xul/templates/tests/chrome/test_tmpl_wherenovalue.xul
content/xul/templates/tests/chrome/test_tmpl_wherestartswith.xul
content/xul/templates/tests/chrome/test_tmpl_wherestartswithignorecase.xul
content/xul/templates/tests/chrome/test_tmpl_wherestartswithmultiple.xul
content/xul/templates/tests/chrome/test_tmpl_wherestartswithnegation.xul
content/xul/templates/tests/chrome/test_tmpl_wherestartswithunknownvariable.xul
content/xul/templates/tests/chrome/test_tmpl_wherestartswithvariable.xul
content/xul/templates/tests/chrome/test_tmpl_wheresubjectequalsvariable.xul
content/xul/templates/tests/chrome/test_tmpl_wheresubjectstartswithvariable.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerysimple.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithassign.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithassignmentandcondition.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithassignmentandconditiondontrecurse.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithbindinginbindings.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithbindinginrule.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithdifferentmember.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithinlinedata.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithinlinedatawithmultiplequeries.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithmultiplequeries.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithothertypes.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithsort.xul
content/xul/templates/tests/chrome/test_tmpl_xmlquerywithsortotherfield.xul
db/sqlite3/src/sqlite-version.py
db/sqlite3/src/sqlite.rc
dom/locales/Makefile.in
intl/icu/Makefile.in
layout/reftests/svg/as-image/canvas-drawImage-alpha-1-ref.html
layout/reftests/svg/as-image/canvas-drawImage-alpha-1.html
layout/reftests/svg/as-image/canvas-drawImage-alpha-2-ref.html
layout/reftests/svg/as-image/canvas-drawImage-alpha-2.html
layout/reftests/svg/as-image/squaredCircle-transparent.svg
mobile/android/branding/aurora/locales/Makefile.in
mobile/android/branding/beta/locales/Makefile.in
mobile/android/branding/nightly/locales/Makefile.in
mobile/android/branding/official/locales/Makefile.in
mobile/android/branding/unofficial/locales/Makefile.in
netwerk/locales/Makefile.in
security/build/Makefile.in
security/build/moz.build
security/build/nspr-dummy.def
security/build/nss.def
security/build/nss.mk
security/manager/locales/Makefile.in
services/sync/locales/Makefile.in
webapprt/locales/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
@@ -327,14 +327,14 @@ endif
 ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3)
 toolkit/library/target: widget/gtk/mozgtk/gtk3/target
 endif
 ifdef MOZ_LDAP_XPCOM
 toolkit/library/target: ../ldap/target
 endif
 ifndef MOZ_FOLD_LIBS
 ifndef MOZ_NATIVE_SQLITE
-security/build/target: db/sqlite3/src/target
+config/external/nss/target: db/sqlite3/src/target
 endif
 endif
 ifeq ($(MOZ_REPLACE_MALLOC_LINKAGE),dummy library)
 mozglue/build/target: memory/replace/dummy/target
 endif
--- a/accessible/jsat/AccessFu.jsm
+++ b/accessible/jsat/AccessFu.jsm
@@ -1,32 +1,32 @@
 /* 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/. */
 
+/* global AccessFu, Components, Utils, PrefCache, Logger, Services,
+          PointerAdapter, dump, Presentation, Rect */
+/* exported AccessFu */
+
 'use strict';
 
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-const Cr = Components.results;
+const {utils: Cu, interfaces: Ci} = Components;
 
-this.EXPORTED_SYMBOLS = ['AccessFu'];
+this.EXPORTED_SYMBOLS = ['AccessFu']; // jshint ignore:line
 
 Cu.import('resource://gre/modules/Services.jsm');
-
 Cu.import('resource://gre/modules/accessibility/Utils.jsm');
 
-const ACCESSFU_DISABLE = 0;
+const ACCESSFU_DISABLE = 0; // jshint ignore:line
 const ACCESSFU_ENABLE = 1;
 const ACCESSFU_AUTO = 2;
 
 const SCREENREADER_SETTING = 'accessibility.screenreader';
 
-this.AccessFu = {
+this.AccessFu = { // jshint ignore:line
   /**
    * Initialize chrome-layer accessibility functionality.
    * If accessibility is enabled on the platform, then a special accessibility
    * mode is started.
    */
   attach: function attach(aWindow) {
     Utils.init(aWindow);
 
@@ -72,27 +72,28 @@ this.AccessFu = {
     Utils.uninit();
   },
 
   /**
    * Start AccessFu mode, this primarily means controlling the virtual cursor
    * with arrow keys.
    */
   _enable: function _enable() {
-    if (this._enabled)
+    if (this._enabled) {
       return;
+    }
     this._enabled = true;
 
     Cu.import('resource://gre/modules/accessibility/Utils.jsm');
     Cu.import('resource://gre/modules/accessibility/PointerAdapter.jsm');
     Cu.import('resource://gre/modules/accessibility/Presentation.jsm');
 
     Logger.info('Enabled');
 
-    for each (let mm in Utils.AllMessageManagers) {
+    for (let mm of Utils.AllMessageManagers) {
       this._addMessageListeners(mm);
       this._loadFrameScript(mm);
     }
 
     // Add stylesheet
     let stylesheetURL = 'chrome://global/content/accessibility/AccessFu.css';
     let stylesheet = Utils.win.document.createProcessingInstruction(
       'xml-stylesheet', 'href="' + stylesheetURL + '" type="text/css"');
@@ -130,40 +131,39 @@ this.AccessFu = {
     Utils.win.addEventListener('TabSelect', this);
 
     if (this.readyCallback) {
       this.readyCallback();
       delete this.readyCallback;
     }
 
     if (Utils.MozBuildApp !== 'mobile/android') {
-      this.announce(
-        Utils.stringBundle.GetStringFromName('screenReaderStarted'));
+      this.announce('screenReaderStarted');
     }
   },
 
   /**
    * Disable AccessFu and return to default interaction mode.
    */
   _disable: function _disable() {
-    if (!this._enabled)
+    if (!this._enabled) {
       return;
+    }
 
     this._enabled = false;
 
     Logger.info('Disabled');
 
     Utils.win.document.removeChild(this.stylesheet.get());
 
     if (Utils.MozBuildApp !== 'mobile/android') {
-      this.announce(
-        Utils.stringBundle.GetStringFromName('screenReaderStopped'));
+      this.announce('screenReaderStopped');
     }
 
-    for each (let mm in Utils.AllMessageManagers) {
+    for (let mm of Utils.AllMessageManagers) {
       mm.sendAsyncMessage('AccessFu:Stop');
       this._removeMessageListeners(mm);
     }
 
     this.Input.stop();
     Output.stop();
     PointerAdapter.stop();
 
@@ -191,20 +191,21 @@ this.AccessFu = {
 
   _enableOrDisable: function _enableOrDisable() {
     try {
       if (!this._activatePref) {
         return;
       }
       let activatePref = this._activatePref.value;
       if (activatePref == ACCESSFU_ENABLE ||
-          this._systemPref && activatePref == ACCESSFU_AUTO)
+          this._systemPref && activatePref == ACCESSFU_AUTO) {
         this._enable();
-      else
+      } else {
         this._disable();
+      }
     } catch (x) {
       dump('Error ' + x.message + ' ' + x.fileName + ':' + x.lineNumber);
     }
   },
 
   receiveMessage: function receiveMessage(aMessage) {
     Logger.debug(() => {
       return ['Recieved', aMessage.name, JSON.stringify(aMessage.json)];
@@ -229,19 +230,20 @@ this.AccessFu = {
         break;
       case 'AccessFu:DoScroll':
         this.Input.doScroll(aMessage.json);
         break;
     }
   },
 
   _output: function _output(aPresentationData, aBrowser) {
-    for each (let presenter in aPresentationData) {
-      if (!presenter)
+    for (let presenter of aPresentationData) {
+      if (!presenter) {
         continue;
+      }
 
       try {
         Output[presenter.type](presenter.details, aBrowser);
       } catch (x) {
         Logger.logException(x);
       }
     }
 
@@ -387,79 +389,82 @@ this.AccessFu = {
   // Layerview is focused
   _focused: false,
 
   // Keep track of message managers tha already have a 'content-script.js'
   // injected.
   _processedMessageManagers: [],
 
   /**
-   * Adjusts the given bounds relative to the given browser. Converts from screen
-   * or device pixels to either device or CSS pixels.
+   * Adjusts the given bounds relative to the given browser. Converts from
+   * screen or device pixels to either device or CSS pixels.
    * @param {Rect} aJsonBounds the bounds to adjust
    * @param {browser} aBrowser the browser we want the bounds relative to
    * @param {bool} aToCSSPixels whether to convert to CSS pixels (as opposed to
    *               device pixels)
    * @param {bool} aFromDevicePixels whether to convert from device pixels (as
    *               opposed to screen pixels)
    */
-  adjustContentBounds: function(aJsonBounds, aBrowser, aToCSSPixels, aFromDevicePixels) {
-    let bounds = new Rect(aJsonBounds.left, aJsonBounds.top,
-                          aJsonBounds.right - aJsonBounds.left,
-                          aJsonBounds.bottom - aJsonBounds.top);
-    let win = Utils.win;
-    let dpr = win.devicePixelRatio;
-    let vp = Utils.getViewport(win);
-    let offset = { left: -win.mozInnerScreenX, top: -win.mozInnerScreenY };
+  adjustContentBounds:
+    function(aJsonBounds, aBrowser, aToCSSPixels, aFromDevicePixels) {
+      let bounds = new Rect(aJsonBounds.left, aJsonBounds.top,
+                            aJsonBounds.right - aJsonBounds.left,
+                            aJsonBounds.bottom - aJsonBounds.top);
+      let win = Utils.win;
+      let dpr = win.devicePixelRatio;
+      let vp = Utils.getViewport(win);
+      let offset = { left: -win.mozInnerScreenX, top: -win.mozInnerScreenY };
 
-    if (!aBrowser.contentWindow) {
-      // OOP browser, add offset of browser.
-      // The offset of the browser element in relation to its parent window.
-      let clientRect = aBrowser.getBoundingClientRect();
-      let win = aBrowser.ownerDocument.defaultView;
-      offset.left += clientRect.left + win.mozInnerScreenX;
-      offset.top += clientRect.top + win.mozInnerScreenY;
-    }
+      if (!aBrowser.contentWindow) {
+        // OOP browser, add offset of browser.
+        // The offset of the browser element in relation to its parent window.
+        let clientRect = aBrowser.getBoundingClientRect();
+        let win = aBrowser.ownerDocument.defaultView;
+        offset.left += clientRect.left + win.mozInnerScreenX;
+        offset.top += clientRect.top + win.mozInnerScreenY;
+      }
 
-    // Here we scale from screen pixels to layout device pixels by dividing by
-    // the resolution (caused by pinch-zooming). The resolution is the viewport
-    // zoom divided by the devicePixelRatio. If there's no viewport, then we're
-    // on a platform without pinch-zooming and we can just ignore this.
-    if (!aFromDevicePixels && vp) {
-      bounds = bounds.scale(vp.zoom / dpr, vp.zoom / dpr);
-    }
+      // Here we scale from screen pixels to layout device pixels by dividing by
+      // the resolution (caused by pinch-zooming). The resolution is the
+      // viewport zoom divided by the devicePixelRatio. If there's no viewport,
+      // then we're on a platform without pinch-zooming and we can just ignore
+      // this.
+      if (!aFromDevicePixels && vp) {
+        bounds = bounds.scale(vp.zoom / dpr, vp.zoom / dpr);
+      }
 
-    // Add the offset; the offset is in CSS pixels, so multiply the
-    // devicePixelRatio back in before adding to preserve unit consistency.
-    bounds = bounds.translate(offset.left * dpr, offset.top * dpr);
+      // Add the offset; the offset is in CSS pixels, so multiply the
+      // devicePixelRatio back in before adding to preserve unit consistency.
+      bounds = bounds.translate(offset.left * dpr, offset.top * dpr);
 
-    // If we want to get to CSS pixels from device pixels, this needs to be
-    // further divided by the devicePixelRatio due to widget scaling.
-    if (aToCSSPixels) {
-      bounds = bounds.scale(1 / dpr, 1 / dpr);
+      // If we want to get to CSS pixels from device pixels, this needs to be
+      // further divided by the devicePixelRatio due to widget scaling.
+      if (aToCSSPixels) {
+        bounds = bounds.scale(1 / dpr, 1 / dpr);
+      }
+
+      return bounds.expandToIntegers();
     }
-
-    return bounds.expandToIntegers();
-  }
 };
 
 var Output = {
   brailleState: {
     startOffset: 0,
     endOffset: 0,
     text: '',
     selectionStart: 0,
     selectionEnd: 0,
 
     init: function init(aOutput) {
       if (aOutput && 'output' in aOutput) {
         this.startOffset = aOutput.startOffset;
         this.endOffset = aOutput.endOffset;
-        // We need to append a space at the end so that the routing key corresponding
-        // to the end of the output (i.e. the space) can be hit to move the caret there.
+        // We need to append a space at the end so that the routing key
+        // corresponding to the end of the output (i.e. the space) can be hit to
+        // move the caret there.
         this.text = aOutput.output + ' ';
         this.selectionStart = typeof aOutput.selectionStart === 'number' ?
                               aOutput.selectionStart : this.selectionStart;
         this.selectionEnd = typeof aOutput.selectionEnd === 'number' ?
                             aOutput.selectionEnd : this.selectionEnd;
 
         return { text: this.text,
                  selectionStart: this.selectionStart,
@@ -497,137 +502,60 @@ var Output = {
     },
 
     adjustSelection: function adjustSelection(aSelection) {
       let braille = {};
 
       braille.startOffset = this.startOffset;
       braille.endOffset = this.endOffset;
       braille.text = this.text;
-      this.selectionStart = braille.selectionStart = aSelection.selectionStart + this.startOffset;
-      this.selectionEnd = braille.selectionEnd = aSelection.selectionEnd + this.startOffset;
+      this.selectionStart = braille.selectionStart =
+        aSelection.selectionStart + this.startOffset;
+      this.selectionEnd = braille.selectionEnd =
+        aSelection.selectionEnd + this.startOffset;
 
       return braille;
     }
   },
 
-  speechHelper: {
-    EARCONS: ['virtual_cursor_move.ogg',
-              'virtual_cursor_key.ogg',
-              'clicked.ogg'],
-
-    earconBuffers: {},
-
-    inited: false,
-
-    webspeechEnabled: false,
-
-    deferredOutputs: [],
-
-    init: function init() {
-      let window = Utils.win;
-      this.webspeechEnabled = !!window.speechSynthesis &&
-        !!window.SpeechSynthesisUtterance;
-
-      let settingsToGet = 2;
-      let settingsCallback = (aName, aSetting) => {
-        if (--settingsToGet > 0) {
-          return;
-        }
-
-        this.inited = true;
-
-        for (let actions of this.deferredOutputs) {
-          this.output(actions);
-        }
-      };
-
-      this._volumeSetting = new SettingCache(
-        'accessibility.screenreader-volume', settingsCallback,
-        { defaultValue: 1, callbackNow: true, callbackOnce: true });
-      this._rateSetting = new SettingCache(
-        'accessibility.screenreader-rate', settingsCallback,
-        { defaultValue: 0, callbackNow: true, callbackOnce: true });
-
-      for (let earcon of this.EARCONS) {
-        let earconName = /(^.*)\..*$/.exec(earcon)[1];
-        this.earconBuffers[earconName] = new WeakMap();
-        this.earconBuffers[earconName].set(
-          window, new window.Audio('chrome://global/content/accessibility/' + earcon));
-      }
-    },
-
-    uninit: function uninit() {
-      if (this.inited) {
-        delete this._volumeSetting;
-        delete this._rateSetting;
-      }
-      this.inited = false;
-    },
-
-    output: function output(aActions) {
-      if (!this.inited) {
-        this.deferredOutputs.push(aActions);
-        return;
-      }
-
-      for (let action of aActions) {
-        let window = Utils.win;
-        Logger.debug('tts.' + action.method, '"' + action.data + '"',
-                     JSON.stringify(action.options));
-
-        if (!action.options.enqueue && this.webspeechEnabled) {
-          window.speechSynthesis.cancel();
-        }
-
-        if (action.method === 'speak' && this.webspeechEnabled) {
-          let utterance = new window.SpeechSynthesisUtterance(action.data);
-          let requestedRate = this._rateSetting.value;
-          utterance.volume = this._volumeSetting.value;
-          utterance.rate = requestedRate >= 0 ?
-            requestedRate + 1 : 1 / (Math.abs(requestedRate) + 1);
-          window.speechSynthesis.speak(utterance);
-        } else if (action.method === 'playEarcon') {
-          let audioBufferWeakMap = this.earconBuffers[action.data];
-          if (audioBufferWeakMap) {
-            let node = audioBufferWeakMap.get(window).cloneNode(false);
-            node.volume = this._volumeSetting.value;
-            node.play();
-          }
-        }
-      }
-    }
-  },
-
   start: function start() {
     Cu.import('resource://gre/modules/Geometry.jsm');
-    this.speechHelper.init();
   },
 
   stop: function stop() {
     if (this.highlightBox) {
       Utils.win.document.documentElement.removeChild(this.highlightBox.get());
       delete this.highlightBox;
     }
-
-    if (this.announceBox) {
-      Utils.win.document.documentElement.removeChild(this.announceBox.get());
-      delete this.announceBox;
-    }
-
-    this.speechHelper.uninit();
   },
 
-  Speech: function Speech(aDetails, aBrowser) {
-    this.speechHelper.output(aDetails.actions);
+  B2G: function B2G(aDetails) {
+    let details = {
+      type: 'accessfu-output',
+      details: JSON.stringify(aDetails)
+    };
+    let window = Utils.win;
+    if (window.shell) {
+      // On B2G device.
+      window.shell.sendChromeEvent(details);
+    } else {
+      // Dispatch custom event to have support for desktop and screen reader
+      // emulator add-on.
+      window.dispatchEvent(new window.CustomEvent(details.type, {
+        bubbles: true,
+        cancelable: true,
+        detail: details
+      }));
+    }
   },
 
-  Visual: function Visual(aDetails, aBrowser) {
-    switch (aDetails.method) {
-      case 'showBounds':
+  Visual: function Visual(aDetail, aBrowser) {
+    switch (aDetail.eventType) {
+      case 'viewport-change':
+      case 'vc-change':
       {
         let highlightBox = null;
         if (!this.highlightBox) {
           // Add highlight box
           highlightBox = Utils.win.document.
             createElementNS('http://www.w3.org/1999/xhtml', 'div');
           Utils.win.document.documentElement.appendChild(highlightBox);
           highlightBox.id = 'virtual-cursor-box';
@@ -638,66 +566,35 @@ var Output = {
           inset.id = 'virtual-cursor-inset';
 
           highlightBox.appendChild(inset);
           this.highlightBox = Cu.getWeakReference(highlightBox);
         } else {
           highlightBox = this.highlightBox.get();
         }
 
-        let padding = aDetails.padding;
-        let r = AccessFu.adjustContentBounds(aDetails.bounds, aBrowser, true);
+        let padding = aDetail.padding;
+        let r = AccessFu.adjustContentBounds(aDetail.bounds, aBrowser, true);
 
         // First hide it to avoid flickering when changing the style.
         highlightBox.style.display = 'none';
         highlightBox.style.top = (r.top - padding) + 'px';
         highlightBox.style.left = (r.left - padding) + 'px';
         highlightBox.style.width = (r.width + padding*2) + 'px';
         highlightBox.style.height = (r.height + padding*2) + 'px';
         highlightBox.style.display = 'block';
 
         break;
       }
-      case 'hideBounds':
+      case 'tabstate-change':
       {
         let highlightBox = this.highlightBox ? this.highlightBox.get() : null;
-        if (highlightBox)
+        if (highlightBox) {
           highlightBox.style.display = 'none';
-        break;
-      }
-      case 'showAnnouncement':
-      {
-        let announceBox = this.announceBox ? this.announceBox.get() : null;
-        if (!announceBox) {
-          announceBox = Utils.win.document.
-            createElementNS('http://www.w3.org/1999/xhtml', 'div');
-          announceBox.id = 'announce-box';
-          Utils.win.document.documentElement.appendChild(announceBox);
-          this.announceBox = Cu.getWeakReference(announceBox);
         }
-
-        announceBox.innerHTML = '<div>' + aDetails.text + '</div>';
-        announceBox.classList.add('showing');
-
-        if (this._announceHideTimeout)
-          Utils.win.clearTimeout(this._announceHideTimeout);
-
-        if (aDetails.duration > 0)
-          this._announceHideTimeout = Utils.win.setTimeout(
-            function () {
-              announceBox.classList.remove('showing');
-              this._announceHideTimeout = 0;
-            }.bind(this), aDetails.duration);
-        break;
-      }
-      case 'hideAnnouncement':
-      {
-        let announceBox = this.announceBox ? this.announceBox.get() : null;
-        if (announceBox)
-          announceBox.classList.remove('showing');
         break;
       }
     }
   },
 
   get androidBridge() {
     delete this.androidBridge;
     if (Utils.MozBuildApp === 'mobile/android') {
@@ -711,42 +608,43 @@ var Output = {
   Android: function Android(aDetails, aBrowser) {
     const ANDROID_VIEW_TEXT_CHANGED = 0x10;
     const ANDROID_VIEW_TEXT_SELECTION_CHANGED = 0x2000;
 
     if (!this.androidBridge) {
       return;
     }
 
-    for each (let androidEvent in aDetails) {
+    for (let androidEvent of aDetails) {
       androidEvent.type = 'Accessibility:Event';
-      if (androidEvent.bounds)
-        androidEvent.bounds = AccessFu.adjustContentBounds(androidEvent.bounds, aBrowser);
+      if (androidEvent.bounds) {
+        androidEvent.bounds = AccessFu.adjustContentBounds(
+          androidEvent.bounds, aBrowser);
+      }
 
       switch(androidEvent.eventType) {
         case ANDROID_VIEW_TEXT_CHANGED:
-          androidEvent.brailleOutput = this.brailleState.adjustText(androidEvent.text);
+          androidEvent.brailleOutput = this.brailleState.adjustText(
+            androidEvent.text);
           break;
         case ANDROID_VIEW_TEXT_SELECTION_CHANGED:
-          androidEvent.brailleOutput = this.brailleState.adjustSelection(androidEvent.brailleOutput);
+          androidEvent.brailleOutput = this.brailleState.adjustSelection(
+            androidEvent.brailleOutput);
           break;
         default:
-          androidEvent.brailleOutput = this.brailleState.init(androidEvent.brailleOutput);
+          androidEvent.brailleOutput = this.brailleState.init(
+            androidEvent.brailleOutput);
           break;
       }
       this.androidBridge.handleGeckoMessage(androidEvent);
     }
   },
 
-  Haptic: function Haptic(aDetails, aBrowser) {
-    Utils.win.navigator.vibrate(aDetails.pattern);
-  },
-
-  Braille: function Braille(aDetails, aBrowser) {
-    Logger.debug('Braille output: ' + aDetails.text);
+  Braille: function Braille(aDetails) {
+    Logger.debug('Braille output: ' + aDetails.output);
   }
 };
 
 var Input = {
   editState: {},
 
   start: function start() {
     // XXX: This is too disruptive on desktop for now.
@@ -844,74 +742,83 @@ var Input = {
         break;
     }
   },
 
   _handleKeypress: function _handleKeypress(aEvent) {
     let target = aEvent.target;
 
     // Ignore keys with modifiers so the content could take advantage of them.
-    if (aEvent.ctrlKey || aEvent.altKey || aEvent.metaKey)
+    if (aEvent.ctrlKey || aEvent.altKey || aEvent.metaKey) {
       return;
+    }
 
     switch (aEvent.keyCode) {
       case 0:
         // an alphanumeric key was pressed, handle it separately.
         // If it was pressed with either alt or ctrl, just pass through.
         // If it was pressed with meta, pass the key on without the meta.
-        if (this.editState.editing)
+        if (this.editState.editing) {
           return;
+        }
 
         let key = String.fromCharCode(aEvent.charCode);
         try {
           let [methodName, rule] = this.keyMap[key];
           this.moveCursor(methodName, rule, 'keyboard');
         } catch (x) {
           return;
         }
         break;
       case aEvent.DOM_VK_RIGHT:
         if (this.editState.editing) {
-          if (!this.editState.atEnd)
+          if (!this.editState.atEnd) {
             // Don't move forward if caret is not at end of entry.
             // XXX: Fix for rtl
             return;
-          else
+          } else {
             target.blur();
+          }
         }
-        this.moveCursor(aEvent.shiftKey ? 'moveLast' : 'moveNext', 'Simple', 'keyboard');
+        this.moveCursor(aEvent.shiftKey ?
+          'moveLast' : 'moveNext', 'Simple', 'keyboard');
         break;
       case aEvent.DOM_VK_LEFT:
         if (this.editState.editing) {
-          if (!this.editState.atStart)
+          if (!this.editState.atStart) {
             // Don't move backward if caret is not at start of entry.
             // XXX: Fix for rtl
             return;
-          else
+          } else {
             target.blur();
+          }
         }
-        this.moveCursor(aEvent.shiftKey ? 'moveFirst' : 'movePrevious', 'Simple', 'keyboard');
+        this.moveCursor(aEvent.shiftKey ?
+          'moveFirst' : 'movePrevious', 'Simple', 'keyboard');
         break;
       case aEvent.DOM_VK_UP:
         if (this.editState.multiline) {
-          if (!this.editState.atStart)
+          if (!this.editState.atStart) {
             // Don't blur content if caret is not at start of text area.
             return;
-          else
+          } else {
             target.blur();
+          }
         }
 
-        if (Utils.MozBuildApp == 'mobile/android')
+        if (Utils.MozBuildApp == 'mobile/android') {
           // Return focus to native Android browser chrome.
           Services.androidBridge.handleGeckoMessage(
               { type: 'ToggleChrome:Focus' });
+        }
         break;
       case aEvent.DOM_VK_RETURN:
-        if (this.editState.editing)
+        if (this.editState.editing) {
           return;
+        }
         this.activateCurrent();
         break;
     default:
       return;
     }
 
     aEvent.preventDefault();
     aEvent.stopPropagation();
@@ -975,17 +882,18 @@ var Input = {
 
   sendContextMenuMessage: function sendContextMenuMessage() {
     let mm = Utils.getMessageManager(Utils.CurrentBrowser);
     mm.sendAsyncMessage('AccessFu:ContextMenu', {});
   },
 
   activateContextMenu: function activateContextMenu(aDetails) {
     if (Utils.MozBuildApp === 'mobile/android') {
-      let p = AccessFu.adjustContentBounds(aDetails.bounds, Utils.CurrentBrowser,
+      let p = AccessFu.adjustContentBounds(aDetails.bounds,
+                                           Utils.CurrentBrowser,
                                            true, true).center();
       Services.obs.notifyObservers(null, 'Gesture:LongPress',
                                    JSON.stringify({x: p.x, y: p.y}));
     }
   },
 
   setEditState: function setEditState(aEditState) {
     this.editState = aEditState;
@@ -994,17 +902,18 @@ var Input = {
   // XXX: This is here for backwards compatability with screen reader simulator
   // it should be removed when the extension is updated on amo.
   scroll: function scroll(aPage, aHorizontal) {
     this.sendScrollMessage(aPage, aHorizontal);
   },
 
   sendScrollMessage: function sendScrollMessage(aPage, aHorizontal) {
     let mm = Utils.getMessageManager(Utils.CurrentBrowser);
-    mm.sendAsyncMessage('AccessFu:Scroll', {page: aPage, horizontal: aHorizontal, origin: 'top'});
+    mm.sendAsyncMessage('AccessFu:Scroll',
+      {page: aPage, horizontal: aHorizontal, origin: 'top'});
   },
 
   doScroll: function doScroll(aDetails) {
     let horizontal = aDetails.horizontal;
     let page = aDetails.page;
     let p = AccessFu.adjustContentBounds(aDetails.bounds, Utils.CurrentBrowser,
                                          true, true).center();
     Utils.winUtils.sendWheelEvent(p.x, p.y,
@@ -1053,23 +962,25 @@ var Input = {
   },
 
   quickNavMode: {
     get current() {
       return this.modes[this._currentIndex];
     },
 
     previous: function quickNavMode_previous() {
-      if (--this._currentIndex < 0)
+      if (--this._currentIndex < 0) {
         this._currentIndex = this.modes.length - 1;
+      }
     },
 
     next: function quickNavMode_next() {
-      if (++this._currentIndex >= this.modes.length)
+      if (++this._currentIndex >= this.modes.length) {
         this._currentIndex = 0;
+      }
     },
 
     updateModes: function updateModes(aModes) {
       if (aModes) {
         this.modes = aModes.split(',');
       } else {
         this.modes = [];
       }
--- a/accessible/jsat/OutputGenerator.jsm
+++ b/accessible/jsat/OutputGenerator.jsm
@@ -1,60 +1,54 @@
 /* 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/. */
 
+/* global Components, XPCOMUtils, Utils, PrefCache, States, Roles, Logger */
+/* exported UtteranceGenerator, BrailleGenerator */
+
 'use strict';
 
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-const Cr = Components.results;
+const {utils: Cu, interfaces: Ci} = Components;
 
 const INCLUDE_DESC = 0x01;
 const INCLUDE_NAME = 0x02;
 const INCLUDE_VALUE = 0x04;
-const INCLUDE_CUSTOM = 0x08;
 const NAME_FROM_SUBTREE_RULE = 0x10;
 const IGNORE_EXPLICIT_NAME = 0x20;
 
 const OUTPUT_DESC_FIRST = 0;
 const OUTPUT_DESC_LAST = 1;
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, 'Utils',
+XPCOMUtils.defineLazyModuleGetter(this, 'Utils', // jshint ignore:line
   'resource://gre/modules/accessibility/Utils.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, 'PrefCache',
-  'resource://gre/modules/accessibility/Utils.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, 'Logger',
+XPCOMUtils.defineLazyModuleGetter(this, 'PrefCache', // jshint ignore:line
   'resource://gre/modules/accessibility/Utils.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, 'PluralForm',
-  'resource://gre/modules/PluralForm.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, 'Roles',
+XPCOMUtils.defineLazyModuleGetter(this, 'Logger', // jshint ignore:line
+  'resource://gre/modules/accessibility/Utils.jsm');
+XPCOMUtils.defineLazyModuleGetter(this, 'Roles', // jshint ignore:line
   'resource://gre/modules/accessibility/Constants.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, 'States',
+XPCOMUtils.defineLazyModuleGetter(this, 'States', // jshint ignore:line
   'resource://gre/modules/accessibility/Constants.jsm');
 
-this.EXPORTED_SYMBOLS = ['UtteranceGenerator', 'BrailleGenerator'];
+this.EXPORTED_SYMBOLS = ['UtteranceGenerator', 'BrailleGenerator']; // jshint ignore:line
 
-this.OutputGenerator = {
+let OutputGenerator = {
 
   defaultOutputOrder: OUTPUT_DESC_LAST,
 
   /**
    * Generates output for a PivotContext.
    * @param {PivotContext} aContext object that generates and caches
    *    context information for a given accessible and its relationship with
    *    another accessible.
-   * @return {Object} An object that neccessarily has an output property which
-   *    is an array of strings. Depending on the utterance order,
-   *    the strings describe the context for an accessible object either
+   * @return {Object} An array of speech data. Depending on the utterance order,
+   *    the data describes the context for an accessible object either
    *    starting from the accessible's ancestry or accessible's subtree.
-   *    The object may also have properties specific to the type of output
-   *    generated.
    */
   genForContext: function genForContext(aContext) {
     let output = [];
     let self = this;
     let addOutput = function addOutput(aAccessible) {
       output.push.apply(output, self.genForObject(aAccessible, aContext));
     };
     let ignoreSubtree = function ignoreSubtree(aAccessible) {
@@ -68,96 +62,99 @@ this.OutputGenerator = {
                !(nameRule & IGNORE_EXPLICIT_NAME))));
     };
 
     let contextStart = this._getContextStart(aContext);
 
     if (this.outputOrder === OUTPUT_DESC_FIRST) {
       contextStart.forEach(addOutput);
       addOutput(aContext.accessible);
-      [addOutput(node) for
-        (node of aContext.subtreeGenerator(true, ignoreSubtree))];
+      [addOutput(node) for // jshint ignore:line
+        (node of aContext.subtreeGenerator(true, ignoreSubtree))]; // jshint ignore:line
     } else {
-      [addOutput(node) for
-        (node of aContext.subtreeGenerator(false, ignoreSubtree))];
+      [addOutput(node) for // jshint ignore:line
+        (node of aContext.subtreeGenerator(false, ignoreSubtree))]; // jshint ignore:line
       addOutput(aContext.accessible);
       contextStart.reverse().forEach(addOutput);
     }
 
-    // Clean up the white space.
-    let trimmed;
-    output = [trimmed for (word of output) if (trimmed = word.trim())];
-    return {output: output};
+    return output;
   },
 
 
   /**
    * Generates output for an object.
    * @param {nsIAccessible} aAccessible accessible object to generate output
    *    for.
    * @param {PivotContext} aContext object that generates and caches
    *    context information for a given accessible and its relationship with
    *    another accessible.
-   * @return {Array} Two string array. The first string describes the object
-   *    and its state. The second string is the object's name. Whether the
-   *    object's description or it's role is included is determined by
-   *    {@link roleRuleMap}.
+   * @return {Array} A 2 element array of speech data. The first element
+   *    describes the object and its state. The second element is the object's
+   *    name. Whether the object's description or it's role is included is
+   *    determined by {@link roleRuleMap}.
    */
   genForObject: function genForObject(aAccessible, aContext) {
     let roleString = Utils.AccRetrieval.getStringRole(aAccessible.role);
     let func = this.objectOutputFunctions[
       OutputGenerator._getOutputName(roleString)] ||
       this.objectOutputFunctions.defaultFunc;
 
     let flags = this.roleRuleMap[roleString] || 0;
 
-    if (aAccessible.childCount == 0)
+    if (aAccessible.childCount === 0) {
       flags |= INCLUDE_NAME;
+    }
 
     return func.apply(this, [aAccessible, roleString,
                              Utils.getState(aAccessible), flags, aContext]);
   },
 
   /**
    * Generates output for an action performed.
    * @param {nsIAccessible} aAccessible accessible object that the action was
    *    invoked in.
    * @param {string} aActionName the name of the action, one of the keys in
    *    {@link gActionMap}.
-   * @return {Array} A one string array with the action.
+   * @return {Array} A one element array with action data.
    */
-  genForAction: function genForAction(aObject, aActionName) {},
+  genForAction: function genForAction(aObject, aActionName) {}, // jshint ignore:line
 
   /**
-   * Generates output for an announcement. Basically attempts to localize
-   * the announcement string.
+   * Generates output for an announcement.
    * @param {string} aAnnouncement unlocalized announcement.
-   * @return {Array} A one string array with the announcement.
+   * @return {Array} An announcement speech data to be localized.
    */
-  genForAnnouncement: function genForAnnouncement(aAnnouncement) {},
+  genForAnnouncement: function genForAnnouncement(aAnnouncement) {}, // jshint ignore:line
 
   /**
    * Generates output for a tab state change.
    * @param {nsIAccessible} aAccessible accessible object of the tab's attached
    *    document.
    * @param {string} aTabState the tab state name, see
    *    {@link Presenter.tabStateChanged}.
    * @return {Array} The tab state utterace.
    */
-  genForTabStateChange: function genForTabStateChange(aObject, aTabState) {},
+  genForTabStateChange: function genForTabStateChange(aObject, aTabState) {}, // jshint ignore:line
 
   /**
    * Generates output for announcing entering and leaving editing mode.
    * @param {aIsEditing} boolean true if we are in editing mode
    * @return {Array} The mode utterance
    */
-  genForEditingMode: function genForEditingMode(aIsEditing) {},
+  genForEditingMode: function genForEditingMode(aIsEditing) {}, // jshint ignore:line
+
+  _getContextStart: function getContextStart(aContext) {}, // jshint ignore:line
 
-  _getContextStart: function getContextStart(aContext) {},
-
+  /**
+   * Adds an accessible name and description to the output if available.
+   * @param {Array} aOutput Output array.
+   * @param {nsIAccessible} aAccessible current accessible object.
+   * @param {Number} aFlags output flags.
+   */
   _addName: function _addName(aOutput, aAccessible, aFlags) {
     let name;
     if ((Utils.getAttributes(aAccessible)['explicit-name'] === 'true' &&
          !(aFlags & IGNORE_EXPLICIT_NAME)) || (aFlags & INCLUDE_NAME)) {
       name = aAccessible.name;
     }
 
     let description = aAccessible.description;
@@ -168,88 +165,72 @@ this.OutputGenerator = {
       if (tmpName && (description !== tmpName)) {
         name = name || '';
         name = this.outputOrder === OUTPUT_DESC_FIRST ?
           description + ' - ' + name :
           name + ' - ' + description;
       }
     }
 
-    if (name) {
-      aOutput[this.outputOrder === OUTPUT_DESC_FIRST ?
-        'push' : 'unshift'](name);
+    if (!name || !name.trim()) {
+      return;
     }
+    aOutput[this.outputOrder === OUTPUT_DESC_FIRST ? 'push' : 'unshift'](name);
   },
 
   /**
    * Adds a landmark role to the output if available.
    * @param {Array} aOutput Output array.
    * @param {nsIAccessible} aAccessible current accessible object.
    */
   _addLandmark: function _addLandmark(aOutput, aAccessible) {
     let landmarkName = Utils.getLandmarkName(aAccessible);
     if (!landmarkName) {
       return;
     }
-
-    let landmark = Utils.stringBundle.GetStringFromName(landmarkName);
-    if (!landmark) {
-      return;
-    }
-
-    aOutput[this.outputOrder === OUTPUT_DESC_FIRST ? 'unshift' : 'push'](
-      landmark);
+    aOutput[this.outputOrder === OUTPUT_DESC_FIRST ? 'unshift' : 'push']({
+      string: landmarkName
+    });
   },
 
   /**
    * Adds an entry type attribute to the description if available.
-   * @param {Array} aDesc Description array.
+   * @param {Array} aOutput Output array.
    * @param {nsIAccessible} aAccessible current accessible object.
    * @param {String} aRoleStr aAccessible's role string.
    */
-  _addType: function _addType(aDesc, aAccessible, aRoleStr) {
+  _addType: function _addType(aOutput, aAccessible, aRoleStr) {
     if (aRoleStr !== 'entry') {
       return;
     }
 
     let typeName = Utils.getAttributes(aAccessible)['text-input-type'];
     // Ignore the the input type="text" case.
     if (!typeName || typeName === 'text') {
       return;
     }
-    typeName = 'textInputType_' + typeName;
-    try {
-      aDesc.push(Utils.stringBundle.GetStringFromName(typeName));
-    } catch (x) {
-      Logger.warning('Failed to get a string from a bundle for', typeName);
-    }
+    aOutput.push({string: 'textInputType_' + typeName});
   },
 
+  _addState: function _addState(aOutput, aState) {}, // jshint ignore:line
+
+  _addRole: function _addRole(aOutput, aRoleStr) {}, // jshint ignore:line
+
   get outputOrder() {
     if (!this._utteranceOrder) {
       this._utteranceOrder = new PrefCache('accessibility.accessfu.utterance');
     }
     return typeof this._utteranceOrder.value === 'number' ?
       this._utteranceOrder.value : this.defaultOutputOrder;
   },
 
   _getOutputName: function _getOutputName(aName) {
     return aName.replace(' ', '');
   },
 
-  _getLocalizedRole: function _getLocalizedRole(aRoleStr) {},
-
-  _getLocalizedState: function _getLocalizedState(aState) {},
-
-  _getPluralFormString: function _getPluralFormString(aString, aCount) {
-    let str = Utils.stringBundle.GetStringFromName(this._getOutputName(aString));
-    str = PluralForm.get(aCount, str);
-    return str.replace('#1', aCount);
-  },
-
   roleRuleMap: {
     'menubar': INCLUDE_DESC,
     'scrollbar': INCLUDE_DESC,
     'grip': INCLUDE_DESC,
     'alert': INCLUDE_DESC | INCLUDE_NAME,
     'menupopup': INCLUDE_DESC,
     'menuitem': INCLUDE_DESC | NAME_FROM_SUBTREE_RULE,
     'tooltip': INCLUDE_DESC | NAME_FROM_SUBTREE_RU