diff --git a/accessible/base/ARIAMap.cpp b/accessible/base/ARIAMap.cpp index 3a89cf9ed..c29d37873 100644 --- a/accessible/base/ARIAMap.cpp +++ b/accessible/base/ARIAMap.cpp @@ -347,6 +347,16 @@ static const nsRoleMapEntry sWAIRoleMaps[] = eLandmark, kNoReqStates }, + { // marquee + &nsGkAtoms::marquee, + roles::ANIMATION, + kUseMapRole, + eNoValue, + eNoAction, + eOffLiveAttr, + kGenericAccType, + kNoReqStates + }, { // math &nsGkAtoms::math, roles::FLAT_EQUATION, diff --git a/accessible/tests/mochitest/attributes/test_obj.html b/accessible/tests/mochitest/attributes/test_obj.html index 0706dd408..9e147e1d1 100644 --- a/accessible/tests/mochitest/attributes/test_obj.html +++ b/accessible/tests/mochitest/attributes/test_obj.html @@ -62,6 +62,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036 testAbsentAttrs("live3", {"live" : ""}); testAttrs("log", {"live" : "polite"}, true); testAttrs("logAssertive", {"live" : "assertive"}, true); + testAttrs("marquee", {"live" : "off"}, true); testAttrs("status", {"live" : "polite"}, true); testAttrs("timer", {"live" : "off"}, true); testAbsentAttrs("tablist", {"live" : "polite"}); @@ -71,6 +72,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036 testAttrs("live2Child", {"container-live" : "polite"}, true); testAttrs("logChild", {"container-live" : "polite"}, true); testAttrs("logAssertiveChild", {"container-live" : "assertive"}, true); + testAttrs("marqueeChild", {"container-live" : "off"}, true); testAttrs("statusChild", {"container-live" : "polite"}, true); testAttrs("timerChild", {"container-live" : "off"}, true); testAbsentAttrs("tablistChild", {"container-live" : "polite"}); @@ -78,11 +80,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036 // container-live-role object attribute testAttrs("log", {"container-live-role" : "log"}, true); testAttrs("logAssertive", {"container-live-role" : "log"}, true); + testAttrs("marquee", {"container-live-role" : "marquee"}, true); testAttrs("status", {"container-live-role" : "status"}, true); testAttrs("timer", {"container-live-role" : "timer"}, true); testAttrs("logChild", {"container-live-role" : "log"}, true); testAttrs("logAssertive", {"container-live-role" : "log"}, true); testAttrs("logAssertiveChild", {"container-live-role" : "log"}, true); + testAttrs("marqueeChild", {"container-live-role" : "marquee"}, true); testAttrs("statusChild", {"container-live-role" : "status"}, true); testAttrs("timerChild", {"container-live-role" : "timer"}, true); testAbsentAttrs("tablistChild", {"container-live-role" : "tablist"}); @@ -226,9 +230,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036
excuse
me
+
excuse
me
excuse
excuse
me
excuse
me
+
excuse
me
excuse
me
tablist
tab
excuse
me
diff --git a/accessible/tests/mochitest/role/test_aria.html b/accessible/tests/mochitest/role/test_aria.html index 482ce4327..22021fa57 100644 --- a/accessible/tests/mochitest/role/test_aria.html +++ b/accessible/tests/mochitest/role/test_aria.html @@ -41,6 +41,7 @@ testRole("aria_listbox", ROLE_LISTBOX); testRole("aria_listitem", ROLE_LISTITEM); testRole("aria_log", ROLE_TEXT); // weak role + testRole("aria_marquee", ROLE_ANIMATION); testRole("aria_math", ROLE_FLAT_EQUATION); testRole("aria_menu", ROLE_MENUPOPUP); testRole("aria_menubar", ROLE_MENUBAR); @@ -88,6 +89,9 @@ testRole("log_table", ROLE_TABLE); testRole("timer_div", ROLE_SECTION); + // other roles that are forms of "live regions" + testRole("marquee_h1", ROLE_ANIMATION); + // strong landmark testRole("application", ROLE_APPLICATION); testRole("form", ROLE_FORM); @@ -215,6 +219,7 @@ + @@ -258,6 +263,7 @@
Table based log
+

marquee

timer
diff --git a/dom/base/crashtests/1251361.html b/dom/base/crashtests/1251361.html new file mode 100644 index 000000000..57c76121f --- /dev/null +++ b/dom/base/crashtests/1251361.html @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/dom/base/crashtests/371466-1.xhtml b/dom/base/crashtests/371466-1.xhtml new file mode 100644 index 000000000..8da0b22b1 --- /dev/null +++ b/dom/base/crashtests/371466-1.xhtml @@ -0,0 +1,24 @@ + + + + + + + + + +
Foo


-
div
+marquee
diff --git a/dom/base/test/test_mutationobservers.html b/dom/base/test/test_mutationobservers.html new file mode 100644 index 000000000..021bedf1c --- /dev/null +++ b/dom/base/test/test_mutationobservers.html @@ -0,0 +1,918 @@ + + + + + + Test for Bug 641821 + + + + +Mozilla Bug 641821 +

+ +
+
+
+
+
+ + diff --git a/dom/canvas/test/webgl-conf/checkout/deqp/temp_externs/webkit_css.js b/dom/canvas/test/webgl-conf/checkout/deqp/temp_externs/webkit_css.js new file mode 100644 index 000000000..60841f8e2 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/deqp/temp_externs/webkit_css.js @@ -0,0 +1,456 @@ +/* + * Copyright 2008 The Closure Compiler Authors + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Definitions for WebKit's custom CSS properties. Copied from: + * {@link + * http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSPropertyNames.in} + * + * If you make changes to this file, notice that every property appears + * twice: once as an uppercase name and once as a lowercase name. + * WebKit allows both. The uppercase version is preferred. + * + * @externs + * @author nicksantos@google.com (Nick Santos) + */ + +/** @type {string} */ CSSProperties.prototype.WebkitAlignContent; +/** @type {string} */ CSSProperties.prototype.WebkitAlignItems; +/** @type {string} */ CSSProperties.prototype.WebkitAlignSelf; +/** @type {string} */ CSSProperties.prototype.WebkitAnimation; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationDelay; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationDirection; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationDuration; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationFillMode; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationIterationCount; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationName; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationPlayState; +/** @type {string} */ CSSProperties.prototype.WebkitAnimationTimingFunction; +/** @type {string} */ CSSProperties.prototype.WebkitAppearance; +/** @type {string} */ CSSProperties.prototype.WebkitAppRegion; +/** @type {string} */ CSSProperties.prototype.WebkitAspectRatio; +/** @type {string} */ CSSProperties.prototype.WebkitBackfaceVisibility; +/** @type {string} */ CSSProperties.prototype.WebkitBackgroundClip; +/** @type {string} */ CSSProperties.prototype.WebkitBackgroundComposite; +/** @type {string} */ CSSProperties.prototype.WebkitBackgroundOrigin; +/** @type {string} */ CSSProperties.prototype.WebkitBackgroundSize; +/** @type {string} */ CSSProperties.prototype.WebkitBinding; +/** @type {string} */ CSSProperties.prototype.WebkitBlendMode; +/** @type {string} */ CSSProperties.prototype.WebkitBorderAfter; +/** @type {string} */ CSSProperties.prototype.WebkitBorderAfterColor; +/** @type {string} */ CSSProperties.prototype.WebkitBorderAfterStyle; +/** @type {string} */ CSSProperties.prototype.WebkitBorderAfterWidth; +/** @type {string} */ CSSProperties.prototype.WebkitBorderBefore; +/** @type {string} */ CSSProperties.prototype.WebkitBorderBeforeColor; +/** @type {string} */ CSSProperties.prototype.WebkitBorderBeforeStyle; +/** @type {string} */ CSSProperties.prototype.WebkitBorderBeforeWidth; +/** @type {string} */ CSSProperties.prototype.WebkitBorderBottomLeftRadius; +/** @type {string} */ CSSProperties.prototype.WebkitBorderBottomRightRadius; +/** @type {string} */ CSSProperties.prototype.WebkitBorderEnd; +/** @type {string} */ CSSProperties.prototype.WebkitBorderEndColor; +/** @type {string} */ CSSProperties.prototype.WebkitBorderEndStyle; +/** @type {string} */ CSSProperties.prototype.WebkitBorderEndWidth; +/** @type {string} */ CSSProperties.prototype.WebkitBorderFit; +/** @type {string} */ CSSProperties.prototype.WebkitBorderHorizontalSpacing; +/** @type {string} */ CSSProperties.prototype.WebkitBorderImage; +/** @type {string} */ CSSProperties.prototype.WebkitBorderRadius; +/** @type {string} */ CSSProperties.prototype.WebkitBorderStart; +/** @type {string} */ CSSProperties.prototype.WebkitBorderStartColor; +/** @type {string} */ CSSProperties.prototype.WebkitBorderStartStyle; +/** @type {string} */ CSSProperties.prototype.WebkitBorderStartWidth; +/** @type {string} */ CSSProperties.prototype.WebkitBorderTopLeftRadius; +/** @type {string} */ CSSProperties.prototype.WebkitBorderTopRightRadius; +/** @type {string} */ CSSProperties.prototype.WebkitBorderVerticalSpacing; +/** @type {string} */ CSSProperties.prototype.WebkitBoxAlign; +/** @type {string} */ CSSProperties.prototype.WebkitBoxDecorationBreak; +/** @type {string} */ CSSProperties.prototype.WebkitBoxDirection; +/** @type {string} */ CSSProperties.prototype.WebkitBoxFlex; +/** @type {string} */ CSSProperties.prototype.WebkitBoxFlexGroup; +/** @type {string} */ CSSProperties.prototype.WebkitBoxLines; +/** @type {string} */ CSSProperties.prototype.WebkitBoxOrdinalGroup; +/** @type {string} */ CSSProperties.prototype.WebkitBoxOrient; +/** @type {string} */ CSSProperties.prototype.WebkitBoxPack; +/** @type {string} */ CSSProperties.prototype.WebkitBoxReflect; +/** @type {string} */ CSSProperties.prototype.WebkitBoxShadow; +/** @type {string} */ CSSProperties.prototype.WebkitBoxSizing; +/** @type {string} */ CSSProperties.prototype.WebkitColorCorrection; +/** @type {string} */ CSSProperties.prototype.WebkitColumnAxis; +/** @type {string} */ CSSProperties.prototype.WebkitColumnBreakAfter; +/** @type {string} */ CSSProperties.prototype.WebkitColumnBreakBefore; +/** @type {string} */ CSSProperties.prototype.WebkitColumnBreakInside; +/** @type {string} */ CSSProperties.prototype.WebkitColumnCount; +/** @type {string} */ CSSProperties.prototype.WebkitColumnGap; +/** @type {string} */ CSSProperties.prototype.WebkitColumnProgression; +/** @type {string} */ CSSProperties.prototype.WebkitColumnRule; +/** @type {string} */ CSSProperties.prototype.WebkitColumnRuleColor; +/** @type {string} */ CSSProperties.prototype.WebkitColumnRuleStyle; +/** @type {string} */ CSSProperties.prototype.WebkitColumnRuleWidth; +/** @type {string} */ CSSProperties.prototype.WebkitColumns; +/** @type {string} */ CSSProperties.prototype.WebkitColumnSpan; +/** @type {string} */ CSSProperties.prototype.WebkitColumnWidth; +/** @type {string} */ CSSProperties.prototype.WebkitDashboardRegion; +/** @type {string} */ CSSProperties.prototype.WebkitFilter; +/** @type {string} */ CSSProperties.prototype.WebkitFlex; +/** @type {string} */ CSSProperties.prototype.WebkitFlexBasis; +/** @type {string} */ CSSProperties.prototype.WebkitFlexDirection; +/** @type {string} */ CSSProperties.prototype.WebkitFlexFlow; +/** @type {string} */ CSSProperties.prototype.WebkitFlexGrow; +/** @type {string} */ CSSProperties.prototype.WebkitFlexShrink; +/** @type {string} */ CSSProperties.prototype.WebkitFlexWrap; +/** @type {string} */ CSSProperties.prototype.WebkitFlowFrom; +/** @type {string} */ CSSProperties.prototype.WebkitFlowInto; +/** @type {string} */ CSSProperties.prototype.WebkitFontSizeDelta; +/** @type {string} */ CSSProperties.prototype.WebkitFontSmoothing; +/** @type {string} */ CSSProperties.prototype.WebkitGridColumn; +/** @type {string} */ CSSProperties.prototype.WebkitGridColumns; +/** @type {string} */ CSSProperties.prototype.WebkitGridRow; +/** @type {string} */ CSSProperties.prototype.WebkitGridRows; +/** @type {string} */ CSSProperties.prototype.WebkitHighlight; +/** @type {string} */ CSSProperties.prototype.WebkitHyphenateCharacter; +/** @type {string} */ CSSProperties.prototype.WebkitHyphenateLimitAfter; +/** @type {string} */ CSSProperties.prototype.WebkitHyphenateLimitBefore; +/** @type {string} */ CSSProperties.prototype.WebkitHyphenateLimitLines; +/** @type {string} */ CSSProperties.prototype.WebkitHyphens; +/** @type {string} */ CSSProperties.prototype.WebkitJustifyContent; +/** @type {string} */ CSSProperties.prototype.WebkitLineAlign; +/** @type {string} */ CSSProperties.prototype.WebkitLineBoxContain; +/** @type {string} */ CSSProperties.prototype.WebkitLineBreak; +/** @type {string} */ CSSProperties.prototype.WebkitLineClamp; +/** @type {string} */ CSSProperties.prototype.WebkitLineGrid; +/** @type {string} */ CSSProperties.prototype.WebkitLineSnap; +/** @type {string} */ CSSProperties.prototype.WebkitLocale; +/** @type {string} */ CSSProperties.prototype.WebkitLogicalHeight; +/** @type {string} */ CSSProperties.prototype.WebkitLogicalWidth; +/** @type {string} */ CSSProperties.prototype.WebkitMarginAfter; +/** @type {string} */ CSSProperties.prototype.WebkitMarginAfterCollapse; +/** @type {string} */ CSSProperties.prototype.WebkitMarginBefore; +/** @type {string} */ CSSProperties.prototype.WebkitMarginBeforeCollapse; +/** @type {string} */ CSSProperties.prototype.WebkitMarginBottomCollapse; +/** @type {string} */ CSSProperties.prototype.WebkitMarginCollapse; +/** @type {string} */ CSSProperties.prototype.WebkitMarginEnd; +/** @type {string} */ CSSProperties.prototype.WebkitMarginStart; +/** @type {string} */ CSSProperties.prototype.WebkitMarginTopCollapse; +/** @type {string} */ CSSProperties.prototype.WebkitMarquee; +/** @type {string} */ CSSProperties.prototype.WebkitMarqueeDirection; +/** @type {string} */ CSSProperties.prototype.WebkitMarqueeIncrement; +/** @type {string} */ CSSProperties.prototype.WebkitMarqueeRepetition; +/** @type {string} */ CSSProperties.prototype.WebkitMarqueeSpeed; +/** @type {string} */ CSSProperties.prototype.WebkitMarqueeStyle; +/** @type {string} */ CSSProperties.prototype.WebkitMask; +/** @type {string} */ CSSProperties.prototype.WebkitMaskAttachment; +/** @type {string} */ CSSProperties.prototype.WebkitMaskBoxImage; +/** @type {string} */ CSSProperties.prototype.WebkitMaskBoxImageOutset; +/** @type {string} */ CSSProperties.prototype.WebkitMaskBoxImageRepeat; +/** @type {string} */ CSSProperties.prototype.WebkitMaskBoxImageSlice; +/** @type {string} */ CSSProperties.prototype.WebkitMaskBoxImageSource; +/** @type {string} */ CSSProperties.prototype.WebkitMaskBoxImageWidth; +/** @type {string} */ CSSProperties.prototype.WebkitMaskClip; +/** @type {string} */ CSSProperties.prototype.WebkitMaskComposite; +/** @type {string} */ CSSProperties.prototype.WebkitMaskImage; +/** @type {string} */ CSSProperties.prototype.WebkitMaskOrigin; +/** @type {string} */ CSSProperties.prototype.WebkitMaskPosition; +/** @type {string} */ CSSProperties.prototype.WebkitMaskPositionX; +/** @type {string} */ CSSProperties.prototype.WebkitMaskPositionY; +/** @type {string} */ CSSProperties.prototype.WebkitMaskRepeat; +/** @type {string} */ CSSProperties.prototype.WebkitMaskRepeatX; +/** @type {string} */ CSSProperties.prototype.WebkitMaskRepeatY; +/** @type {string} */ CSSProperties.prototype.WebkitMaskSize; +/** @type {string} */ +CSSProperties.prototype.WebkitMatchNearestMailBlockquoteColor; +/** @type {string} */ CSSProperties.prototype.WebkitMaxLogicalHeight; +/** @type {string} */ CSSProperties.prototype.WebkitMaxLogicalWidth; +/** @type {string} */ CSSProperties.prototype.WebkitMinLogicalHeight; +/** @type {string} */ CSSProperties.prototype.WebkitMinLogicalWidth; +/** @type {string} */ CSSProperties.prototype.WebkitNbspMode; +/** @type {string} */ CSSProperties.prototype.WebkitOrder; +/** @type {string} */ CSSProperties.prototype.WebkitOverflowScrolling; +/** @type {string} */ CSSProperties.prototype.WebkitPaddingAfter; +/** @type {string} */ CSSProperties.prototype.WebkitPaddingBefore; +/** @type {string} */ CSSProperties.prototype.WebkitPaddingEnd; +/** @type {string} */ CSSProperties.prototype.WebkitPaddingStart; +/** @type {string} */ CSSProperties.prototype.WebkitPerspective; +/** @type {string} */ CSSProperties.prototype.WebkitPerspectiveOrigin; +/** @type {string} */ CSSProperties.prototype.WebkitPerspectiveOriginX; +/** @type {string} */ CSSProperties.prototype.WebkitPerspectiveOriginY; +/** @type {string} */ CSSProperties.prototype.WebkitPrintColorAdjust; +/** @type {string} */ CSSProperties.prototype.WebkitRegionBreakAfter; +/** @type {string} */ CSSProperties.prototype.WebkitRegionBreakBefore; +/** @type {string} */ CSSProperties.prototype.WebkitRegionBreakInside; +/** @type {string} */ CSSProperties.prototype.WebkitRegionOverflow; +/** @type {string} */ CSSProperties.prototype.WebkitRtlOrdering; +/** @type {string} */ CSSProperties.prototype.WebkitRubyPosition; +/** @type {string} */ CSSProperties.prototype.WebkitShapeInside; +/** @type {string} */ CSSProperties.prototype.WebkitShapeMargin; +/** @type {string} */ CSSProperties.prototype.WebkitShapeOutside; +/** @type {string} */ CSSProperties.prototype.WebkitShapePadding; +/** @type {string} */ CSSProperties.prototype.WebkitTapHighlightColor; +/** @type {string} */ CSSProperties.prototype.WebkitTextAlignLast; +/** @type {string} */ CSSProperties.prototype.WebkitTextCombine; +/** @type {string} */ CSSProperties.prototype.WebkitTextDecorationLine; +/** @type {string} */ CSSProperties.prototype.WebkitTextDecorationsInEffect; +/** @type {string} */ CSSProperties.prototype.WebkitTextDecorationStyle; +/** @type {string} */ CSSProperties.prototype.WebkitTextEmphasis; +/** @type {string} */ CSSProperties.prototype.WebkitTextEmphasisColor; +/** @type {string} */ CSSProperties.prototype.WebkitTextEmphasisPosition; +/** @type {string} */ CSSProperties.prototype.WebkitTextEmphasisStyle; +/** @type {string} */ CSSProperties.prototype.WebkitTextFillColor; +/** @type {string} */ CSSProperties.prototype.WebkitTextOrientation; +/** @type {string} */ CSSProperties.prototype.WebkitTextSecurity; +/** @type {string} */ CSSProperties.prototype.WebkitTextSizeAdjust; +/** @type {string} */ CSSProperties.prototype.WebkitTextStroke; +/** @type {string} */ CSSProperties.prototype.WebkitTextStrokeColor; +/** @type {string} */ CSSProperties.prototype.WebkitTextStrokeWidth; +/** @type {string} */ CSSProperties.prototype.WebkitTransform; +/** @type {string} */ CSSProperties.prototype.WebkitTransformOrigin; +/** @type {string} */ CSSProperties.prototype.WebkitTransformOriginX; +/** @type {string} */ CSSProperties.prototype.WebkitTransformOriginY; +/** @type {string} */ CSSProperties.prototype.WebkitTransformOriginZ; +/** @type {string} */ CSSProperties.prototype.WebkitTransformStyle; +/** @type {string} */ CSSProperties.prototype.WebkitTransition; +/** @type {string} */ CSSProperties.prototype.WebkitTransitionDelay; +/** @type {string} */ CSSProperties.prototype.WebkitTransitionDuration; +/** @type {string} */ CSSProperties.prototype.WebkitTransitionProperty; +/** @type {string} */ CSSProperties.prototype.WebkitTransitionRepeatCount; +/** @type {string} */ CSSProperties.prototype.WebkitTransitionTimingFunction; +/** @type {string} */ CSSProperties.prototype.WebkitUserDrag; +/** @type {string} */ CSSProperties.prototype.WebkitUserModify; +/** @type {string} */ CSSProperties.prototype.WebkitUserSelect; +/** @type {string} */ CSSProperties.prototype.WebkitWrap; +/** @type {string} */ CSSProperties.prototype.WebkitWrapFlow; +/** @type {string} */ CSSProperties.prototype.WebkitWrapThrough; +/** @type {string} */ CSSProperties.prototype.WebkitWritingMode; + +// WebKit also adds bindings for the lowercase versions of these properties. +// The uppercase version is preferred. + +/** @type {string} */ CSSProperties.prototype.webkitAlignContent; +/** @type {string} */ CSSProperties.prototype.webkitAlignItems; +/** @type {string} */ CSSProperties.prototype.webkitAlignSelf; +/** @type {string} */ CSSProperties.prototype.webkitAnimation; +/** @type {string} */ CSSProperties.prototype.webkitAnimationDelay; +/** @type {string} */ CSSProperties.prototype.webkitAnimationDirection; +/** @type {string} */ CSSProperties.prototype.webkitAnimationDuration; +/** @type {string} */ CSSProperties.prototype.webkitAnimationFillMode; +/** @type {string} */ CSSProperties.prototype.webkitAnimationIterationCount; +/** @type {string} */ CSSProperties.prototype.webkitAnimationName; +/** @type {string} */ CSSProperties.prototype.webkitAnimationPlayState; +/** @type {string} */ CSSProperties.prototype.webkitAnimationTimingFunction; +/** @type {string} */ CSSProperties.prototype.webkitAppearance; +/** @type {string} */ CSSProperties.prototype.webkitAppRegion; +/** @type {string} */ CSSProperties.prototype.webkitAspectRatio; +/** @type {string} */ CSSProperties.prototype.webkitBackfaceVisibility; +/** @type {string} */ CSSProperties.prototype.webkitBackgroundClip; +/** @type {string} */ CSSProperties.prototype.webkitBackgroundComposite; +/** @type {string} */ CSSProperties.prototype.webkitBackgroundOrigin; +/** @type {string} */ CSSProperties.prototype.webkitBackgroundSize; +/** @type {string} */ CSSProperties.prototype.webkitBinding; +/** @type {string} */ CSSProperties.prototype.webkitBlendMode; +/** @type {string} */ CSSProperties.prototype.webkitBorderAfter; +/** @type {string} */ CSSProperties.prototype.webkitBorderAfterColor; +/** @type {string} */ CSSProperties.prototype.webkitBorderAfterStyle; +/** @type {string} */ CSSProperties.prototype.webkitBorderAfterWidth; +/** @type {string} */ CSSProperties.prototype.webkitBorderBefore; +/** @type {string} */ CSSProperties.prototype.webkitBorderBeforeColor; +/** @type {string} */ CSSProperties.prototype.webkitBorderBeforeStyle; +/** @type {string} */ CSSProperties.prototype.webkitBorderBeforeWidth; +/** @type {string} */ CSSProperties.prototype.webkitBorderBottomLeftRadius; +/** @type {string} */ CSSProperties.prototype.webkitBorderBottomRightRadius; +/** @type {string} */ CSSProperties.prototype.webkitBorderEnd; +/** @type {string} */ CSSProperties.prototype.webkitBorderEndColor; +/** @type {string} */ CSSProperties.prototype.webkitBorderEndStyle; +/** @type {string} */ CSSProperties.prototype.webkitBorderEndWidth; +/** @type {string} */ CSSProperties.prototype.webkitBorderFit; +/** @type {string} */ CSSProperties.prototype.webkitBorderHorizontalSpacing; +/** @type {string} */ CSSProperties.prototype.webkitBorderImage; +/** @type {string} */ CSSProperties.prototype.webkitBorderRadius; +/** @type {string} */ CSSProperties.prototype.webkitBorderStart; +/** @type {string} */ CSSProperties.prototype.webkitBorderStartColor; +/** @type {string} */ CSSProperties.prototype.webkitBorderStartStyle; +/** @type {string} */ CSSProperties.prototype.webkitBorderStartWidth; +/** @type {string} */ CSSProperties.prototype.webkitBorderTopLeftRadius; +/** @type {string} */ CSSProperties.prototype.webkitBorderTopRightRadius; +/** @type {string} */ CSSProperties.prototype.webkitBorderVerticalSpacing; +/** @type {string} */ CSSProperties.prototype.webkitBoxAlign; +/** @type {string} */ CSSProperties.prototype.webkitBoxDecorationBreak; +/** @type {string} */ CSSProperties.prototype.webkitBoxDirection; +/** @type {string} */ CSSProperties.prototype.webkitBoxFlex; +/** @type {string} */ CSSProperties.prototype.webkitBoxFlexGroup; +/** @type {string} */ CSSProperties.prototype.webkitBoxLines; +/** @type {string} */ CSSProperties.prototype.webkitBoxOrdinalGroup; +/** @type {string} */ CSSProperties.prototype.webkitBoxOrient; +/** @type {string} */ CSSProperties.prototype.webkitBoxPack; +/** @type {string} */ CSSProperties.prototype.webkitBoxReflect; +/** @type {string} */ CSSProperties.prototype.webkitBoxShadow; +/** @type {string} */ CSSProperties.prototype.webkitBoxSizing; +/** @type {string} */ CSSProperties.prototype.webkitColorCorrection; +/** @type {string} */ CSSProperties.prototype.webkitColumnAxis; +/** @type {string} */ CSSProperties.prototype.webkitColumnBreakAfter; +/** @type {string} */ CSSProperties.prototype.webkitColumnBreakBefore; +/** @type {string} */ CSSProperties.prototype.webkitColumnBreakInside; +/** @type {string} */ CSSProperties.prototype.webkitColumnCount; +/** @type {string} */ CSSProperties.prototype.webkitColumnGap; +/** @type {string} */ CSSProperties.prototype.webkitColumnProgression; +/** @type {string} */ CSSProperties.prototype.webkitColumnRule; +/** @type {string} */ CSSProperties.prototype.webkitColumnRuleColor; +/** @type {string} */ CSSProperties.prototype.webkitColumnRuleStyle; +/** @type {string} */ CSSProperties.prototype.webkitColumnRuleWidth; +/** @type {string} */ CSSProperties.prototype.webkitColumns; +/** @type {string} */ CSSProperties.prototype.webkitColumnSpan; +/** @type {string} */ CSSProperties.prototype.webkitColumnWidth; +/** @type {string} */ CSSProperties.prototype.webkitDashboardRegion; +/** @type {string} */ CSSProperties.prototype.webkitFilter; +/** @type {string} */ CSSProperties.prototype.webkitFlex; +/** @type {string} */ CSSProperties.prototype.webkitFlexBasis; +/** @type {string} */ CSSProperties.prototype.webkitFlexDirection; +/** @type {string} */ CSSProperties.prototype.webkitFlexFlow; +/** @type {string} */ CSSProperties.prototype.webkitFlexGrow; +/** @type {string} */ CSSProperties.prototype.webkitFlexShrink; +/** @type {string} */ CSSProperties.prototype.webkitFlexWrap; +/** @type {string} */ CSSProperties.prototype.webkitFlowFrom; +/** @type {string} */ CSSProperties.prototype.webkitFlowInto; +/** @type {string} */ CSSProperties.prototype.webkitFontSizeDelta; +/** @type {string} */ CSSProperties.prototype.webkitFontSmoothing; +/** @type {string} */ CSSProperties.prototype.webkitGridColumn; +/** @type {string} */ CSSProperties.prototype.webkitGridColumns; +/** @type {string} */ CSSProperties.prototype.webkitGridRow; +/** @type {string} */ CSSProperties.prototype.webkitGridRows; +/** @type {string} */ CSSProperties.prototype.webkitHighlight; +/** @type {string} */ CSSProperties.prototype.webkitHyphenateCharacter; +/** @type {string} */ CSSProperties.prototype.webkitHyphenateLimitAfter; +/** @type {string} */ CSSProperties.prototype.webkitHyphenateLimitBefore; +/** @type {string} */ CSSProperties.prototype.webkitHyphenateLimitLines; +/** @type {string} */ CSSProperties.prototype.webkitHyphens; +/** @type {string} */ CSSProperties.prototype.webkitJustifyContent; +/** @type {string} */ CSSProperties.prototype.webkitLineAlign; +/** @type {string} */ CSSProperties.prototype.webkitLineBoxContain; +/** @type {string} */ CSSProperties.prototype.webkitLineBreak; +/** @type {string} */ CSSProperties.prototype.webkitLineClamp; +/** @type {string} */ CSSProperties.prototype.webkitLineGrid; +/** @type {string} */ CSSProperties.prototype.webkitLineSnap; +/** @type {string} */ CSSProperties.prototype.webkitLocale; +/** @type {string} */ CSSProperties.prototype.webkitLogicalHeight; +/** @type {string} */ CSSProperties.prototype.webkitLogicalWidth; +/** @type {string} */ CSSProperties.prototype.webkitMarginAfter; +/** @type {string} */ CSSProperties.prototype.webkitMarginAfterCollapse; +/** @type {string} */ CSSProperties.prototype.webkitMarginBefore; +/** @type {string} */ CSSProperties.prototype.webkitMarginBeforeCollapse; +/** @type {string} */ CSSProperties.prototype.webkitMarginBottomCollapse; +/** @type {string} */ CSSProperties.prototype.webkitMarginCollapse; +/** @type {string} */ CSSProperties.prototype.webkitMarginEnd; +/** @type {string} */ CSSProperties.prototype.webkitMarginStart; +/** @type {string} */ CSSProperties.prototype.webkitMarginTopCollapse; +/** @type {string} */ CSSProperties.prototype.webkitMarquee; +/** @type {string} */ CSSProperties.prototype.webkitMarqueeDirection; +/** @type {string} */ CSSProperties.prototype.webkitMarqueeIncrement; +/** @type {string} */ CSSProperties.prototype.webkitMarqueeRepetition; +/** @type {string} */ CSSProperties.prototype.webkitMarqueeSpeed; +/** @type {string} */ CSSProperties.prototype.webkitMarqueeStyle; +/** @type {string} */ CSSProperties.prototype.webkitMask; +/** @type {string} */ CSSProperties.prototype.webkitMaskAttachment; +/** @type {string} */ CSSProperties.prototype.webkitMaskBoxImage; +/** @type {string} */ CSSProperties.prototype.webkitMaskBoxImageOutset; +/** @type {string} */ CSSProperties.prototype.webkitMaskBoxImageRepeat; +/** @type {string} */ CSSProperties.prototype.webkitMaskBoxImageSlice; +/** @type {string} */ CSSProperties.prototype.webkitMaskBoxImageSource; +/** @type {string} */ CSSProperties.prototype.webkitMaskBoxImageWidth; +/** @type {string} */ CSSProperties.prototype.webkitMaskClip; +/** @type {string} */ CSSProperties.prototype.webkitMaskComposite; +/** @type {string} */ CSSProperties.prototype.webkitMaskImage; +/** @type {string} */ CSSProperties.prototype.webkitMaskOrigin; +/** @type {string} */ CSSProperties.prototype.webkitMaskPosition; +/** @type {string} */ CSSProperties.prototype.webkitMaskPositionX; +/** @type {string} */ CSSProperties.prototype.webkitMaskPositionY; +/** @type {string} */ CSSProperties.prototype.webkitMaskRepeat; +/** @type {string} */ CSSProperties.prototype.webkitMaskRepeatX; +/** @type {string} */ CSSProperties.prototype.webkitMaskRepeatY; +/** @type {string} */ CSSProperties.prototype.webkitMaskSize; +/** @type {string} */ +CSSProperties.prototype.webkitMatchNearestMailBlockquoteColor; +/** @type {string} */ CSSProperties.prototype.webkitMaxLogicalHeight; +/** @type {string} */ CSSProperties.prototype.webkitMaxLogicalWidth; +/** @type {string} */ CSSProperties.prototype.webkitMinLogicalHeight; +/** @type {string} */ CSSProperties.prototype.webkitMinLogicalWidth; +/** @type {string} */ CSSProperties.prototype.webkitNbspMode; +/** @type {string} */ CSSProperties.prototype.webkitOrder; +/** @type {string} */ CSSProperties.prototype.webkitOverflowScrolling; +/** @type {string} */ CSSProperties.prototype.webkitPaddingAfter; +/** @type {string} */ CSSProperties.prototype.webkitPaddingBefore; +/** @type {string} */ CSSProperties.prototype.webkitPaddingEnd; +/** @type {string} */ CSSProperties.prototype.webkitPaddingStart; +/** @type {string} */ CSSProperties.prototype.webkitPerspective; +/** @type {string} */ CSSProperties.prototype.webkitPerspectiveOrigin; +/** @type {string} */ CSSProperties.prototype.webkitPerspectiveOriginX; +/** @type {string} */ CSSProperties.prototype.webkitPerspectiveOriginY; +/** @type {string} */ CSSProperties.prototype.webkitPrintColorAdjust; +/** @type {string} */ CSSProperties.prototype.webkitRegionBreakAfter; +/** @type {string} */ CSSProperties.prototype.webkitRegionBreakBefore; +/** @type {string} */ CSSProperties.prototype.webkitRegionBreakInside; +/** @type {string} */ CSSProperties.prototype.webkitRegionOverflow; +/** @type {string} */ CSSProperties.prototype.webkitRtlOrdering; +/** @type {string} */ CSSProperties.prototype.webkitRubyPosition; +/** @type {string} */ CSSProperties.prototype.webkitShapeInside; +/** @type {string} */ CSSProperties.prototype.webkitShapeMargin; +/** @type {string} */ CSSProperties.prototype.webkitShapeOutside; +/** @type {string} */ CSSProperties.prototype.webkitShapePadding; +/** @type {string} */ CSSProperties.prototype.webkitTapHighlightColor; +/** @type {string} */ CSSProperties.prototype.webkitTextAlignLast; +/** @type {string} */ CSSProperties.prototype.webkitTextCombine; +/** @type {string} */ CSSProperties.prototype.webkitTextDecorationLine; +/** @type {string} */ CSSProperties.prototype.webkitTextDecorationsInEffect; +/** @type {string} */ CSSProperties.prototype.webkitTextDecorationStyle; +/** @type {string} */ CSSProperties.prototype.webkitTextEmphasis; +/** @type {string} */ CSSProperties.prototype.webkitTextEmphasisColor; +/** @type {string} */ CSSProperties.prototype.webkitTextEmphasisPosition; +/** @type {string} */ CSSProperties.prototype.webkitTextEmphasisStyle; +/** @type {string} */ CSSProperties.prototype.webkitTextFillColor; +/** @type {string} */ CSSProperties.prototype.webkitTextOrientation; +/** @type {string} */ CSSProperties.prototype.webkitTextSecurity; +/** @type {string} */ CSSProperties.prototype.webkitTextSizeAdjust; +/** @type {string} */ CSSProperties.prototype.webkitTextStroke; +/** @type {string} */ CSSProperties.prototype.webkitTextStrokeColor; +/** @type {string} */ CSSProperties.prototype.webkitTextStrokeWidth; +/** @type {string} */ CSSProperties.prototype.webkitTransform; +/** @type {string} */ CSSProperties.prototype.webkitTransformOrigin; +/** @type {string} */ CSSProperties.prototype.webkitTransformOriginX; +/** @type {string} */ CSSProperties.prototype.webkitTransformOriginY; +/** @type {string} */ CSSProperties.prototype.webkitTransformOriginZ; +/** @type {string} */ CSSProperties.prototype.webkitTransformStyle; +/** @type {string} */ CSSProperties.prototype.webkitTransition; +/** @type {string} */ CSSProperties.prototype.webkitTransitionDelay; +/** @type {string} */ CSSProperties.prototype.webkitTransitionDuration; +/** @type {string} */ CSSProperties.prototype.webkitTransitionProperty; +/** @type {string} */ CSSProperties.prototype.webkitTransitionRepeatCount; +/** @type {string} */ CSSProperties.prototype.webkitTransitionTimingFunction; +/** @type {string} */ CSSProperties.prototype.webkitUserDrag; +/** @type {string} */ CSSProperties.prototype.webkitUserModify; +/** @type {string} */ CSSProperties.prototype.webkitUserSelect; +/** @type {string} */ CSSProperties.prototype.webkitWrap; +/** @type {string} */ CSSProperties.prototype.webkitWrapFlow; +/** @type {string} */ CSSProperties.prototype.webkitWrapThrough; +/** @type {string} */ CSSProperties.prototype.webkitWritingMode; + +/** + * @constructor + * @param {number} x + * @param {number} y + */ +function WebKitPoint(x, y) {} + +/** @type {number} */ +WebKitPoint.prototype.x; + +/** @type {number} */ +WebKitPoint.prototype.y; diff --git a/dom/html/HTMLDivElement.cpp b/dom/html/HTMLDivElement.cpp index 9a019d77c..623c9f0ee 100644 --- a/dom/html/HTMLDivElement.cpp +++ b/dom/html/HTMLDivElement.cpp @@ -33,6 +33,20 @@ HTMLDivElement::ParseAttribute(int32_t aNamespaceID, nsAttrValue& aResult) { if (aNamespaceID == kNameSpaceID_None) { + if (mNodeInfo->Equals(nsGkAtoms::marquee)) { + if ((aAttribute == nsGkAtoms::width) || + (aAttribute == nsGkAtoms::height)) { + return aResult.ParseSpecialIntValue(aValue); + } + if (aAttribute == nsGkAtoms::bgcolor) { + return aResult.ParseColor(aValue); + } + if ((aAttribute == nsGkAtoms::hspace) || + (aAttribute == nsGkAtoms::vspace)) { + return aResult.ParseIntWithBounds(aValue, 0); + } + } + if (mNodeInfo->Equals(nsGkAtoms::div) && aAttribute == nsGkAtoms::align) { return ParseDivAlignValue(aValue, aResult); @@ -51,6 +65,15 @@ HTMLDivElement::MapAttributesIntoRule(const nsMappedAttributes* aAttributes, nsGenericHTMLElement::MapCommonAttributesInto(aAttributes, aData); } +static void +MapMarqueeAttributesIntoRule(const nsMappedAttributes* aAttributes, nsRuleData* aData) +{ + nsGenericHTMLElement::MapImageMarginAttributeInto(aAttributes, aData); + nsGenericHTMLElement::MapImageSizeAttributesInto(aAttributes, aData); + nsGenericHTMLElement::MapCommonAttributesInto(aAttributes, aData); + nsGenericHTMLElement::MapBGColorInto(aAttributes, aData); +} + NS_IMETHODIMP_(bool) HTMLDivElement::IsAttributeMapped(const nsIAtom* aAttribute) const { @@ -61,6 +84,14 @@ HTMLDivElement::IsAttributeMapped(const nsIAtom* aAttribute) const }; return FindAttributeDependence(aAttribute, map); } + if (mNodeInfo->Equals(nsGkAtoms::marquee)) { + static const MappedAttributeEntry* const map[] = { + sImageMarginSizeAttributeMap, + sBackgroundColorAttributeMap, + sCommonAttributeMap + }; + return FindAttributeDependence(aAttribute, map); + } return nsGenericHTMLElement::IsAttributeMapped(aAttribute); } @@ -71,6 +102,9 @@ HTMLDivElement::GetAttributeMappingFunction() const if (mNodeInfo->Equals(nsGkAtoms::div)) { return &MapAttributesIntoRule; } + if (mNodeInfo->Equals(nsGkAtoms::marquee)) { + return &MapMarqueeAttributesIntoRule; + } return nsGenericHTMLElement::GetAttributeMappingFunction(); } diff --git a/dom/html/test/test_bug389797.html b/dom/html/test/test_bug389797.html index 373528c71..884348b12 100644 --- a/dom/html/test/test_bug389797.html +++ b/dom/html/test/test_bug389797.html @@ -168,6 +168,7 @@ HTML_TAG("listing", "Pre"); HTML_TAG("main", ""); HTML_TAG("map", "Map"); HTML_TAG("mark", ""); +HTML_TAG("marquee", "Div"); HTML_TAG("menu", "Menu"); HTML_TAG("meta", "Meta"); HTML_TAG("meter", "Meter"); diff --git a/dom/html/test/test_documentAll.html b/dom/html/test/test_documentAll.html index 9db77d2fe..ec877acec 100644 --- a/dom/html/test/test_documentAll.html +++ b/dom/html/test/test_documentAll.html @@ -117,7 +117,7 @@ var elementNames = 'input','ins','isindex','kbd','keygen','label','li','legend','link','menu', 'multicol','noscript','noframes','object','spacer','table','td','td','th', 'thead','tfoot','tr','textarea','select','option','spacer','param', - 'hr','title','hx','tt','u','ul','var','wbr','sub','sup','cite', + 'marquee','hr','title','hx','tt','u','ul','var','wbr','sub','sup','cite', 'code','q','nobr','ol','p','pre','s','samp','small','body','html','map', 'bdo','legend','listing','style','script','tbody','caption','meta', 'optgroup','button','span','strike','strong','td'].sort(); diff --git a/dom/security/test/csp/file_bug1312272.html b/dom/security/test/csp/file_bug1312272.html new file mode 100644 index 000000000..18e0e5589 --- /dev/null +++ b/dom/security/test/csp/file_bug1312272.html @@ -0,0 +1,13 @@ + + + + + + marquee inline script tests for Bug 1312272 + + +bug 1312272 + + + diff --git a/dom/security/test/csp/file_strict_dynamic_script_events_xbl.html b/dom/security/test/csp/file_strict_dynamic_script_events_xbl.html new file mode 100644 index 000000000..701ef3226 --- /dev/null +++ b/dom/security/test/csp/file_strict_dynamic_script_events_xbl.html @@ -0,0 +1,14 @@ + + + + Bug 1316826 - 'strict-dynamic' blocking DOM event handlers + + +
blocked
+ + + Bug 1316826 + + + + diff --git a/dom/security/test/csp/test_strict_dynamic.html b/dom/security/test/csp/test_strict_dynamic.html index 8f1b53f31..00e75143f 100644 --- a/dom/security/test/csp/test_strict_dynamic.html +++ b/dom/security/test/csp/test_strict_dynamic.html @@ -78,6 +78,13 @@ var tests = [ file: "file_strict_dynamic_script_events.html", policy: "script-src 'strict-dynamic' 'nonce-foo'" }, + { + // marquee is a special snowflake. Extra test for xbl things. + desc: "strict-dynamic with DOM events should be blocked (XBL)", + result: "blocked", + file: "file_strict_dynamic_script_events_xbl.html", + policy: "script-src 'strict-dynamic' 'nonce-foo'" + }, { desc: "strict-dynamic with JS URLs should be blocked", result: "blocked", diff --git a/dom/tests/browser/browser_bug396843.js b/dom/tests/browser/browser_bug396843.js index a2281d1b8..84d7e3b83 100644 --- a/dom/tests/browser/browser_bug396843.js +++ b/dom/tests/browser/browser_bug396843.js @@ -72,6 +72,7 @@ function testInDocument(doc, documentID) { HTML_TAG("link", "Link") HTML_TAG("listing", "Span") HTML_TAG("map", "Map") + HTML_TAG("marquee", "Div") HTML_TAG("menu", "Shared") HTML_TAG("meta", "Meta") HTML_TAG("multicol", "Unknown") diff --git a/dom/tests/mochitest/bugs/mochitest.ini b/dom/tests/mochitest/bugs/mochitest.ini index 6865ada88..3743c6782 100644 --- a/dom/tests/mochitest/bugs/mochitest.ini +++ b/dom/tests/mochitest/bugs/mochitest.ini @@ -145,4 +145,5 @@ skip-if = toolkit == 'android' #Windows can't change size on Android skip-if = toolkit == 'android' [test_bug1022869.html] [test_bug1112040.html] +[test_bug1160342_marquee.html] [test_bug1171215.html] diff --git a/dom/tests/mochitest/bugs/test_bug1160342_marquee.html b/dom/tests/mochitest/bugs/test_bug1160342_marquee.html new file mode 100644 index 000000000..8da13478e --- /dev/null +++ b/dom/tests/mochitest/bugs/test_bug1160342_marquee.html @@ -0,0 +1,337 @@ + + + + + Test for Bug 411103 + + + + +Mozilla Bug 1160342 +

+
+marquee +
+ +
+
+
+ + diff --git a/dom/tests/mochitest/bugs/test_bug396843.html b/dom/tests/mochitest/bugs/test_bug396843.html index 031843fd4..20dc53068 100644 --- a/dom/tests/mochitest/bugs/test_bug396843.html +++ b/dom/tests/mochitest/bugs/test_bug396843.html @@ -92,6 +92,7 @@ HTML_TAG("li", "LI") HTML_TAG("link", "Link") HTML_TAG("listing", "Span") HTML_TAG("map", "Map") +HTML_TAG("marquee", "Div") HTML_TAG("menu", "Shared") HTML_TAG("meta", "Meta") HTML_TAG("multicol", "Unknown") diff --git a/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js b/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js index c3d9a241d..50fc35163 100644 --- a/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js +++ b/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js @@ -70,6 +70,7 @@ ['main', ''], ['map', 'Map'], ['mark', ''], + ['marquee', 'Div'], ['menu', 'Menu'], ['meta', 'Meta'], ['meter', 'Meter'], diff --git a/dom/xbl/crashtests/342954-1.xhtml b/dom/xbl/crashtests/342954-1.xhtml new file mode 100644 index 000000000..dbaa15384 --- /dev/null +++ b/dom/xbl/crashtests/342954-1.xhtml @@ -0,0 +1,46 @@ + + + + + + + + + + +
+ +
+
+
+
+ + + + + + +Span + +
Marquee
+ + + + + diff --git a/dom/xbl/crashtests/342954-2-xbl.xml b/dom/xbl/crashtests/342954-2-xbl.xml new file mode 100644 index 000000000..3e73f1355 --- /dev/null +++ b/dom/xbl/crashtests/342954-2-xbl.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/dom/xbl/crashtests/342954-2.xhtml b/dom/xbl/crashtests/342954-2.xhtml new file mode 100644 index 000000000..4a250e31c --- /dev/null +++ b/dom/xbl/crashtests/342954-2.xhtml @@ -0,0 +1,29 @@ + + + + + + + +Span + +
Marquee
+ + + diff --git a/dom/xbl/crashtests/477878-1.html b/dom/xbl/crashtests/477878-1.html new file mode 100644 index 000000000..17e4002b4 --- /dev/null +++ b/dom/xbl/crashtests/477878-1.html @@ -0,0 +1,4 @@ + + + + diff --git a/editor/libeditor/HTMLEditUtils.cpp b/editor/libeditor/HTMLEditUtils.cpp index 0e95b7ce9..aa0afda98 100644 --- a/editor/libeditor/HTMLEditUtils.cpp +++ b/editor/libeditor/HTMLEditUtils.cpp @@ -686,6 +686,7 @@ static const ElementInfo kElements[eHTMLTag_userdefined] = { ELEM(main, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT), ELEM(map, true, true, GROUP_SPECIAL, GROUP_BLOCK | GROUP_MAP_CONTENT), ELEM(mark, true, true, GROUP_PHRASE, GROUP_INLINE_ELEMENT), + ELEM(marquee, false, false, GROUP_NONE, GROUP_NONE), ELEM(menu, true, true, GROUP_BLOCK, GROUP_LI | GROUP_FLOW_ELEMENT), ELEM(menuitem, false, false, GROUP_NONE, GROUP_NONE), ELEM(meta, false, false, GROUP_HEAD_CONTENT, GROUP_NONE), diff --git a/layout/base/crashtests/265027-1.html b/layout/base/crashtests/265027-1.html new file mode 100644 index 000000000..9b455da41 --- /dev/null +++ b/layout/base/crashtests/265027-1.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + +Attack of the marquees! + + diff --git a/layout/base/crashtests/265986-1.html b/layout/base/crashtests/265986-1.html new file mode 100644 index 000000000..8d4ca290f --- /dev/null +++ b/layout/base/crashtests/265986-1.html @@ -0,0 +1,10 @@ + + + + + + + +W + + diff --git a/layout/base/crashtests/265999-1.html b/layout/base/crashtests/265999-1.html new file mode 100644 index 000000000..7e6e3d416 --- /dev/null +++ b/layout/base/crashtests/265999-1.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/layout/base/crashtests/367498-2.html b/layout/base/crashtests/367498-2.html new file mode 100644 index 000000000..2c85ac0a4 --- /dev/null +++ b/layout/base/crashtests/367498-2.html @@ -0,0 +1,14 @@ + + + +
+ + + + + +
+
+ + + diff --git a/layout/base/crashtests/404491-1.html b/layout/base/crashtests/404491-1.html new file mode 100644 index 000000000..540a0f6a1 --- /dev/null +++ b/layout/base/crashtests/404491-1.html @@ -0,0 +1,5 @@ + + + + + diff --git a/layout/base/crashtests/580129-1.html b/layout/base/crashtests/580129-1.html new file mode 100644 index 000000000..228051b5a --- /dev/null +++ b/layout/base/crashtests/580129-1.html @@ -0,0 +1,19 @@ + + + + + + diff --git a/layout/base/crashtests/580494-1.html b/layout/base/crashtests/580494-1.html new file mode 100644 index 000000000..c76125f74 --- /dev/null +++ b/layout/base/crashtests/580494-1.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/layout/base/crashtests/597924-1.html b/layout/base/crashtests/597924-1.html new file mode 100644 index 000000000..d855997ee --- /dev/null +++ b/layout/base/crashtests/597924-1.html @@ -0,0 +1,16 @@ + + + + + + + diff --git a/layout/generic/crashtests/265867-1.html b/layout/generic/crashtests/265867-1.html new file mode 100644 index 000000000..e9da8c7f6 --- /dev/null +++ b/layout/generic/crashtests/265867-1.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/layout/generic/crashtests/348510-1.html b/layout/generic/crashtests/348510-1.html new file mode 100644 index 000000000..6e00e71f1 --- /dev/null +++ b/layout/generic/crashtests/348510-1.html @@ -0,0 +1,7 @@ + + + +
+
+
+aaaaaaa diff --git a/layout/generic/crashtests/348510-2.html b/layout/generic/crashtests/348510-2.html new file mode 100644 index 000000000..8f8c998cf --- /dev/null +++ b/layout/generic/crashtests/348510-2.html @@ -0,0 +1,7 @@ ++ + + +
+
+a \ No newline at end of file diff --git a/layout/generic/crashtests/363722-1.html b/layout/generic/crashtests/363722-1.html new file mode 100644 index 000000000..f83671c5a --- /dev/null +++ b/layout/generic/crashtests/363722-1.html @@ -0,0 +1,9 @@ + + + + + I am a double-marquee. + + + + diff --git a/layout/generic/crashtests/363722-2.html b/layout/generic/crashtests/363722-2.html new file mode 100644 index 000000000..1a12a227e --- /dev/null +++ b/layout/generic/crashtests/363722-2.html @@ -0,0 +1,10 @@ + + + + [inside OUTER marquee] + + [inside INNER marquee] + + + + diff --git a/layout/generic/crashtests/370866-1.xhtml b/layout/generic/crashtests/370866-1.xhtml new file mode 100644 index 000000000..dbc673cc4 --- /dev/null +++ b/layout/generic/crashtests/370866-1.xhtml @@ -0,0 +1,14 @@ + + + + + + + +
+ X +
+ + + + diff --git a/layout/generic/crashtests/379917-1.xhtml b/layout/generic/crashtests/379917-1.xhtml new file mode 100644 index 000000000..a99bd7f4a --- /dev/null +++ b/layout/generic/crashtests/379917-1.xhtml @@ -0,0 +1,35 @@ + + + + + + + +
xע +m +
+ + + diff --git a/layout/generic/crashtests/398332-3.html b/layout/generic/crashtests/398332-3.html new file mode 100644 index 000000000..991aa6d3d --- /dev/null +++ b/layout/generic/crashtests/398332-3.html @@ -0,0 +1,4 @@ +"Ë”Öqü®Û; + + + diff --git a/layout/generic/crashtests/421671.html b/layout/generic/crashtests/421671.html new file mode 100644 index 000000000..e3919e635 --- /dev/null +++ b/layout/generic/crashtests/421671.html @@ -0,0 +1,202 @@ + + + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> + +<a> +<a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<a> +<a> +<a> +<a> + +<a> +<a> + +<a> +<a> \ No newline at end of file diff --git a/layout/generic/crashtests/619021.html b/layout/generic/crashtests/619021.html new file mode 100644 index 000000000..586c0f2db --- /dev/null +++ b/layout/generic/crashtests/619021.html @@ -0,0 +1,5 @@ +<foo> <marquee> <marquee> <marquee> <marquee> <marquee> <marquee> +<foo> <marquee> <foo> <marquee> <foo> <object> <marquee> <foo> +<marquee> <marquee> <foo> <foo> <marquee> <marquee> <foo> <marquee> +<marquee> <marquee> <foo> <marquee> <foo> <foo> <marquee> <marquee> +<marquee> </marquee> <foo> <foo> <pre> diff --git a/layout/generic/crashtests/724235.html b/layout/generic/crashtests/724235.html new file mode 100644 index 000000000..7054a99f5 --- /dev/null +++ b/layout/generic/crashtests/724235.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> +<title>Testcase for bug 724235</title> +</head> + +<body onload="setTimeout(function(){m=document.getElementsByTagName('marquee')[0]; m.style.fontSize='72px'},0)"> + +<a href="#"> + +<center> + +<marquee>This is a marquee ... </marquee> + +<table> + <tr> + <td><a href="#">click me to CRASH!</a></td> + </tr> +</table> + +<iframe></iframe> + +<script>document.body.offsetHeight;</script> + +<a href="#"></a> + + +</body></html> diff --git a/layout/reftests/bidi/logicalmarquee.html b/layout/reftests/bidi/logicalmarquee.html new file mode 100644 index 000000000..cb13827de --- /dev/null +++ b/layout/reftests/bidi/logicalmarquee.html @@ -0,0 +1,11 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=iso-8859-8-i"> + <title>Marquee in Logical Hebrew</title> + </head> + + <body> + <marquee scrollamount="0" behavior="alternate" direction="right">&#x05E2;&#x05D3; &#x05E9;&#x05D9;&#x05E4;&#x05D5;&#x05D7; &#x05D4;&#x05D9;&#x05D5;&#x05DD; &#x05D5;&#x05E0;&#x05E1;&#x05D5; &#x05D4;&#x05E6;&#x05DC;&#x05D9;&#x05DC;&#x05D9;&#x05DD;</marquee> + </body> +</html> diff --git a/layout/reftests/bidi/marquee-ref.html b/layout/reftests/bidi/marquee-ref.html new file mode 100644 index 000000000..d8778dc88 --- /dev/null +++ b/layout/reftests/bidi/marquee-ref.html @@ -0,0 +1,11 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=iso-8859-8-i"> + <title>Marquee in Logical Hebrew</title> + </head> + + <body> + <div dir="rtl" align="left">&#x05E2;&#x05D3; &#x05E9;&#x05D9;&#x05E4;&#x05D5;&#x05D7; &#x05D4;&#x05D9;&#x05D5;&#x05DD; &#x05D5;&#x05E0;&#x05E1;&#x05D5; &#x05D4;&#x05E6;&#x05DC;&#x05D9;&#x05DC;&#x05D9;&#x05DD;</div> + </body> +</html> diff --git a/layout/reftests/bidi/reftest.list b/layout/reftests/bidi/reftest.list index a8e445aec..30f53d080 100644 --- a/layout/reftests/bidi/reftest.list +++ b/layout/reftests/bidi/reftest.list @@ -18,6 +18,9 @@ random-if(cocoaWidget) == bidi-006-j.html bidi-006-ref.html # bug 734313 fuzzy-if(skiaContent,1,1) == bidiSVG-04.svg bidiSVG-04-ref.svg == bidiSVG-05.svg bidiSVG-05-ref.svg random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) == bidiMirroring.svg bidiMirroring-ref.svg +fuzzy-if(Android,9,134) random-if(layersGPUAccelerated) == visualmarquee.html marquee-ref.html +fuzzy-if(Android,9,134) random-if(layersGPUAccelerated) == logicalmarquee.html marquee-ref.html +== visualmarquee.html logicalmarquee.html # test for glyph mirroring in right-to-left text == mirroring-01.html mirroring-01-ref.html # quote marks are not supposed to mirror, but Unicode 5.0 said they should, so some systems do it diff --git a/layout/reftests/bidi/visualmarquee.html b/layout/reftests/bidi/visualmarquee.html new file mode 100644 index 000000000..932fd775a --- /dev/null +++ b/layout/reftests/bidi/visualmarquee.html @@ -0,0 +1,11 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=iso-8859-8"> + <title>Marquee in Visual Hebrew</title> + </head> + + <body> + <marquee scrollamount="0" behavior="alternate" direction="right">&#x05DD;&#x05D9;&#x05DC;&#x05D9;&#x05DC;&#x05E6;&#x05D4; &#x05D5;&#x05E1;&#x05E0;&#x05D5; &#x05DD;&#x05D5;&#x05D9;&#x05D4; &#x05D7;&#x05D5;&#x05E4;&#x05D9;&#x05E9; &#x05D3;&#x05E2;</marquee> + </body> +</html> diff --git a/layout/reftests/marquee/1160342-1.html b/layout/reftests/marquee/1160342-1.html new file mode 100644 index 000000000..85e7215fb --- /dev/null +++ b/layout/reftests/marquee/1160342-1.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>Bug 1160342 - Implement marquee using mutation observers</title> +</head> +<body onload="document.getElementById('a').setAttribute('behavior', 'alternate')"> +<marquee id="a" scrollamount=0 direction=right> +This text should be visible +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/1160342-2.html b/layout/reftests/marquee/1160342-2.html new file mode 100644 index 000000000..99b288568 --- /dev/null +++ b/layout/reftests/marquee/1160342-2.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>Bug 1160342 - Implement marquee using mutation observers</title> +</head> +<body onload="document.getElementById('a').setAttribute('direction', 'right')"> +<marquee id="a" behavior=alternate scrollamount=0> +This text should be visible +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/1160342-ref.html b/layout/reftests/marquee/1160342-ref.html new file mode 100644 index 000000000..d56c90642 --- /dev/null +++ b/layout/reftests/marquee/1160342-ref.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>Bug 1160342 - Implement marquee using mutation observers</title> +</head> +<body> +<marquee id="a" behavior=alternate scrollamount=0 direction=right> +This text should be visible +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/166591-dynamic-1-ref.html b/layout/reftests/marquee/166591-dynamic-1-ref.html new file mode 100644 index 000000000..a9bed7d5f --- /dev/null +++ b/layout/reftests/marquee/166591-dynamic-1-ref.html @@ -0,0 +1,6 @@ +<html><head> +</head> +<body> +<div id="test"><marquee behavior="alternate" scrollamount="0">dynamic marquee</marquee></div> +</body> +</html> \ No newline at end of file diff --git a/layout/reftests/marquee/166591-dynamic-1.html b/layout/reftests/marquee/166591-dynamic-1.html new file mode 100644 index 000000000..278b2a37b --- /dev/null +++ b/layout/reftests/marquee/166591-dynamic-1.html @@ -0,0 +1,11 @@ +<html><head> +<script> +function init() { + document.getElementById('test').innerHTML = '<marquee behavior="alternate" scrollamount="0">dynamic marquee</marquee>'; +} +</script> +</head> +<body onload="init();"> +<div id="test"></div> +</body> +</html> \ No newline at end of file diff --git a/layout/reftests/marquee/336736-1-ref.html b/layout/reftests/marquee/336736-1-ref.html new file mode 100644 index 000000000..116e5ade2 --- /dev/null +++ b/layout/reftests/marquee/336736-1-ref.html @@ -0,0 +1,5 @@ +<html> +<body> +<div style="background: green; width: 50px">&nbsp;</div> +</body> +</html> diff --git a/layout/reftests/marquee/336736-1a.html b/layout/reftests/marquee/336736-1a.html new file mode 100644 index 000000000..fb54f3060 --- /dev/null +++ b/layout/reftests/marquee/336736-1a.html @@ -0,0 +1,13 @@ +<html> +<body dir="rtl"> +<!-- The "alternate" behavior is necessary for the + marquee text to start out on the screen. --> +<marquee + direction="right" + scrollamount="0" + behavior="alternate" +> +<div style="background: green; width: 50px">&nbsp;</div> +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/336736-1b.html b/layout/reftests/marquee/336736-1b.html new file mode 100644 index 000000000..85338167c --- /dev/null +++ b/layout/reftests/marquee/336736-1b.html @@ -0,0 +1,13 @@ +<html> +<body> +<!-- The "alternate" behavior is necessary for the + marquee text to start out on the screen. --> +<marquee + direction="right" + scrollamount="0" + behavior="alternate" +> +<div style="background: green; width: 50px">&nbsp;</div> +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/406073-1-ref.html b/layout/reftests/marquee/406073-1-ref.html new file mode 100644 index 000000000..751bb5db7 --- /dev/null +++ b/layout/reftests/marquee/406073-1-ref.html @@ -0,0 +1,11 @@ +<html class="reftest-wait"> +<body style="border:3px solid;" onload="setTimeout(doe, 0)"> +<marquee behavior="alternate" scrollamount="100"><span style="background-color: lime;">marquee</span></marquee> + <script> + function doe() { + document.getElementsByTagName('marquee')[0].stop(); + document.documentElement.className = ""; + } + </script> +</body> +</html> diff --git a/layout/reftests/marquee/406073-1.html b/layout/reftests/marquee/406073-1.html new file mode 100644 index 000000000..01787afda --- /dev/null +++ b/layout/reftests/marquee/406073-1.html @@ -0,0 +1,23 @@ +<html class="reftest-wait"> +<body style="border:3px solid;" onload="setTimeout(doe, 0)"> +<marquee behavior="alternate" scrollamount="100"><span style="background-color: lime;">marquee</span></marquee> + <script> + function doe() { + document.getElementsByTagName('marquee')[0].stop(); + document.getElementsByTagName('marquee')[0].start(); + document.getElementsByTagName('marquee')[0].stop(); + document.getElementsByTagName('marquee')[0].start(); + document.getElementsByTagName('marquee')[0].stop(); + document.getElementsByTagName('marquee')[0].start(); + document.getElementsByTagName('marquee')[0].stop(); + document.getElementsByTagName('marquee')[0].start(); + document.getElementsByTagName('marquee')[0].stop(); + document.getElementsByTagName('marquee')[0].start(); + document.getElementsByTagName('marquee')[0].stop(); + document.getElementsByTagName('marquee')[0].start(); + document.getElementsByTagName('marquee')[0].stop(); + document.documentElement.className = ""; + } + </script> +</body> +</html> diff --git a/layout/reftests/marquee/407016-2-ref.html b/layout/reftests/marquee/407016-2-ref.html new file mode 100644 index 000000000..25fee1b7d --- /dev/null +++ b/layout/reftests/marquee/407016-2-ref.html @@ -0,0 +1,5 @@ +<html> +<body> +<div style="background-color: lime; height: 50px;"></div> +</body> +</html> diff --git a/layout/reftests/marquee/407016-2.html b/layout/reftests/marquee/407016-2.html new file mode 100644 index 000000000..65e1273b9 --- /dev/null +++ b/layout/reftests/marquee/407016-2.html @@ -0,0 +1,7 @@ +<html> +<body> +<marquee scrollamount="0" style="height: 50px; background-color: lime;"> +<div style="width: 9999px;">&nbsp;</div> +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/413027-4-ref.html b/layout/reftests/marquee/413027-4-ref.html new file mode 100644 index 000000000..22fdd42e6 --- /dev/null +++ b/layout/reftests/marquee/413027-4-ref.html @@ -0,0 +1,10 @@ +<html><head> +<title>Testcase for bug 413027 - Marquee height is sized too small, clipping text vertically</title> +</head> +<body> + +<div style="background-color: lime; width: 600px; float:left;"> + <div style="margin: 100px 0px; padding-left: 2px;">text</div> +</div> + +</body></html> diff --git a/layout/reftests/marquee/413027-4.html b/layout/reftests/marquee/413027-4.html new file mode 100644 index 000000000..d57f2f121 --- /dev/null +++ b/layout/reftests/marquee/413027-4.html @@ -0,0 +1,15 @@ +<html><head> +<title>Testcase for bug 413027 - Marquee height is sized too small, clipping text vertically</title> +</head> +<body> + +<marquee scrollamount="0" behavior="alternate" direction="right" style="background-color: lime; width: 600px;"> +<div> +<!-- padding-left used to avoid risk of an antialiasing pixel that may + project to the left of the origin, causing a spurious test failure + (see bugs 476927, 475968) --> + <div style="margin: 100px 0px; padding-left: 2px;">text</div> +</div> +</marquee> + +</body></html> diff --git a/layout/reftests/marquee/425247-1-ref.html b/layout/reftests/marquee/425247-1-ref.html new file mode 100644 index 000000000..3b3a84d41 --- /dev/null +++ b/layout/reftests/marquee/425247-1-ref.html @@ -0,0 +1,9 @@ +<html><head> +<title>Bug 425247 – Marquee with uppercase UP or DOWN as direction doesn't work properly</title> +</head> +<body> +<marquee direction="up" bgcolor="magenta" behavior="alternate" scrollamount="0"> +<marquee bgcolor="yellow" behavior="alternate" scrollamount="0">marquee up</marquee> +</marquee> +</body> +</html> \ No newline at end of file diff --git a/layout/reftests/marquee/425247-1.html b/layout/reftests/marquee/425247-1.html new file mode 100644 index 000000000..dfa5021c4 --- /dev/null +++ b/layout/reftests/marquee/425247-1.html @@ -0,0 +1,9 @@ +<html><head> +<title>Bug 425247 – Marquee with uppercase UP or DOWN as direction doesn't work properly</title> +</head> +<body> +<MARQUEE DIRECTION=UP BGCOLOR=MAGENTA BEHAVIOR=ALTERNATE SCROLLAMOUNT=0> +<MARQUEE BGCOLOR=YELLOW BEHAVIOR=ALTERNATE SCROLLAMOUNT=0>marquee up</MARQUEE> +</MARQUEE> +</body> +</html> \ No newline at end of file diff --git a/layout/reftests/marquee/425247-2-ref.html b/layout/reftests/marquee/425247-2-ref.html new file mode 100644 index 000000000..564d74979 --- /dev/null +++ b/layout/reftests/marquee/425247-2-ref.html @@ -0,0 +1,9 @@ +<html><head> +<title>Bug 425247 – Marquee with uppercase UP or DOWN as direction doesn't work properly</title> +</head> +<body> +<marquee direction="down" bgcolor="magenta" behavior="alternate" scrollamount="0"> +<marquee bgcolor="yellow" behavior="alternate" scrollamount="0">marquee down</marquee> +</marquee> +</body> +</html> \ No newline at end of file diff --git a/layout/reftests/marquee/425247-2.html b/layout/reftests/marquee/425247-2.html new file mode 100644 index 000000000..4cb66b901 --- /dev/null +++ b/layout/reftests/marquee/425247-2.html @@ -0,0 +1,9 @@ +<html><head> +<title>Bug 425247 – Marquee with uppercase UP or DOWN as direction doesn't work properly</title> +</head> +<body> +<MARQUEE DIRECTION=DOWN BGCOLOR=MAGENTA BEHAVIOR=ALTERNATE SCROLLAMOUNT=0> +<MARQUEE BGCOLOR=YELLOW BEHAVIOR=ALTERNATE SCROLLAMOUNT=0>marquee down</MARQUEE> +</MARQUEE> +</body> +</html> \ No newline at end of file diff --git a/layout/reftests/marquee/429849-1-ref.html b/layout/reftests/marquee/429849-1-ref.html new file mode 100644 index 000000000..3b9c3166e --- /dev/null +++ b/layout/reftests/marquee/429849-1-ref.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>Bug 429849 – marquee text not on one line , part of this line on top and second part on bottom</title> +</head> +<body> +<marquee behavior=alternate scrollamount=0 direction=right> +This text should be on one line +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/429849-1.html b/layout/reftests/marquee/429849-1.html new file mode 100644 index 000000000..6b1757fd0 --- /dev/null +++ b/layout/reftests/marquee/429849-1.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>Bug 429849 – marquee text not on one line , part of this line on top and second part on bottom</title> +</head> +<body> +<marquee behavior=alternate scrollamount=0 direction=right> +This text <script>document.body.offsetHeight;</script>should be on one line +</marquee> +</body> +</html> diff --git a/layout/reftests/marquee/reftest-stylo.list b/layout/reftests/marquee/reftest-stylo.list new file mode 100644 index 000000000..26c77acf9 --- /dev/null +++ b/layout/reftests/marquee/reftest-stylo.list @@ -0,0 +1,16 @@ +# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing +random-if((B2G&&browserIsRemote)||Mulet) == 166591-dynamic-1.html 166591-dynamic-1.html +# Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G) fuzzy-if(Android,8,50) == 336736-1a.html 336736-1a.html +# Bug 1168747 for random b2g timeouts +skip-if(B2G) fuzzy-if(Android,8,50) == 336736-1b.html 336736-1b.html +# Bug 1168747 for random b2g timeouts +== 406073-1.html 406073-1.html +== 407016-2.html 407016-2.html +fuzzy-if(Android,8,220) == 413027-4.html 413027-4.html +fuzzy-if(Android,8,30) == 425247-1.html 425247-1.html +fuzzy-if(Android,8,30) == 425247-2.html 425247-2.html +random == 429849-1.html 429849-1.html +# bug 432288 +== 1160342-1.html 1160342-1.html +== 1160342-2.html 1160342-2.html diff --git a/layout/reftests/marquee/reftest.list b/layout/reftests/marquee/reftest.list new file mode 100644 index 000000000..f033b4634 --- /dev/null +++ b/layout/reftests/marquee/reftest.list @@ -0,0 +1,11 @@ +== 166591-dynamic-1.html 166591-dynamic-1-ref.html +fuzzy-if(Android,8,50) == 336736-1a.html 336736-1-ref.html +fuzzy-if(Android,8,50) == 336736-1b.html 336736-1-ref.html +== 406073-1.html 406073-1-ref.html +== 407016-2.html 407016-2-ref.html +fuzzy-if(Android,8,220) == 413027-4.html 413027-4-ref.html +fuzzy-if(Android,8,30) == 425247-1.html 425247-1-ref.html +fuzzy-if(Android,8,30) == 425247-2.html 425247-2-ref.html +random == 429849-1.html 429849-1-ref.html # bug 432288 +== 1160342-1.html 1160342-ref.html +== 1160342-2.html 1160342-ref.html diff --git a/layout/reftests/moz.build b/layout/reftests/moz.build index 6a59cb097..b660b33f1 100644 --- a/layout/reftests/moz.build +++ b/layout/reftests/moz.build @@ -200,6 +200,8 @@ with Files('list-item/**'): BUG_COMPONENT = ('Core', 'Layout: Block and Inline') with Files('margin-collapsing/**'): BUG_COMPONENT = ('Core', 'Layout: Block and Inline') +with Files('marquee/**'): + BUG_COMPONENT = ('Core', 'CSS Parsing and Computation') with Files('mathml/**'): BUG_COMPONENT = ('Core', 'MathML') with Files('native-theme/**'): diff --git a/layout/reftests/reftest.list b/layout/reftests/reftest.list index 15840f38e..c94b9524c 100644 --- a/layout/reftests/reftest.list +++ b/layout/reftests/reftest.list @@ -247,6 +247,9 @@ include mathml/reftest.list # margin-collapsing include margin-collapsing/reftest.list +# marquee/ +include marquee/reftest.list + # native-theme/ include native-theme/reftest.list diff --git a/layout/reftests/writing-mode/reftest.list b/layout/reftests/writing-mode/reftest.list index ac1b68032..24e262e96 100644 --- a/layout/reftests/writing-mode/reftest.list +++ b/layout/reftests/writing-mode/reftest.list @@ -58,6 +58,8 @@ fuzzy(116,94) fuzzy-if(winWidget,135,124) HTTP(..) == 1115916-1-vertical-metrics == ua-style-sheet-border-3.html ua-style-sheet-border-3-ref.html == ua-style-sheet-border-4.html ua-style-sheet-border-4-ref.html == ua-style-sheet-border-5.html ua-style-sheet-border-5-ref.html +== ua-style-sheet-size-1.html ua-style-sheet-size-1-ref.html +== ua-style-sheet-size-2.html ua-style-sheet-size-2-ref.html == ua-style-sheet-fieldset-1.html ua-style-sheet-fieldset-1-ref.html == ua-style-sheet-textarea-1.html ua-style-sheet-textarea-1a-ref.html diff --git a/layout/reftests/writing-mode/ua-style-sheet-size-1-ref.html b/layout/reftests/writing-mode/ua-style-sheet-size-1-ref.html new file mode 100644 index 000000000..06f6d5700 --- /dev/null +++ b/layout/reftests/writing-mode/ua-style-sheet-size-1-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Test for logical margins on marquee elements in the UA style sheet</title> +<style> +.v-rl { writing-mode: vertical-rl; } +.ltr, .rtl, .v-rl { border: 1px solid blue; padding: 16px; } +marquee { background-color: yellow; color: transparent; } +.ltr marquee { width: -moz-available; height: auto; } +.rtl marquee { width: -moz-available; height: auto; } +.v-rl marquee { width: auto; height: -moz-available; } +</style> +<div class=ltr> + <marquee>A</marquee> +</div> +<div class=rtl dir=rtl> + <marquee>A</marquee> +</div> +<!-- disabled until bug 1132308 +<div class=v-rl> + <marquee>A</marquee> +</div> +--> diff --git a/layout/reftests/writing-mode/ua-style-sheet-size-1.html b/layout/reftests/writing-mode/ua-style-sheet-size-1.html new file mode 100644 index 000000000..754908501 --- /dev/null +++ b/layout/reftests/writing-mode/ua-style-sheet-size-1.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Test for logical sizes on marquee elements in the UA style sheet</title> +<style> +.v-rl { writing-mode: vertical-rl; } +.ltr, .rtl, .v-rl { border: 1px solid blue; padding: 16px; } +marquee { background-color: yellow; color: transparent; } +</style> +<div class=ltr> + <marquee>A</marquee> +</div> +<div class=rtl dir=rtl> + <marquee>A</marquee> +</div> +<!-- disabled until bug 1132308 +<div class=v-rl> + <marquee>A</marquee> +</div> +--> diff --git a/layout/reftests/writing-mode/ua-style-sheet-size-2-ref.html b/layout/reftests/writing-mode/ua-style-sheet-size-2-ref.html new file mode 100644 index 000000000..3c53326ba --- /dev/null +++ b/layout/reftests/writing-mode/ua-style-sheet-size-2-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Test for logical margins on marquee elements in the UA style sheet</title> +<style> +.v-rl { writing-mode: vertical-rl; } +.ltr, .rtl, .v-rl { border: 1px solid blue; padding: 16px; } +marquee { background-color: yellow; color: transparent; } +.ltr marquee { width: -moz-available; height: 200px; } +.rtl marquee { width: -moz-available; height: 200px; } +.v-rl marquee { width: 200px; height: -moz-available; } +</style> +<div class=ltr> + <marquee direction=down>A</marquee> +</div> +<div class=rtl dir=rtl> + <marquee direction=down>A</marquee> +</div> +<!-- disabled until bug 1132308 +<div class=v-rl> + <marquee direction=down>A</marquee> +</div> +--> diff --git a/layout/reftests/writing-mode/ua-style-sheet-size-2.html b/layout/reftests/writing-mode/ua-style-sheet-size-2.html new file mode 100644 index 000000000..1c0be6f4b --- /dev/null +++ b/layout/reftests/writing-mode/ua-style-sheet-size-2.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Test for logical sizes on marquee elements in the UA style sheet</title> +<style> +.v-rl { writing-mode: vertical-rl; } +.ltr, .rtl, .v-rl { border: 1px solid blue; padding: 16px; } +marquee { background-color: yellow; color: transparent; } +</style> +<div class=ltr> + <marquee direction=down>A</marquee> +</div> +<div class=rtl dir=rtl> + <marquee direction=down>A</marquee> +</div> +<!-- disabled until bug 1132308 +<div class=v-rl> + <marquee direction=down>A</marquee> +</div> +--> diff --git a/layout/style/contenteditable.css b/layout/style/contenteditable.css index 6d569f75e..c550bc7c9 100644 --- a/layout/style/contenteditable.css +++ b/layout/style/contenteditable.css @@ -80,6 +80,15 @@ input[contenteditable="true"][type="file"] { -moz-user-focus: none !important; } +/* emulation of non-standard HTML <marquee> tag */ +marquee:-moz-read-write { + -moz-binding: url('chrome://xbl-marquee/content/xbl-marquee.xml#marquee-horizontal-editable'); +} + +marquee[direction="up"]:-moz-read-write, marquee[direction="down"]:-moz-read-write { + -moz-binding: url('chrome://xbl-marquee/content/xbl-marquee.xml#marquee-vertical-editable'); +} + *|*:-moz-read-write > input[type="hidden"], input[contenteditable="true"][type="hidden"] { border: 1px solid black !important; diff --git a/layout/style/moz.build b/layout/style/moz.build index 7f08fc236..3b9dcbe1f 100644 --- a/layout/style/moz.build +++ b/layout/style/moz.build @@ -18,6 +18,7 @@ with Files('CSSRuleList.*'): with Files('nsDOM*'): BUG_COMPONENT = ('Core', 'DOM: CSS Object Model') +DIRS += ['xbl-marquee'] TEST_DIRS += ['test'] XPIDL_SOURCES += [ diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index 9866dd09e..4be237234 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -5940,6 +5940,8 @@ CSSParserImpl::ParseAttributeSelector(int32_t& aDataMask, "language", "defer", "type", + // additional attributes not in HTML4 + "direction", // marquee nullptr }; short i = 0; diff --git a/layout/style/res/html.css b/layout/style/res/html.css index 890ea6762..8593abaab 100644 --- a/layout/style/res/html.css +++ b/layout/style/res/html.css @@ -64,6 +64,7 @@ legend, li, listing, main, +marquee, menu, nav, noframes, @@ -825,9 +826,25 @@ dialog:not([open]) { display: none; } +/* emulation of non-standard HTML <marquee> tag */ +marquee { + inline-size: -moz-available; + display: inline-block; + vertical-align: text-bottom; + text-align: start; + -moz-binding: url('chrome://xbl-marquee/content/xbl-marquee.xml#marquee-horizontal'); +} + +marquee[direction="up"], marquee[direction="down"] { + -moz-binding: url('chrome://xbl-marquee/content/xbl-marquee.xml#marquee-vertical'); + block-size: 200px; +} + /* PRINT ONLY rules follow */ @media print { + marquee { -moz-binding: none; } + } /* Ruby */ diff --git a/layout/style/xbl-marquee/jar.mn b/layout/style/xbl-marquee/jar.mn new file mode 100644 index 000000000..9247cb4a1 --- /dev/null +++ b/layout/style/xbl-marquee/jar.mn @@ -0,0 +1,8 @@ +# 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/. + +toolkit.jar: +% content xbl-marquee %content/xbl-marquee/ contentaccessible=yes + content/xbl-marquee/xbl-marquee.xml + content/xbl-marquee/xbl-marquee.css diff --git a/layout/style/xbl-marquee/moz.build b/layout/style/xbl-marquee/moz.build new file mode 100644 index 000000000..eb4454d28 --- /dev/null +++ b/layout/style/xbl-marquee/moz.build @@ -0,0 +1,7 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +JAR_MANIFESTS += ['jar.mn'] \ No newline at end of file diff --git a/layout/style/xbl-marquee/xbl-marquee.css b/layout/style/xbl-marquee/xbl-marquee.css new file mode 100644 index 000000000..e6d3ee94b --- /dev/null +++ b/layout/style/xbl-marquee/xbl-marquee.css @@ -0,0 +1,12 @@ +/* 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/. */ + +/* PRINT ONLY rules */ +@media print { + + marquee > * > * { + margin: 0 !important; + padding: 0 !important; + } /* This hack is needed until bug 119078 gets fixed */ +} diff --git a/layout/style/xbl-marquee/xbl-marquee.xml b/layout/style/xbl-marquee/xbl-marquee.xml new file mode 100644 index 000000000..bb837624d --- /dev/null +++ b/layout/style/xbl-marquee/xbl-marquee.xml @@ -0,0 +1,733 @@ +<?xml version="1.0"?> +<!-- 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/. --> + +<bindings id="marqueeBindings" + xmlns="http://www.mozilla.org/xbl" + xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:xbl="http://www.mozilla.org/xbl"> + + + <binding id="marquee" bindToUntrustedContent="true"> + + <resources> + <stylesheet src="chrome://xbl-marquee/content/xbl-marquee.css"/> + </resources> + <implementation> + + <property name="scrollAmount" exposeToUntrustedContent="true"> + <getter> + <![CDATA[ + this._mutationActor(this._mutationObserver.takeRecords()); + return this._scrollAmount; + ]]> + </getter> + <setter> + <![CDATA[ + var val = parseInt(val); + if (val < 0) { + return; + } + if (isNaN(val)) { + val = 0; + } + this.setAttribute("scrollamount", val); + ]]> + </setter> + </property> + + <property name="scrollDelay" exposeToUntrustedContent="true"> + <getter> + <![CDATA[ + this._mutationActor(this._mutationObserver.takeRecords()); + var val = parseInt(this.getAttribute("scrolldelay")); + + if (val <= 0 || isNaN(val)) { + return this._scrollDelay; + } + + return val; + ]]> + </getter> + <setter> + var val = parseInt(val); + if (val > 0 ) { + this.setAttribute("scrolldelay", val); + } + </setter> + </property> + + <property name="trueSpeed" exposeToUntrustedContent="true"> + <getter> + <![CDATA[ + if (!this.hasAttribute("truespeed")) { + return false; + } + + return true; + ]]> + </getter> + <setter> + <![CDATA[ + if (val) { + this.setAttribute("truespeed", ""); + } else { + this.removeAttribute('truespeed'); + } + ]]> + </setter> + </property> + + <property name="direction" exposeToUntrustedContent="true"> + <getter> + this._mutationActor(this._mutationObserver.takeRecords()); + return this._direction; + </getter> + <setter> + <![CDATA[ + if (typeof val == 'string') { + val = val.toLowerCase(); + } else { + return; + } + if (val != 'left' && val != 'right' && val != 'up' && val != 'down') { + val = 'left'; + } + + this.setAttribute("direction", val); + ]]> + </setter> + </property> + + <property name="behavior" exposeToUntrustedContent="true"> + <getter> + this._mutationActor(this._mutationObserver.takeRecords()); + return this._behavior; + </getter> + <setter> + if (typeof val == 'string') { + val = val.toLowerCase(); + } + if (val == "alternate" || val == "slide" || val == 'scroll') { + this.setAttribute("behavior", val); + } + </setter> + </property> + + + <property name="loop" exposeToUntrustedContent="true"> + <getter> + <![CDATA[ + this._mutationActor(this._mutationObserver.takeRecords()); + return this._loop; + ]]> + </getter> + <setter> + <![CDATA[ + var val = parseInt(val); + if (val == -1 || val > 0) { + this.setAttribute("loop", val); + } + ]]> + </setter> + </property> + + + <property name="onstart" exposeToUntrustedContent="true"> + <getter> + return this.getAttribute("onstart"); + </getter> + <setter> + this._setEventListener("start", val, true); + this.setAttribute("onstart", val); + </setter> + </property> + + <property name="onfinish" exposeToUntrustedContent="true"> + <getter> + return this.getAttribute("onfinish"); + </getter> + <setter> + this._setEventListener("finish", val, true); + this.setAttribute("onfinish", val); + </setter> + </property> + + <property name="onbounce" exposeToUntrustedContent="true"> + <getter> + return this.getAttribute("onbounce"); + </getter> + <setter> + this._setEventListener("bounce", val, true); + this.setAttribute("onbounce", val); + </setter> + </property> + + <property name="outerDiv" + onget="return document.getAnonymousNodes(this)[0]" + /> + + <property name="innerDiv" + onget="return document.getAnonymousElementByAttribute(this, 'class', 'innerDiv');" + /> + + <property name="height" exposeToUntrustedContent="true" + onget="return this.getAttribute('height');" + onset="this.setAttribute('height', val);" + /> + + <property name="width" exposeToUntrustedContent="true" + onget="return this.getAttribute('width');" + onset="this.setAttribute('width', val);" + /> + + <method name="_set_scrollDelay"> + <parameter name="aValue"/> + <body> + <![CDATA[ + aValue = parseInt(aValue); + if (aValue <= 0) { + return; + } else if (isNaN(aValue)) { + this._scrollDelay = 85; + } else if (aValue < 60) { + if (this.trueSpeed == true) { + this._scrollDelay = aValue; + } else { + this._scrollDelay = 60; + } + } else { + this._scrollDelay = aValue; + } + ]]> + </body> + </method> + + <method name="_set_scrollAmount"> + <parameter name="aValue"/> + <body> + <![CDATA[ + aValue = parseInt(aValue); + if (isNaN(aValue)) { + this._scrollAmount = 6; + } else if (aValue < 0) { + return; + } else { + this._scrollAmount = aValue; + } + ]]> + </body> + </method> + + <method name="_set_behavior"> + <parameter name="aValue"/> + <body> + <![CDATA[ + if (typeof aValue == 'string') { + aValue = aValue.toLowerCase(); + } + if (aValue != 'alternate' && aValue != 'slide' && aValue != 'scroll') { + this._behavior = 'scroll'; + } else { + this._behavior = aValue; + } + ]]> + </body> + </method> + + <method name="_set_direction"> + <parameter name="aValue"/> + <body> + <![CDATA[ + if (typeof aValue == 'string') { + aValue = aValue.toLowerCase(); + } + if (aValue != 'left' && aValue != 'right' && aValue != 'up' && aValue != 'down') { + aValue = 'left'; + } + + if (aValue != this._direction) { + this.startNewDirection = true; + } + this._direction = aValue; + ]]> + </body> + </method> + + <method name="_set_loop"> + <parameter name="aValue"/> + <body> + <![CDATA[ + var aValue = parseInt(aValue); + if (aValue == 0) { + return; + } + if (isNaN(aValue) || aValue <= -1) { + aValue = -1; + } + this._loop = aValue; + ]]> + </body> + </method> + + <method name="_setEventListener"> + <parameter name="aName"/> + <parameter name="aValue"/> + <parameter name="aIgnoreNextCall"/> + <body> + <![CDATA[ + // _setEventListener is only used for setting the attribute event + // handlers, which we want to ignore if our document is sandboxed + // without the allow-scripts keyword. + if (document.hasScriptsBlockedBySandbox) { + return true; + } + + // attribute event handlers should only be added if the + // document's CSP allows it. + if (!document.inlineScriptAllowedByCSP) { + return true; + } + + if (this._ignoreNextCall) { + return this._ignoreNextCall = false; + } + + if (aIgnoreNextCall) { + this._ignoreNextCall = true; + } + + if (typeof this["_on" + aName] == 'function') { + this.removeEventListener(aName, this["_on" + aName], false); + } + + switch (typeof aValue) + { + case "function": + this["_on" + aName] = aValue; + this.addEventListener(aName, this["_on" + aName], false); + break; + + case "string": + if (!aIgnoreNextCall) { + try { + // Function Xrays make this simple and safe. \o/ + this["_on" + aName] = new window.Function("event", aValue); + } + catch(e) { + return false; + } + this.addEventListener(aName, this["_on" + aName], false); + } + else { + this["_on" + aName] = aValue; + } + break; + + case "object": + this["_on" + aName] = aValue; + break; + + default: + this._ignoreNextCall = false; + throw new Error("Invalid argument for Marquee::on" + aName); + } + return true; + ]]> + </body> + </method> + + <method name="_fireEvent"> + <parameter name="aName"/> + <parameter name="aBubbles"/> + <parameter name="aCancelable"/> + <body> + <![CDATA[ + var e = document.createEvent("Events"); + e.initEvent(aName, aBubbles, aCancelable); + this.dispatchEvent(e); + ]]> + </body> + </method> + + <method name="start" exposeToUntrustedContent="true"> + <body> + <![CDATA[ + if (this.runId == 0) { + var myThis = this; + var lambda = function myTimeOutFunction(){myThis._doMove(false);} + this.runId = window.setTimeout(lambda, this._scrollDelay - this._deltaStartStop); + this._deltaStartStop = 0; + } + ]]> + </body> + </method> + + <method name="stop" exposeToUntrustedContent="true"> + <body> + <![CDATA[ + if (this.runId != 0) { + this._deltaStartStop = Date.now()- this._lastMoveDate; + clearTimeout(this.runId); + } + + this.runId = 0; + ]]> + </body> + </method> + + <method name="_doMove"> + <parameter name="aResetPosition"/> + <body> + <![CDATA[ + this._lastMoveDate = Date.now(); + + //startNewDirection is true at first load and whenever the direction is changed + if (this.startNewDirection) { + this.startNewDirection = false; //we only want this to run once every scroll direction change + + var corrvalue = 0; + + switch (this._direction) + { + case "up": + var height = document.defaultView.getComputedStyle(this, "").height; + this.outerDiv.style.height = height; + if (this.originalHeight > this.outerDiv.offsetHeight) { + corrvalue = this.originalHeight - this.outerDiv.offsetHeight; + } + this.innerDiv.style.padding = height + " 0"; + this.dirsign = 1; + this.startAt = (this._behavior == 'alternate') ? (this.originalHeight - corrvalue) : 0; + this.stopAt = (this._behavior == 'alternate' || this._behavior == 'slide') ? + (parseInt(height) + corrvalue) : (this.originalHeight + parseInt(height)); + break; + + case "down": + var height = document.defaultView.getComputedStyle(this, "").height; + this.outerDiv.style.height = height; + if (this.originalHeight > this.outerDiv.offsetHeight) { + corrvalue = this.originalHeight - this.outerDiv.offsetHeight; + } + this.innerDiv.style.padding = height + " 0"; + this.dirsign = -1; + this.startAt = (this._behavior == 'alternate') ? + (parseInt(height) + corrvalue) : (this.originalHeight + parseInt(height)); + this.stopAt = (this._behavior == 'alternate' || this._behavior == 'slide') ? + (this.originalHeight - corrvalue) : 0; + break; + + case "right": + if (this.innerDiv.offsetWidth > this.outerDiv.offsetWidth) { + corrvalue = this.innerDiv.offsetWidth - this.outerDiv.offsetWidth; + } + this.dirsign = -1; + this.stopAt = (this._behavior == 'alternate' || this._behavior == 'slide') ? + (this.innerDiv.offsetWidth - corrvalue) : 0; + this.startAt = this.outerDiv.offsetWidth + ((this._behavior == 'alternate') ? + corrvalue : (this.innerDiv.offsetWidth + this.stopAt)); + break; + + case "left": + default: + if (this.innerDiv.offsetWidth > this.outerDiv.offsetWidth) { + corrvalue = this.innerDiv.offsetWidth - this.outerDiv.offsetWidth; + } + this.dirsign = 1; + this.startAt = (this._behavior == 'alternate') ? (this.innerDiv.offsetWidth - corrvalue) : 0; + this.stopAt = this.outerDiv.offsetWidth + + ((this._behavior == 'alternate' || this._behavior == 'slide') ? + corrvalue : (this.innerDiv.offsetWidth + this.startAt)); + } + + if (aResetPosition) { + this.newPosition = this.startAt; + this._fireEvent("start", false, false); + } + } //end if + + this.newPosition = this.newPosition + (this.dirsign * this._scrollAmount); + + if ((this.dirsign == 1 && this.newPosition > this.stopAt) || + (this.dirsign == -1 && this.newPosition < this.stopAt)) + { + switch (this._behavior) + { + case 'alternate': + // lets start afresh + this.startNewDirection = true; + + // swap direction + const swap = {left: "right", down: "up", up: "down", right: "left"}; + this._direction = swap[this._direction]; + this.newPosition = this.stopAt; + + if ((this._direction == "up") || (this._direction == "down")) { + this.outerDiv.scrollTop = this.newPosition; + } else { + this.outerDiv.scrollLeft = this.newPosition; + } + + if (this._loop != 1) { + this._fireEvent("bounce", false, true); + } + break; + + case 'slide': + if (this._loop > 1) { + this.newPosition = this.startAt; + } + break; + + default: + this.newPosition = this.startAt; + + if ((this._direction == "up") || (this._direction == "down")) { + this.outerDiv.scrollTop = this.newPosition; + } else { + this.outerDiv.scrollLeft = this.newPosition; + } + + //dispatch start event, even when this._loop == 1, comp. with IE6 + this._fireEvent("start", false, false); + } + + if (this._loop > 1) { + this._loop--; + } else if (this._loop == 1) { + if ((this._direction == "up") || (this._direction == "down")) { + this.outerDiv.scrollTop = this.stopAt; + } else { + this.outerDiv.scrollLeft = this.stopAt; + } + this.stop(); + this._fireEvent("finish", false, true); + return; + } + } + else { + if ((this._direction == "up") || (this._direction == "down")) { + this.outerDiv.scrollTop = this.newPosition; + } else { + this.outerDiv.scrollLeft = this.newPosition; + } + } + + var myThis = this; + var lambda = function myTimeOutFunction(){myThis._doMove(false);} + this.runId = window.setTimeout(lambda, this._scrollDelay); + ]]> + </body> + </method> + + <method name="init"> + <body> + <![CDATA[ + this.stop(); + + if ((this._direction != "up") && (this._direction != "down")) { + var width = window.getComputedStyle(this, "").width; + this.innerDiv.parentNode.style.margin = '0 ' + width; + + //XXX Adding the margin sometimes causes the marquee to widen, + // see testcase from bug bug 364434: + // https://bugzilla.mozilla.org/attachment.cgi?id=249233 + // Just add a fixed width with current marquee's width for now + if (width != window.getComputedStyle(this, "").width) { + var width = window.getComputedStyle(this, "").width; + this.outerDiv.style.width = width; + this.innerDiv.parentNode.style.margin = '0 ' + width; + } + } + else { + // store the original height before we add padding + this.innerDiv.style.padding = 0; + this.originalHeight = this.innerDiv.offsetHeight; + } + + this._doMove(true); + ]]> + </body> + </method> + + <method name="_mutationActor"> + <parameter name="aMutations"/> + <body> + <![CDATA[ + while (aMutations.length > 0) { + var mutation = aMutations.shift(); + var attrName = mutation.attributeName.toLowerCase(); + var oldValue = mutation.oldValue; + var target = mutation.target; + var newValue = target.getAttribute(attrName); + + if (oldValue != newValue) { + switch (attrName) { + case "loop": + target._set_loop(newValue); + if (target.rundId == 0) { + target.start(); + } + break; + case "scrollamount": + target._set_scrollAmount(newValue); + break; + case "scrolldelay": + target._set_scrollDelay(newValue); + target.stop(); + target.start(); + break; + case "truespeed": + //needed to update target._scrollDelay + var myThis = target; + var lambda = function() {myThis._set_scrollDelay(myThis.getAttribute('scrolldelay'));} + window.setTimeout(lambda, 0); + break; + case "behavior": + target._set_behavior(newValue); + target.startNewDirection = true; + if ((oldValue == "slide" && target.newPosition == target.stopAt) || + newValue == "alternate" || newValue == "slide") { + target.stop(); + target._doMove(true); + } + break; + case "direction": + if (!newValue) { + newValue = "left"; + } + target._set_direction(newValue); + break; + case "width": + case "height": + target.startNewDirection = true; + break; + case "onstart": + target._setEventListener("start", newValue); + break; + case "onfinish": + target._setEventListener("finish", newValue); + break; + case "onbounce": + target._setEventListener("bounce", newValue); + break; + } + } + } + ]]> + </body> + </method> + + <constructor> + <![CDATA[ + // Set up state. + this._scrollAmount = 6; + this._scrollDelay = 85; + this._direction = "left"; + this._behavior = "scroll"; + this._loop = -1; + this.dirsign = 1; + this.startAt = 0; + this.stopAt = 0; + this.newPosition = 0; + this.runId = 0; + this.originalHeight = 0; + this.startNewDirection = true; + + // hack needed to fix js error, see bug 386470 + var myThis = this; + var lambda = function myScopeFunction() { if (myThis.init) myThis.init(); } + + this._set_direction(this.getAttribute('direction')); + this._set_behavior(this.getAttribute('behavior')); + this._set_scrollDelay(this.getAttribute('scrolldelay')); + this._set_scrollAmount(this.getAttribute('scrollamount')); + this._set_loop(this.getAttribute('loop')); + this._setEventListener("start", this.getAttribute("onstart")); + this._setEventListener("finish", this.getAttribute("onfinish")); + this._setEventListener("bounce", this.getAttribute("onbounce")); + this.startNewDirection = true; + + this._mutationObserver = new MutationObserver(this._mutationActor); + this._mutationObserver.observe(this, { attributes: true, + attributeOldValue: true, + attributeFilter: ['loop', 'scrollamount', 'scrolldelay', '', 'truespeed', 'behavior', + 'direction', 'width', 'height', 'onstart', 'onfinish', 'onbounce'] }); + + // init needs to be run after the page has loaded in order to calculate + // the correct height/width + if (document.readyState == "complete") { + lambda(); + } else { + window.addEventListener("load", lambda, false); + } + ]]> + </constructor> + </implementation> + + </binding> + + <binding id="marquee-horizontal" bindToUntrustedContent="true" + extends="chrome://xbl-marquee/content/xbl-marquee.xml#marquee" + inheritstyle="false"> + + <!-- White-space isn't allowed because a marquee could be + inside 'white-space: pre' --> + <content> + <html:div style="display: -moz-box; overflow: hidden; width: -moz-available;" + ><html:div style="display: -moz-box;" + ><html:div class="innerDiv" style="display: table; border-spacing: 0;" + ><html:div + ><children + /></html:div + ></html:div + ></html:div + ></html:div> + </content> + + </binding> + + <binding id="marquee-vertical" bindToUntrustedContent="true" + extends="chrome://xbl-marquee/content/xbl-marquee.xml#marquee" + inheritstyle="false"> + + <!-- White-space isn't allowed because a marquee could be + inside 'white-space: pre' --> + <content> + <html:div style="overflow: hidden; width: -moz-available;" + ><html:div class="innerDiv" + ><children + /></html:div + ></html:div> + </content> + + </binding> + + <binding id="marquee-horizontal-editable" bindToUntrustedContent="true" + inheritstyle="false"> + + <!-- White-space isn't allowed because a marquee could be + inside 'white-space: pre' --> + <content> + <html:div style="display: inline-block; overflow: auto; width: -moz-available;" + ><children + /></html:div> + </content> + + </binding> + + <binding id="marquee-vertical-editable" bindToUntrustedContent="true" + inheritstyle="false"> + + <!-- White-space isn't allowed because a marquee could be + inside 'white-space: pre' --> + <content> + <html:div style="overflow: auto; height: inherit; width: -moz-available;" + ><children/></html:div> + </content> + + </binding> + +</bindings> diff --git a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java index c888cdae1..4b87d3fde 100644 --- a/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java +++ b/parser/html/java/htmlparser/src/nu/validator/htmlparser/impl/ElementName.java @@ -1191,6 +1191,10 @@ public final class ElementName // CPPONLY: NS_NewHTMLUnknownElement, // CPPONLY: NS_NewSVGUnknownElement, TreeBuilder.OTHER); + public static final ElementName MARQUEE = new ElementName("marquee", "marquee", + // CPPONLY: NS_NewHTMLDivElement, + // CPPONLY: NS_NewSVGUnknownElement, + TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); public static final ElementName MTABLE = new ElementName("mtable", "mtable", // CPPONLY: NS_NewHTMLUnknownElement, // CPPONLY: NS_NewSVGUnknownElement, @@ -2264,18 +2268,18 @@ public final class ElementName // CPPONLY: NS_NewSVGUnknownElement, TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); private final static @NoLength ElementName[] ELEMENT_NAMES = { - AUDIO, + VKERN, LOGBASE, FIELDSET, DATA, - IMAGINARYI, + LI, CANVAS, QUOTIENT, PRE, ARTICLE, - FEFUNCG, - ARCSIN, - MUNDER, + DIALOG, + ARCTAN, + LISTENER, REALS, MROOT, MROW, @@ -2283,11 +2287,11 @@ public final class ElementName G, DD, ELLIPSE, - TABLE, - GLYPH, - OL, - KEYGEN, - ABBR, + STYLE, + COTH, + INTERVAL, + MN, + BR, NOTANUMBER, MPRESCRIPTS, CARTESIANPRODUCT, @@ -2303,16 +2307,16 @@ public final class ElementName HEAD, CONJUGATE, FRAME, - PIECE, - DIFF, - ARCSINH, - SECH, - TRACK, - ACRONYM, - CONDITION, - POLYGON, - MSUBSUP, - FILTER, + OTHERWISE, + ALTGLYPHDEF, + ARCTANH, + TH, + TBREAK, + ANIMATETRANSFORM, + CAPTION, + OPTION, + MALIGNGROUP, + FECOMPONENTTRANSFER, MUNDEROVER, SELECTOR, EXISTS, @@ -2343,26 +2347,26 @@ public final class ElementName DEGREE, FEIMAGE, IMAGE, - MSTYLE, - RULE, - TEMPLATE, - SETDIFF, - STRONG, - CSCH, - MPATH, - TEXTPATH, - MARK, - FACTORIAL, - SMALL, - MPHANTOM, - BUTTON, - FIGCAPTION, - MAIN, - SECTION, - COLGROUP, - SAMP, - CURSOR, - HEADER, + MTABLE, + PIECEWISE, + TRANSPOSE, + PARTIALDIFF, + LISTING, + ARCCOTH, + MATH, + TANH, + LINK, + CURL, + REAL, + MENUITEM, + ANIMATEMOTION, + IN, + MEDIAN, + SPAN, + VIDEO, + OPTGROUP, + CENTER, + FEGAUSSIANBLUR, METER, MLABELEDTR, TR, @@ -2424,45 +2428,45 @@ public final class ElementName FALSE, INVERSE, MODE, - NONE, - PICTURE, - STRIKE, - TIME, - VARIANCE, - GLYPHREF, - CEILING, - FESPECULARLIGHTING, - ARCCSCH, - ARCCOSH, - CLIPPATH, - MISSING_GLYPH, - PATH, - SINH, - FONT_FACE_URI, - PI, - MASK, - CSYMBOL, - HTML, - UL, - ALTGLYPHITEM, - FORM, - CN, - ANNOTATION, - CODOMAIN, - DOMAINOFAPPLICATION, - LN, - MEAN, - NOTIN, - RELN, - UNION, - TENDSTO, - HGROUP, - RP, - EQ, - BVAR, - FEFUNCR, - FLOOR, - OR, + MENCLOSE, + POLYLINE, + SOURCE, + TITLE, + TRUE, + FACTOROF, + TREF, + FEDIFFUSELIGHTING, + ARCSECH, + ALTGLYPH, + COSH, + MGLYPH, + PREFETCH, + SWITCH, + CI, + MI, + MALIGNMARK, + DL, + FORALL, + LABEL, + SYMBOL, + EM, + PARAM, + ANIMATION, + FN, + DOMAIN, + HKERN, + LAPLACIAN, + MACTION, + PATTERN, + TSPAN, + MO, + FEDISPLACEMENTMAP, + MSUP, + STOP, + ANIMATECOLOR, + HR, + FOOTER, + HANDLER, MARKER, MOVER, MERROR, @@ -2584,99 +2588,100 @@ public final class ElementName IFRAME, LINE, MSPACE, - MTABLE, - MENCLOSE, - OTHERWISE, - POLYLINE, - PIECEWISE, - SOURCE, - STYLE, - TITLE, - TRANSPOSE, - TRUE, - ALTGLYPHDEF, - FACTOROF, - PARTIALDIFF, - TREF, - DIALOG, - FEDIFFUSELIGHTING, - LISTING, - ARCSECH, - ARCTANH, - ALTGLYPH, - ARCCOTH, - COSH, - COTH, - MGLYPH, - MATH, - PREFETCH, - TH, - SWITCH, - TANH, - CI, - LI, - MI, - LINK, - MALIGNMARK, - TBREAK, - DL, - CURL, - FORALL, - INTERVAL, - LABEL, - REAL, - SYMBOL, - ANIMATETRANSFORM, - EM, - MENUITEM, - PARAM, - ARCTAN, - ANIMATION, - ANIMATEMOTION, - FN, - CAPTION, - DOMAIN, - IN, - HKERN, - MN, - LAPLACIAN, - MEDIAN, - MACTION, - OPTION, - PATTERN, - SPAN, - TSPAN, - VKERN, - MO, - VIDEO, - FEDISPLACEMENTMAP, - MALIGNGROUP, - MSUP, - OPTGROUP, - STOP, - BR, - ANIMATECOLOR, - CENTER, - HR, - FECOMPONENTTRANSFER, - FOOTER, - FEGAUSSIANBLUR, - HANDLER, - LISTENER, + MARQUEE, + MSTYLE, + NONE, + PIECE, + PICTURE, + RULE, + STRIKE, + TABLE, + TIME, + TEMPLATE, + VARIANCE, + DIFF, + GLYPHREF, + SETDIFF, + CEILING, + FEFUNCG, + FESPECULARLIGHTING, + STRONG, + ARCCSCH, + ARCSINH, + ARCCOSH, + CSCH, + CLIPPATH, + GLYPH, + MISSING_GLYPH, + MPATH, + PATH, + SECH, + SINH, + TEXTPATH, + FONT_FACE_URI, + IMAGINARYI, + PI, + MARK, + MASK, + TRACK, + CSYMBOL, + FACTORIAL, + HTML, + OL, + UL, + SMALL, + ALTGLYPHITEM, + ACRONYM, + FORM, + MPHANTOM, + CN, + ARCSIN, + ANNOTATION, + BUTTON, + CODOMAIN, + CONDITION, + DOMAINOFAPPLICATION, + FIGCAPTION, + LN, + KEYGEN, + MEAN, + MAIN, + NOTIN, + POLYGON, + RELN, + SECTION, + UNION, + AUDIO, + TENDSTO, + COLGROUP, + HGROUP, + MSUBSUP, + RP, + SAMP, + EQ, + ABBR, + BVAR, + CURSOR, + FEFUNCR, + FILTER, + FLOOR, + HEADER, + OR, + MUNDER, }; private final static int[] ELEMENT_HASHES = { - 1914900309, + 1909280949, 1753057319, 2001349704, 1681770564, - 1818700314, + 1818230786, 1982935782, 2007257240, 58773795, 1747176599, - 1783210839, - 1898130486, - 1971457766, + 1782357526, + 1897999926, + 1970938456, 1990969429, 2005181733, 2055514836, @@ -2684,11 +2689,11 @@ public final class ElementName 62390273, 1730150402, 1749395095, - 1757137429, - 1800730821, - 1870135298, - 1903302038, - 1965115924, + 1756625221, + 1798693940, + 1868641064, + 1902641154, + 1963982850, 1971981018, 1988486811, 1999745104, @@ -2704,16 +2709,16 @@ public final class ElementName 1733890180, 1748355193, 1749813541, - 1754894485, - 1765431364, - 1797544247, - 1806799156, - 1857653029, - 1881613047, - 1899272521, - 1906087319, - 1938172967, - 1967795910, + 1754634617, + 1763839627, + 1797540167, + 1805647874, + 1857622310, + 1881498736, + 1899272519, + 1905563974, + 1938171179, + 1967788867, 1971467002, 1974775352, 1984294038, @@ -2744,26 +2749,26 @@ public final class ElementName 1748642422, 1749715159, 1751288021, - 1753479494, - 1756098852, - 1757268168, - 1773295687, - 1790207270, - 1798417460, - 1803929861, - 1807599880, - 1854228692, - 1867061545, - 1874053333, - 1887743720, - 1898753862, - 1900845386, - 1904412884, - 1907661127, - 1932928296, - 1941178676, - 1966386470, - 1968836118, + 1753467414, + 1755158905, + 1757259017, + 1771722827, + 1786534215, + 1797645367, + 1803929812, + 1807501636, + 1853642948, + 1865773108, + 1873350948, + 1887579800, + 1898223949, + 1900544002, + 1904285766, + 1907435316, + 1925844629, + 1939219752, + 1966223078, + 1968053806, 1971465813, 1971703386, 1973420034, @@ -2825,45 +2830,45 @@ public final class ElementName 1749917205, 1751493207, 1753343188, - 1754031332, - 1755148615, - 1756600614, - 1757157700, - 1758044696, - 1766992520, - 1781815495, - 1783388498, - 1797368887, - 1797628983, - 1798686984, - 1803876557, - 1805502724, - 1806981428, - 1817013469, - 1820327938, - 1854245076, - 1865714391, - 1868312196, - 1873281026, - 1881288348, - 1884120164, - 1897398274, - 1898223946, - 1899170008, - 1899796819, - 1902116866, - 1904283860, - 1904946933, - 1907085604, - 1908709605, - 1925049415, - 1935549734, - 1938817026, - 1948778498, - 1965634084, - 1967760215, - 1967957189, - 1970798594, + 1753588936, + 1755076808, + 1756474198, + 1757146773, + 1757293380, + 1766632184, + 1773808452, + 1783388497, + 1797361975, + 1797585096, + 1798677556, + 1803876550, + 1805233752, + 1806806678, + 1813512194, + 1818755074, + 1854228698, + 1864368130, + 1867237670, + 1870268949, + 1874102998, + 1881669634, + 1889085973, + 1898223945, + 1898971138, + 1899694294, + 1901940917, + 1903761465, + 1904515399, + 1906135367, + 1907959605, + 1919418370, + 1934172497, + 1938173140, + 1941221172, + 1965334268, + 1967128578, + 1967795958, + 1968840263, 1971461414, 1971466997, 1971628838, @@ -2985,84 +2990,85 @@ public final class ElementName 1751386406, 1752979652, 1753319686, - 1753467414, - 1753588936, - 1754634617, - 1755076808, - 1755158905, - 1756474198, - 1756625221, - 1757146773, - 1757259017, - 1757293380, - 1763839627, - 1766632184, - 1771722827, - 1773808452, - 1782357526, - 1783388497, - 1786534215, - 1797361975, - 1797540167, - 1797585096, - 1797645367, - 1798677556, - 1798693940, - 1803876550, - 1803929812, - 1805233752, - 1805647874, - 1806806678, - 1807501636, - 1813512194, - 1818230786, - 1818755074, - 1853642948, - 1854228698, - 1857622310, - 1864368130, - 1865773108, - 1867237670, - 1868641064, - 1870268949, - 1873350948, - 1874102998, - 1881498736, - 1881669634, - 1887579800, - 1889085973, - 1897999926, - 1898223945, - 1898223949, - 1898971138, - 1899272519, - 1899694294, - 1900544002, - 1901940917, - 1902641154, - 1903761465, - 1904285766, - 1904515399, - 1905563974, - 1906135367, - 1907435316, - 1907959605, - 1909280949, - 1919418370, - 1925844629, - 1934172497, - 1938171179, - 1938173140, - 1939219752, - 1941221172, - 1963982850, - 1965334268, - 1966223078, - 1967128578, - 1967788867, - 1967795958, - 1968053806, - 1968840263, - 1970938456, + 1753362711, + 1753479494, + 1754031332, + 1754894485, + 1755148615, + 1756098852, + 1756600614, + 1757137429, + 1757157700, + 1757268168, + 1758044696, + 1765431364, + 1766992520, + 1773295687, + 1781815495, + 1783210839, + 1783388498, + 1790207270, + 1797368887, + 1797544247, + 1797628983, + 1798417460, + 1798686984, + 1800730821, + 1803876557, + 1803929861, + 1805502724, + 1806799156, + 1806981428, + 1807599880, + 1817013469, + 1818700314, + 1820327938, + 1854228692, + 1854245076, + 1857653029, + 1865714391, + 1867061545, + 1868312196, + 1870135298, + 1873281026, + 1874053333, + 1881288348, + 1881613047, + 1884120164, + 1887743720, + 1897398274, + 1898130486, + 1898223946, + 1898753862, + 1899170008, + 1899272521, + 1899796819, + 1900845386, + 1902116866, + 1903302038, + 1904283860, + 1904412884, + 1904946933, + 1906087319, + 1907085604, + 1907661127, + 1908709605, + 1914900309, + 1925049415, + 1932928296, + 1935549734, + 1938172967, + 1938817026, + 1941178676, + 1948778498, + 1965115924, + 1965634084, + 1966386470, + 1967760215, + 1967795910, + 1967957189, + 1968836118, + 1970798594, + 1971457766, }; } diff --git a/parser/html/nsHtml5AtomList.h b/parser/html/nsHtml5AtomList.h index bd53b5a42..a2af1cfea 100644 --- a/parser/html/nsHtml5AtomList.h +++ b/parser/html/nsHtml5AtomList.h @@ -801,6 +801,7 @@ HTML5_ATOM(inverse, "inverse") HTML5_ATOM(line, "line") HTML5_ATOM(logbase, "logbase") HTML5_ATOM(mspace, "mspace") +HTML5_ATOM(marquee, "marquee") HTML5_ATOM(mtable, "mtable") HTML5_ATOM(mstyle, "mstyle") HTML5_ATOM(menclose, "menclose") diff --git a/parser/html/nsHtml5ElementName.cpp b/parser/html/nsHtml5ElementName.cpp index af9436f08..ecdfb102d 100644 --- a/parser/html/nsHtml5ElementName.cpp +++ b/parser/html/nsHtml5ElementName.cpp @@ -217,6 +217,7 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_LINE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_LOGBASE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MSPACE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MODE = nullptr; +nsHtml5ElementName* nsHtml5ElementName::ELT_MARQUEE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MTABLE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MSTYLE = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_MENCLOSE = nullptr; @@ -486,7 +487,7 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_RUBY = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr; nsHtml5ElementName* nsHtml5ElementName::ELT_TBODY = nullptr; nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = 0; -static int32_t const ELEMENT_HASHES_DATA[] = { 1914900309, 1753057319, 2001349704, 1681770564, 1818700314, 1982935782, 2007257240, 58773795, 1747176599, 1783210839, 1898130486, 1971457766, 1990969429, 2005181733, 2055514836, 54061139, 62390273, 1730150402, 1749395095, 1757137429, 1800730821, 1870135298, 1903302038, 1965115924, 1971981018, 1988486811, 1999745104, 2002882873, 2005925890, 2008340774, 2082727685, 51965171, 57200451, 60350803, 69730305, 1703292116, 1733890180, 1748355193, 1749813541, 1754894485, 1765431364, 1797544247, 1806799156, 1857653029, 1881613047, 1899272521, 1906087319, 1938172967, 1967795910, 1971467002, 1974775352, 1984294038, 1988972590, 1998585858, 2000825752, 2001392796, 2004557976, 2005543977, 2006560839, 2008125638, 2009706573, 2068523853, 2087049448, 51434643, 52488851, 56151587, 57210387, 59826259, 60354131, 63438849, 926941186, 1686489160, 1715300574, 1732381397, 1737099991, 1748100148, 1748642422, 1749715159, 1751288021, 1753479494, 1756098852, 1757268168, 1773295687, 1790207270, 1798417460, 1803929861, 1807599880, 1854228692, 1867061545, 1874053333, 1887743720, 1898753862, 1900845386, 1904412884, 1907661127, 1932928296, 1941178676, 1966386470, 1968836118, 1971465813, 1971703386, 1973420034, 1982106678, 1983533124, 1986351224, 1988502165, 1990037800, 1991350601, 1998883894, 2000439531, 2001281328, 2001349736, 2001495140, 2003183333, 2004719812, 2005279787, 2005719336, 2006036556, 2006896969, 2007781534, 2008165414, 2008994116, 2041712436, 2060065124, 2070023911, 2085266636, 2092255447, 50910499, 51957043, 52485715, 53012355, 55110883, 56680499, 57206291, 57732851, 59768833, 60345427, 60352083, 61395251, 62973651, 67633153, 893386754, 960495618, 1682547543, 1689922072, 1713515574, 1716349149, 1731545140, 1733076167, 1736576231, 1740181637, 1747814436, 1748228205, 1748607578, 1748879564, 1749656156, 1749801286, 1749917205, 1751493207, 1753343188, 1754031332, 1755148615, 1756600614, 1757157700, 1758044696, 1766992520, 1781815495, 1783388498, 1797368887, 1797628983, 1798686984, 1803876557, 1805502724, 1806981428, 1817013469, 1820327938, 1854245076, 1865714391, 1868312196, 1873281026, 1881288348, 1884120164, 1897398274, 1898223946, 1899170008, 1899796819, 1902116866, 1904283860, 1904946933, 1907085604, 1908709605, 1925049415, 1935549734, 1938817026, 1948778498, 1965634084, 1967760215, 1967957189, 1970798594, 1971461414, 1971466997, 1971628838, 1971938532, 1973040373, 1974771450, 1976348214, 1982173479, 1983002201, 1983633431, 1986140359, 1986527234, 1988486813, 1988763672, 1989812374, 1990074116, 1990969577, 1991909525, 1998724870, 1999397992, 2000158722, 2000525512, 2000965834, 2001309869, 2001349720, 2001392795, 2001392798, 2002780162, 2003062853, 2004557973, 2004635806, 2005160150, 2005231925, 2005324101, 2005543979, 2005766372, 2006028454, 2006329158, 2006592552, 2006974466, 2007601444, 2007803172, 2008133709, 2008325940, 2008851557, 2009276567, 2021937364, 2051837468, 2055515017, 2066000646, 2068523856, 2072193862, 2083120164, 2087012585, 2091479332, 2092557349, 50908899, 50916387, 51438659, 51961587, 51965683, 52486755, 52490899, 54054451, 55104723, 55111395, 56677619, 56682579, 57205395, 57207619, 57731155, 57733651, 59244545, 59821379, 60345171, 60347747, 60351123, 60352339, 60875283, 61925907, 62450211, 62974707, 67108865, 68681729, 876609538, 910163970, 943718402, 1679960596, 1682186266, 1685703382, 1686491348, 1699324759, 1703936002, 1713736758, 1715310660, 1719741029, 1730965751, 1732069431, 1733054663, 1733372532, 1736200310, 1736576583, 1738539010, 1747048757, 1747306711, 1747838298, 1748225318, 1748346119, 1748359220, 1748621670, 1748846791, 1749272732, 1749649513, 1749673195, 1749723735, 1749813486, 1749905526, 1749932347, 1751386406, 1752979652, 1753319686, 1753467414, 1753588936, 1754634617, 1755076808, 1755158905, 1756474198, 1756625221, 1757146773, 1757259017, 1757293380, 1763839627, 1766632184, 1771722827, 1773808452, 1782357526, 1783388497, 1786534215, 1797361975, 1797540167, 1797585096, 1797645367, 1798677556, 1798693940, 1803876550, 1803929812, 1805233752, 1805647874, 1806806678, 1807501636, 1813512194, 1818230786, 1818755074, 1853642948, 1854228698, 1857622310, 1864368130, 1865773108, 1867237670, 1868641064, 1870268949, 1873350948, 1874102998, 1881498736, 1881669634, 1887579800, 1889085973, 1897999926, 1898223945, 1898223949, 1898971138, 1899272519, 1899694294, 1900544002, 1901940917, 1902641154, 1903761465, 1904285766, 1904515399, 1905563974, 1906135367, 1907435316, 1907959605, 1909280949, 1919418370, 1925844629, 1934172497, 1938171179, 1938173140, 1939219752, 1941221172, 1963982850, 1965334268, 1966223078, 1967128578, 1967788867, 1967795958, 1968053806, 1968840263, 1970938456 }; +static int32_t const ELEMENT_HASHES_DATA[] = { 1909280949, 1753057319, 2001349704, 1681770564, 1818230786, 1982935782, 2007257240, 58773795, 1747176599, 1782357526, 1897999926, 1970938456, 1990969429, 2005181733, 2055514836, 54061139, 62390273, 1730150402, 1749395095, 1756625221, 1798693940, 1868641064, 1902641154, 1963982850, 1971981018, 1988486811, 1999745104, 2002882873, 2005925890, 2008340774, 2082727685, 51965171, 57200451, 60350803, 69730305, 1703292116, 1733890180, 1748355193, 1749813541, 1754634617, 1763839627, 1797540167, 1805647874, 1857622310, 1881498736, 1899272519, 1905563974, 1938171179, 1967788867, 1971467002, 1974775352, 1984294038, 1988972590, 1998585858, 2000825752, 2001392796, 2004557976, 2005543977, 2006560839, 2008125638, 2009706573, 2068523853, 2087049448, 51434643, 52488851, 56151587, 57210387, 59826259, 60354131, 63438849, 926941186, 1686489160, 1715300574, 1732381397, 1737099991, 1748100148, 1748642422, 1749715159, 1751288021, 1753467414, 1755158905, 1757259017, 1771722827, 1786534215, 1797645367, 1803929812, 1807501636, 1853642948, 1865773108, 1873350948, 1887579800, 1898223949, 1900544002, 1904285766, 1907435316, 1925844629, 1939219752, 1966223078, 1968053806, 1971465813, 1971703386, 1973420034, 1982106678, 1983533124, 1986351224, 1988502165, 1990037800, 1991350601, 1998883894, 2000439531, 2001281328, 2001349736, 2001495140, 2003183333, 2004719812, 2005279787, 2005719336, 2006036556, 2006896969, 2007781534, 2008165414, 2008994116, 2041712436, 2060065124, 2070023911, 2085266636, 2092255447, 50910499, 51957043, 52485715, 53012355, 55110883, 56680499, 57206291, 57732851, 59768833, 60345427, 60352083, 61395251, 62973651, 67633153, 893386754, 960495618, 1682547543, 1689922072, 1713515574, 1716349149, 1731545140, 1733076167, 1736576231, 1740181637, 1747814436, 1748228205, 1748607578, 1748879564, 1749656156, 1749801286, 1749917205, 1751493207, 1753343188, 1753588936, 1755076808, 1756474198, 1757146773, 1757293380, 1766632184, 1773808452, 1783388497, 1797361975, 1797585096, 1798677556, 1803876550, 1805233752, 1806806678, 1813512194, 1818755074, 1854228698, 1864368130, 1867237670, 1870268949, 1874102998, 1881669634, 1889085973, 1898223945, 1898971138, 1899694294, 1901940917, 1903761465, 1904515399, 1906135367, 1907959605, 1919418370, 1934172497, 1938173140, 1941221172, 1965334268, 1967128578, 1967795958, 1968840263, 1971461414, 1971466997, 1971628838, 1971938532, 1973040373, 1974771450, 1976348214, 1982173479, 1983002201, 1983633431, 1986140359, 1986527234, 1988486813, 1988763672, 1989812374, 1990074116, 1990969577, 1991909525, 1998724870, 1999397992, 2000158722, 2000525512, 2000965834, 2001309869, 2001349720, 2001392795, 2001392798, 2002780162, 2003062853, 2004557973, 2004635806, 2005160150, 2005231925, 2005324101, 2005543979, 2005766372, 2006028454, 2006329158, 2006592552, 2006974466, 2007601444, 2007803172, 2008133709, 2008325940, 2008851557, 2009276567, 2021937364, 2051837468, 2055515017, 2066000646, 2068523856, 2072193862, 2083120164, 2087012585, 2091479332, 2092557349, 50908899, 50916387, 51438659, 51961587, 51965683, 52486755, 52490899, 54054451, 55104723, 55111395, 56677619, 56682579, 57205395, 57207619, 57731155, 57733651, 59244545, 59821379, 60345171, 60347747, 60351123, 60352339, 60875283, 61925907, 62450211, 62974707, 67108865, 68681729, 876609538, 910163970, 943718402, 1679960596, 1682186266, 1685703382, 1686491348, 1699324759, 1703936002, 1713736758, 1715310660, 1719741029, 1730965751, 1732069431, 1733054663, 1733372532, 1736200310, 1736576583, 1738539010, 1747048757, 1747306711, 1747838298, 1748225318, 1748346119, 1748359220, 1748621670, 1748846791, 1749272732, 1749649513, 1749673195, 1749723735, 1749813486, 1749905526, 1749932347, 1751386406, 1752979652, 1753319686, 1753362711, 1753479494, 1754031332, 1754894485, 1755148615, 1756098852, 1756600614, 1757137429, 1757157700, 1757268168, 1758044696, 1765431364, 1766992520, 1773295687, 1781815495, 1783210839, 1783388498, 1790207270, 1797368887, 1797544247, 1797628983, 1798417460, 1798686984, 1800730821, 1803876557, 1803929861, 1805502724, 1806799156, 1806981428, 1807599880, 1817013469, 1818700314, 1820327938, 1854228692, 1854245076, 1857653029, 1865714391, 1867061545, 1868312196, 1870135298, 1873281026, 1874053333, 1881288348, 1881613047, 1884120164, 1887743720, 1897398274, 1898130486, 1898223946, 1898753862, 1899170008, 1899272521, 1899796819, 1900845386, 1902116866, 1903302038, 1904283860, 1904412884, 1904946933, 1906087319, 1907085604, 1907661127, 1908709605, 1914900309, 1925049415, 1932928296, 1935549734, 1938172967, 1938817026, 1941178676, 1948778498, 1965115924, 1965634084, 1966386470, 1967760215, 1967795910, 1967957189, 1968836118, 1970798594, 1971457766 }; staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) }; void nsHtml5ElementName::initializeStatics() @@ -623,6 +624,7 @@ nsHtml5ElementName::initializeStatics() ELT_LOGBASE = new nsHtml5ElementName(nsHtml5Atoms::logbase, nsHtml5Atoms::logbase, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); ELT_MSPACE = new nsHtml5ElementName(nsHtml5Atoms::mspace, nsHtml5Atoms::mspace, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); ELT_MODE = new nsHtml5ElementName(nsHtml5Atoms::mode, nsHtml5Atoms::mode, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); + ELT_MARQUEE = new nsHtml5ElementName(nsHtml5Atoms::marquee, nsHtml5Atoms::marquee, NS_NewHTMLDivElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::MARQUEE_OR_APPLET | SPECIAL | SCOPING); ELT_MTABLE = new nsHtml5ElementName(nsHtml5Atoms::mtable, nsHtml5Atoms::mtable, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); ELT_MSTYLE = new nsHtml5ElementName(nsHtml5Atoms::mstyle, nsHtml5Atoms::mstyle, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); ELT_MENCLOSE = new nsHtml5ElementName(nsHtml5Atoms::menclose, nsHtml5Atoms::menclose, NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::OTHER); @@ -891,19 +893,19 @@ nsHtml5ElementName::initializeStatics() ELT_RUBY = new nsHtml5ElementName(nsHtml5Atoms::ruby, nsHtml5Atoms::ruby, NS_NewHTMLElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); ELT_SUMMARY = new nsHtml5ElementName(nsHtml5Atoms::summary, nsHtml5Atoms::summary, NS_NewHTMLSummaryElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); ELT_TBODY = new nsHtml5ElementName(nsHtml5Atoms::tbody, nsHtml5Atoms::tbody, NS_NewHTMLTableSectionElement, NS_NewSVGUnknownElement, nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); - ELEMENT_NAMES = new nsHtml5ElementName*[399]; - ELEMENT_NAMES[0] = ELT_AUDIO; + ELEMENT_NAMES = new nsHtml5ElementName*[400]; + ELEMENT_NAMES[0] = ELT_VKERN; ELEMENT_NAMES[1] = ELT_LOGBASE; ELEMENT_NAMES[2] = ELT_FIELDSET; ELEMENT_NAMES[3] = ELT_DATA; - ELEMENT_NAMES[4] = ELT_IMAGINARYI; + ELEMENT_NAMES[4] = ELT_LI; ELEMENT_NAMES[5] = ELT_CANVAS; ELEMENT_NAMES[6] = ELT_QUOTIENT; ELEMENT_NAMES[7] = ELT_PRE; ELEMENT_NAMES[8] = ELT_ARTICLE; - ELEMENT_NAMES[9] = ELT_FEFUNCG; - ELEMENT_NAMES[10] = ELT_ARCSIN; - ELEMENT_NAMES[11] = ELT_MUNDER; + ELEMENT_NAMES[9] = ELT_DIALOG; + ELEMENT_NAMES[10] = ELT_ARCTAN; + ELEMENT_NAMES[11] = ELT_LISTENER; ELEMENT_NAMES[12] = ELT_REALS; ELEMENT_NAMES[13] = ELT_MROOT; ELEMENT_NAMES[14] = ELT_MROW; @@ -911,11 +913,11 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[16] = ELT_G; ELEMENT_NAMES[17] = ELT_DD; ELEMENT_NAMES[18] = ELT_ELLIPSE; - ELEMENT_NAMES[19] = ELT_TABLE; - ELEMENT_NAMES[20] = ELT_GLYPH; - ELEMENT_NAMES[21] = ELT_OL; - ELEMENT_NAMES[22] = ELT_KEYGEN; - ELEMENT_NAMES[23] = ELT_ABBR; + ELEMENT_NAMES[19] = ELT_STYLE; + ELEMENT_NAMES[20] = ELT_COTH; + ELEMENT_NAMES[21] = ELT_INTERVAL; + ELEMENT_NAMES[22] = ELT_MN; + ELEMENT_NAMES[23] = ELT_BR; ELEMENT_NAMES[24] = ELT_NOTANUMBER; ELEMENT_NAMES[25] = ELT_MPRESCRIPTS; ELEMENT_NAMES[26] = ELT_CARTESIANPRODUCT; @@ -931,16 +933,16 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[36] = ELT_HEAD; ELEMENT_NAMES[37] = ELT_CONJUGATE; ELEMENT_NAMES[38] = ELT_FRAME; - ELEMENT_NAMES[39] = ELT_PIECE; - ELEMENT_NAMES[40] = ELT_DIFF; - ELEMENT_NAMES[41] = ELT_ARCSINH; - ELEMENT_NAMES[42] = ELT_SECH; - ELEMENT_NAMES[43] = ELT_TRACK; - ELEMENT_NAMES[44] = ELT_ACRONYM; - ELEMENT_NAMES[45] = ELT_CONDITION; - ELEMENT_NAMES[46] = ELT_POLYGON; - ELEMENT_NAMES[47] = ELT_MSUBSUP; - ELEMENT_NAMES[48] = ELT_FILTER; + ELEMENT_NAMES[39] = ELT_OTHERWISE; + ELEMENT_NAMES[40] = ELT_ALTGLYPHDEF; + ELEMENT_NAMES[41] = ELT_ARCTANH; + ELEMENT_NAMES[42] = ELT_TH; + ELEMENT_NAMES[43] = ELT_TBREAK; + ELEMENT_NAMES[44] = ELT_ANIMATETRANSFORM; + ELEMENT_NAMES[45] = ELT_CAPTION; + ELEMENT_NAMES[46] = ELT_OPTION; + ELEMENT_NAMES[47] = ELT_MALIGNGROUP; + ELEMENT_NAMES[48] = ELT_FECOMPONENTTRANSFER; ELEMENT_NAMES[49] = ELT_MUNDEROVER; ELEMENT_NAMES[50] = ELT_SELECTOR; ELEMENT_NAMES[51] = ELT_EXISTS; @@ -971,26 +973,26 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[76] = ELT_DEGREE; ELEMENT_NAMES[77] = ELT_FEIMAGE; ELEMENT_NAMES[78] = ELT_IMAGE; - ELEMENT_NAMES[79] = ELT_MSTYLE; - ELEMENT_NAMES[80] = ELT_RULE; - ELEMENT_NAMES[81] = ELT_TEMPLATE; - ELEMENT_NAMES[82] = ELT_SETDIFF; - ELEMENT_NAMES[83] = ELT_STRONG; - ELEMENT_NAMES[84] = ELT_CSCH; - ELEMENT_NAMES[85] = ELT_MPATH; - ELEMENT_NAMES[86] = ELT_TEXTPATH; - ELEMENT_NAMES[87] = ELT_MARK; - ELEMENT_NAMES[88] = ELT_FACTORIAL; - ELEMENT_NAMES[89] = ELT_SMALL; - ELEMENT_NAMES[90] = ELT_MPHANTOM; - ELEMENT_NAMES[91] = ELT_BUTTON; - ELEMENT_NAMES[92] = ELT_FIGCAPTION; - ELEMENT_NAMES[93] = ELT_MAIN; - ELEMENT_NAMES[94] = ELT_SECTION; - ELEMENT_NAMES[95] = ELT_COLGROUP; - ELEMENT_NAMES[96] = ELT_SAMP; - ELEMENT_NAMES[97] = ELT_CURSOR; - ELEMENT_NAMES[98] = ELT_HEADER; + ELEMENT_NAMES[79] = ELT_MTABLE; + ELEMENT_NAMES[80] = ELT_PIECEWISE; + ELEMENT_NAMES[81] = ELT_TRANSPOSE; + ELEMENT_NAMES[82] = ELT_PARTIALDIFF; + ELEMENT_NAMES[83] = ELT_LISTING; + ELEMENT_NAMES[84] = ELT_ARCCOTH; + ELEMENT_NAMES[85] = ELT_MATH; + ELEMENT_NAMES[86] = ELT_TANH; + ELEMENT_NAMES[87] = ELT_LINK; + ELEMENT_NAMES[88] = ELT_CURL; + ELEMENT_NAMES[89] = ELT_REAL; + ELEMENT_NAMES[90] = ELT_MENUITEM; + ELEMENT_NAMES[91] = ELT_ANIMATEMOTION; + ELEMENT_NAMES[92] = ELT_IN; + ELEMENT_NAMES[93] = ELT_MEDIAN; + ELEMENT_NAMES[94] = ELT_SPAN; + ELEMENT_NAMES[95] = ELT_VIDEO; + ELEMENT_NAMES[96] = ELT_OPTGROUP; + ELEMENT_NAMES[97] = ELT_CENTER; + ELEMENT_NAMES[98] = ELT_FEGAUSSIANBLUR; ELEMENT_NAMES[99] = ELT_METER; ELEMENT_NAMES[100] = ELT_MLABELEDTR; ELEMENT_NAMES[101] = ELT_TR; @@ -1052,45 +1054,45 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[157] = ELT_FALSE; ELEMENT_NAMES[158] = ELT_INVERSE; ELEMENT_NAMES[159] = ELT_MODE; - ELEMENT_NAMES[160] = ELT_NONE; - ELEMENT_NAMES[161] = ELT_PICTURE; - ELEMENT_NAMES[162] = ELT_STRIKE; - ELEMENT_NAMES[163] = ELT_TIME; - ELEMENT_NAMES[164] = ELT_VARIANCE; - ELEMENT_NAMES[165] = ELT_GLYPHREF; - ELEMENT_NAMES[166] = ELT_CEILING; - ELEMENT_NAMES[167] = ELT_FESPECULARLIGHTING; - ELEMENT_NAMES[168] = ELT_ARCCSCH; - ELEMENT_NAMES[169] = ELT_ARCCOSH; - ELEMENT_NAMES[170] = ELT_CLIPPATH; - ELEMENT_NAMES[171] = ELT_MISSING_GLYPH; - ELEMENT_NAMES[172] = ELT_PATH; - ELEMENT_NAMES[173] = ELT_SINH; - ELEMENT_NAMES[174] = ELT_FONT_FACE_URI; - ELEMENT_NAMES[175] = ELT_PI; - ELEMENT_NAMES[176] = ELT_MASK; - ELEMENT_NAMES[177] = ELT_CSYMBOL; - ELEMENT_NAMES[178] = ELT_HTML; - ELEMENT_NAMES[179] = ELT_UL; - ELEMENT_NAMES[180] = ELT_ALTGLYPHITEM; - ELEMENT_NAMES[181] = ELT_FORM; - ELEMENT_NAMES[182] = ELT_CN; - ELEMENT_NAMES[183] = ELT_ANNOTATION; - ELEMENT_NAMES[184] = ELT_CODOMAIN; - ELEMENT_NAMES[185] = ELT_DOMAINOFAPPLICATION; - ELEMENT_NAMES[186] = ELT_LN; - ELEMENT_NAMES[187] = ELT_MEAN; - ELEMENT_NAMES[188] = ELT_NOTIN; - ELEMENT_NAMES[189] = ELT_RELN; - ELEMENT_NAMES[190] = ELT_UNION; - ELEMENT_NAMES[191] = ELT_TENDSTO; - ELEMENT_NAMES[192] = ELT_HGROUP; - ELEMENT_NAMES[193] = ELT_RP; - ELEMENT_NAMES[194] = ELT_EQ; - ELEMENT_NAMES[195] = ELT_BVAR; - ELEMENT_NAMES[196] = ELT_FEFUNCR; - ELEMENT_NAMES[197] = ELT_FLOOR; - ELEMENT_NAMES[198] = ELT_OR; + ELEMENT_NAMES[160] = ELT_MENCLOSE; + ELEMENT_NAMES[161] = ELT_POLYLINE; + ELEMENT_NAMES[162] = ELT_SOURCE; + ELEMENT_NAMES[163] = ELT_TITLE; + ELEMENT_NAMES[164] = ELT_TRUE; + ELEMENT_NAMES[165] = ELT_FACTOROF; + ELEMENT_NAMES[166] = ELT_TREF; + ELEMENT_NAMES[167] = ELT_FEDIFFUSELIGHTING; + ELEMENT_NAMES[168] = ELT_ARCSECH; + ELEMENT_NAMES[169] = ELT_ALTGLYPH; + ELEMENT_NAMES[170] = ELT_COSH; + ELEMENT_NAMES[171] = ELT_MGLYPH; + ELEMENT_NAMES[172] = ELT_PREFETCH; + ELEMENT_NAMES[173] = ELT_SWITCH; + ELEMENT_NAMES[174] = ELT_CI; + ELEMENT_NAMES[175] = ELT_MI; + ELEMENT_NAMES[176] = ELT_MALIGNMARK; + ELEMENT_NAMES[177] = ELT_DL; + ELEMENT_NAMES[178] = ELT_FORALL; + ELEMENT_NAMES[179] = ELT_LABEL; + ELEMENT_NAMES[180] = ELT_SYMBOL; + ELEMENT_NAMES[181] = ELT_EM; + ELEMENT_NAMES[182] = ELT_PARAM; + ELEMENT_NAMES[183] = ELT_ANIMATION; + ELEMENT_NAMES[184] = ELT_FN; + ELEMENT_NAMES[185] = ELT_DOMAIN; + ELEMENT_NAMES[186] = ELT_HKERN; + ELEMENT_NAMES[187] = ELT_LAPLACIAN; + ELEMENT_NAMES[188] = ELT_MACTION; + ELEMENT_NAMES[189] = ELT_PATTERN; + ELEMENT_NAMES[190] = ELT_TSPAN; + ELEMENT_NAMES[191] = ELT_MO; + ELEMENT_NAMES[192] = ELT_FEDISPLACEMENTMAP; + ELEMENT_NAMES[193] = ELT_MSUP; + ELEMENT_NAMES[194] = ELT_STOP; + ELEMENT_NAMES[195] = ELT_ANIMATECOLOR; + ELEMENT_NAMES[196] = ELT_HR; + ELEMENT_NAMES[197] = ELT_FOOTER; + ELEMENT_NAMES[198] = ELT_HANDLER; ELEMENT_NAMES[199] = ELT_MARKER; ELEMENT_NAMES[200] = ELT_MOVER; ELEMENT_NAMES[201] = ELT_MERROR; @@ -1212,85 +1214,86 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[317] = ELT_IFRAME; ELEMENT_NAMES[318] = ELT_LINE; ELEMENT_NAMES[319] = ELT_MSPACE; - ELEMENT_NAMES[320] = ELT_MTABLE; - ELEMENT_NAMES[321] = ELT_MENCLOSE; - ELEMENT_NAMES[322] = ELT_OTHERWISE; - ELEMENT_NAMES[323] = ELT_POLYLINE; - ELEMENT_NAMES[324] = ELT_PIECEWISE; - ELEMENT_NAMES[325] = ELT_SOURCE; - ELEMENT_NAMES[326] = ELT_STYLE; - ELEMENT_NAMES[327] = ELT_TITLE; - ELEMENT_NAMES[328] = ELT_TRANSPOSE; - ELEMENT_NAMES[329] = ELT_TRUE; - ELEMENT_NAMES[330] = ELT_ALTGLYPHDEF; - ELEMENT_NAMES[331] = ELT_FACTOROF; - ELEMENT_NAMES[332] = ELT_PARTIALDIFF; - ELEMENT_NAMES[333] = ELT_TREF; - ELEMENT_NAMES[334] = ELT_DIALOG; - ELEMENT_NAMES[335] = ELT_FEDIFFUSELIGHTING; - ELEMENT_NAMES[336] = ELT_LISTING; - ELEMENT_NAMES[337] = ELT_ARCSECH; - ELEMENT_NAMES[338] = ELT_ARCTANH; - ELEMENT_NAMES[339] = ELT_ALTGLYPH; - ELEMENT_NAMES[340] = ELT_ARCCOTH; - ELEMENT_NAMES[341] = ELT_COSH; - ELEMENT_NAMES[342] = ELT_COTH; - ELEMENT_NAMES[343] = ELT_MGLYPH; - ELEMENT_NAMES[344] = ELT_MATH; - ELEMENT_NAMES[345] = ELT_PREFETCH; - ELEMENT_NAMES[346] = ELT_TH; - ELEMENT_NAMES[347] = ELT_SWITCH; - ELEMENT_NAMES[348] = ELT_TANH; - ELEMENT_NAMES[349] = ELT_CI; - ELEMENT_NAMES[350] = ELT_LI; - ELEMENT_NAMES[351] = ELT_MI; - ELEMENT_NAMES[352] = ELT_LINK; - ELEMENT_NAMES[353] = ELT_MALIGNMARK; - ELEMENT_NAMES[354] = ELT_TBREAK; - ELEMENT_NAMES[355] = ELT_DL; - ELEMENT_NAMES[356] = ELT_CURL; - ELEMENT_NAMES[357] = ELT_FORALL; - ELEMENT_NAMES[358] = ELT_INTERVAL; - ELEMENT_NAMES[359] = ELT_LABEL; - ELEMENT_NAMES[360] = ELT_REAL; - ELEMENT_NAMES[361] = ELT_SYMBOL; - ELEMENT_NAMES[362] = ELT_ANIMATETRANSFORM; - ELEMENT_NAMES[363] = ELT_EM; - ELEMENT_NAMES[364] = ELT_MENUITEM; - ELEMENT_NAMES[365] = ELT_PARAM; - ELEMENT_NAMES[366] = ELT_ARCTAN; - ELEMENT_NAMES[367] = ELT_ANIMATION; - ELEMENT_NAMES[368] = ELT_ANIMATEMOTION; - ELEMENT_NAMES[369] = ELT_FN; - ELEMENT_NAMES[370] = ELT_CAPTION; - ELEMENT_NAMES[371] = ELT_DOMAIN; - ELEMENT_NAMES[372] = ELT_IN; - ELEMENT_NAMES[373] = ELT_HKERN; - ELEMENT_NAMES[374] = ELT_MN; - ELEMENT_NAMES[375] = ELT_LAPLACIAN; - ELEMENT_NAMES[376] = ELT_MEDIAN; - ELEMENT_NAMES[377] = ELT_MACTION; - ELEMENT_NAMES[378] = ELT_OPTION; - ELEMENT_NAMES[379] = ELT_PATTERN; - ELEMENT_NAMES[380] = ELT_SPAN; - ELEMENT_NAMES[381] = ELT_TSPAN; - ELEMENT_NAMES[382] = ELT_VKERN; - ELEMENT_NAMES[383] = ELT_MO; - ELEMENT_NAMES[384] = ELT_VIDEO; - ELEMENT_NAMES[385] = ELT_FEDISPLACEMENTMAP; - ELEMENT_NAMES[386] = ELT_MALIGNGROUP; - ELEMENT_NAMES[387] = ELT_MSUP; - ELEMENT_NAMES[388] = ELT_OPTGROUP; - ELEMENT_NAMES[389] = ELT_STOP; - ELEMENT_NAMES[390] = ELT_BR; - ELEMENT_NAMES[391] = ELT_ANIMATECOLOR; - ELEMENT_NAMES[392] = ELT_CENTER; - ELEMENT_NAMES[393] = ELT_HR; - ELEMENT_NAMES[394] = ELT_FECOMPONENTTRANSFER; - ELEMENT_NAMES[395] = ELT_FOOTER; - ELEMENT_NAMES[396] = ELT_FEGAUSSIANBLUR; - ELEMENT_NAMES[397] = ELT_HANDLER; - ELEMENT_NAMES[398] = ELT_LISTENER; + ELEMENT_NAMES[320] = ELT_MARQUEE; + ELEMENT_NAMES[321] = ELT_MSTYLE; + ELEMENT_NAMES[322] = ELT_NONE; + ELEMENT_NAMES[323] = ELT_PIECE; + ELEMENT_NAMES[324] = ELT_PICTURE; + ELEMENT_NAMES[325] = ELT_RULE; + ELEMENT_NAMES[326] = ELT_STRIKE; + ELEMENT_NAMES[327] = ELT_TABLE; + ELEMENT_NAMES[328] = ELT_TIME; + ELEMENT_NAMES[329] = ELT_TEMPLATE; + ELEMENT_NAMES[330] = ELT_VARIANCE; + ELEMENT_NAMES[331] = ELT_DIFF; + ELEMENT_NAMES[332] = ELT_GLYPHREF; + ELEMENT_NAMES[333] = ELT_SETDIFF; + ELEMENT_NAMES[334] = ELT_CEILING; + ELEMENT_NAMES[335] = ELT_FEFUNCG; + ELEMENT_NAMES[336] = ELT_FESPECULARLIGHTING; + ELEMENT_NAMES[337] = ELT_STRONG; + ELEMENT_NAMES[338] = ELT_ARCCSCH; + ELEMENT_NAMES[339] = ELT_ARCSINH; + ELEMENT_NAMES[340] = ELT_ARCCOSH; + ELEMENT_NAMES[341] = ELT_CSCH; + ELEMENT_NAMES[342] = ELT_CLIPPATH; + ELEMENT_NAMES[343] = ELT_GLYPH; + ELEMENT_NAMES[344] = ELT_MISSING_GLYPH; + ELEMENT_NAMES[345] = ELT_MPATH; + ELEMENT_NAMES[346] = ELT_PATH; + ELEMENT_NAMES[347] = ELT_SECH; + ELEMENT_NAMES[348] = ELT_SINH; + ELEMENT_NAMES[349] = ELT_TEXTPATH; + ELEMENT_NAMES[350] = ELT_FONT_FACE_URI; + ELEMENT_NAMES[351] = ELT_IMAGINARYI; + ELEMENT_NAMES[352] = ELT_PI; + ELEMENT_NAMES[353] = ELT_MARK; + ELEMENT_NAMES[354] = ELT_MASK; + ELEMENT_NAMES[355] = ELT_TRACK; + ELEMENT_NAMES[356] = ELT_CSYMBOL; + ELEMENT_NAMES[357] = ELT_FACTORIAL; + ELEMENT_NAMES[358] = ELT_HTML; + ELEMENT_NAMES[359] = ELT_OL; + ELEMENT_NAMES[360] = ELT_UL; + ELEMENT_NAMES[361] = ELT_SMALL; + ELEMENT_NAMES[362] = ELT_ALTGLYPHITEM; + ELEMENT_NAMES[363] = ELT_ACRONYM; + ELEMENT_NAMES[364] = ELT_FORM; + ELEMENT_NAMES[365] = ELT_MPHANTOM; + ELEMENT_NAMES[366] = ELT_CN; + ELEMENT_NAMES[367] = ELT_ARCSIN; + ELEMENT_NAMES[368] = ELT_ANNOTATION; + ELEMENT_NAMES[369] = ELT_BUTTON; + ELEMENT_NAMES[370] = ELT_CODOMAIN; + ELEMENT_NAMES[371] = ELT_CONDITION; + ELEMENT_NAMES[372] = ELT_DOMAINOFAPPLICATION; + ELEMENT_NAMES[373] = ELT_FIGCAPTION; + ELEMENT_NAMES[374] = ELT_LN; + ELEMENT_NAMES[375] = ELT_KEYGEN; + ELEMENT_NAMES[376] = ELT_MEAN; + ELEMENT_NAMES[377] = ELT_MAIN; + ELEMENT_NAMES[378] = ELT_NOTIN; + ELEMENT_NAMES[379] = ELT_POLYGON; + ELEMENT_NAMES[380] = ELT_RELN; + ELEMENT_NAMES[381] = ELT_SECTION; + ELEMENT_NAMES[382] = ELT_UNION; + ELEMENT_NAMES[383] = ELT_AUDIO; + ELEMENT_NAMES[384] = ELT_TENDSTO; + ELEMENT_NAMES[385] = ELT_COLGROUP; + ELEMENT_NAMES[386] = ELT_HGROUP; + ELEMENT_NAMES[387] = ELT_MSUBSUP; + ELEMENT_NAMES[388] = ELT_RP; + ELEMENT_NAMES[389] = ELT_SAMP; + ELEMENT_NAMES[390] = ELT_EQ; + ELEMENT_NAMES[391] = ELT_ABBR; + ELEMENT_NAMES[392] = ELT_BVAR; + ELEMENT_NAMES[393] = ELT_CURSOR; + ELEMENT_NAMES[394] = ELT_FEFUNCR; + ELEMENT_NAMES[395] = ELT_FILTER; + ELEMENT_NAMES[396] = ELT_FLOOR; + ELEMENT_NAMES[397] = ELT_HEADER; + ELEMENT_NAMES[398] = ELT_OR; + ELEMENT_NAMES[399] = ELT_MUNDER; } void @@ -1428,6 +1431,7 @@ nsHtml5ElementName::releaseStatics() delete ELT_LOGBASE; delete ELT_MSPACE; delete ELT_MODE; + delete ELT_MARQUEE; delete ELT_MTABLE; delete ELT_MSTYLE; delete ELT_MENCLOSE; diff --git a/parser/html/nsHtml5ElementName.h b/parser/html/nsHtml5ElementName.h index 97d6d8d5e..131b9e628 100644 --- a/parser/html/nsHtml5ElementName.h +++ b/parser/html/nsHtml5ElementName.h @@ -340,6 +340,7 @@ class nsHtml5ElementName static nsHtml5ElementName* ELT_LOGBASE; static nsHtml5ElementName* ELT_MSPACE; static nsHtml5ElementName* ELT_MODE; + static nsHtml5ElementName* ELT_MARQUEE; static nsHtml5ElementName* ELT_MTABLE; static nsHtml5ElementName* ELT_MSTYLE; static nsHtml5ElementName* ELT_MENCLOSE; diff --git a/parser/htmlparser/nsHTMLTagList.h b/parser/htmlparser/nsHTMLTagList.h index 4cb2a61e0..6f2316ac7 100644 --- a/parser/htmlparser/nsHTMLTagList.h +++ b/parser/htmlparser/nsHTMLTagList.h @@ -119,6 +119,7 @@ HTML_TAG(listing, Pre, Pre) HTML_HTMLELEMENT_TAG(main) HTML_TAG(map, Map, Map) HTML_HTMLELEMENT_TAG(mark) +HTML_TAG(marquee, Div, Div) HTML_TAG(menu, Menu, Menu) HTML_TAG(menuitem, MenuItem, MenuItem) HTML_TAG(meta, Meta, Meta) diff --git a/testing/mozbase/mozlog/mozlog/formatters/html/xmlgen.py b/testing/mozbase/mozlog/mozlog/formatters/html/xmlgen.py index e5998cda3..e545e9a7d 100644 --- a/testing/mozbase/mozlog/mozlog/formatters/html/xmlgen.py +++ b/testing/mozbase/mozlog/mozlog/formatters/html/xmlgen.py @@ -106,7 +106,7 @@ class html(Namespace): 'colgroup,comment,dd,del,dfn,dir,div,dl,dt,em,embed,' 'fieldset,font,form,frameset,h1,h2,h3,h4,h5,h6,head,html,' 'i,iframe,img,input,ins,kbd,label,legend,li,link,listing,' - 'map,menu,meta,multicol,nobr,noembed,noframes,' + 'map,marquee,menu,meta,multicol,nobr,noembed,noframes,' 'noscript,object,ol,optgroup,option,p,pre,q,s,script,' 'select,small,span,strike,strong,style,sub,sup,table,' 'tbody,td,textarea,tfoot,th,thead,title,tr,tt,u,ul,xmp,'