WebKit Bugzilla
Attachment 371899 Details for
Bug 198680
: Automate generation of computedProperties
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198680-20190611172110.patch (text/plain), 18.63 KB, created by
Devin Rousso
on 2019-06-11 17:21:10 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Devin Rousso
Created:
2019-06-11 17:21:10 PDT
Size:
18.63 KB
patch
obsolete
>diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 30759fa42ca5181bfef180f3fe5f181d4f4c8d39..62fd387e47b4c14ef8383b0301bd1f3c533dc0d9 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,28 @@ >+2019-06-11 Devin Rousso <drousso@apple.com> >+ >+ Automate generation of computedProperties >+ https://bugs.webkit.org/show_bug.cgi?id=198680 >+ <rdar://problem/51507834> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ A property should be listed as part of a `CSSStyleDeclaration` if: >+ - it will not be skipped (`skip-builder`) when generating/building properties >+ - it's not `internal-only` >+ - it has more than one non-`skip-builder`/non-`internal-only` property in `longhands` >+ - if all the `longhands` are `skip-builder`/`internal-only` then the property doesn't >+ really "have" any longhand properties >+ - if there's only one property in `longhands`, then it's more of an alias than a longhand >+ >+ * css/makeprop.pl: >+ (sortWithPrefixedPropertiesLast): Added. >+ >+ * css/CSSComputedStyleDeclaration.cpp: >+ (WebCore::CSSComputedStyleDeclaration::cssText const): >+ (WebCore::CSSComputedStyleDeclaration::length const): >+ (WebCore::CSSComputedStyleDeclaration::item const): >+ (WebCore::ComputedStyleExtractor::copyProperties): >+ > 2019-06-11 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r246320. >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >index 4bc064f776a25709dfa830f60f21adebcd70f924..f8a62cd3f2e0d13c9e820a3f2fe96aeed5e2c059 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >@@ -88,388 +88,6 @@ namespace WebCore { > > WTF_MAKE_ISO_ALLOCATED_IMPL(CSSComputedStyleDeclaration); > >-// List of all properties we know how to compute, omitting shorthands. >-static const CSSPropertyID computedProperties[] = { >- CSSPropertyAlignContent, >- CSSPropertyAlignItems, >- CSSPropertyAlignSelf, >- CSSPropertyAlignmentBaseline, >- CSSPropertyAlt, >- CSSPropertyAnimationDelay, >- CSSPropertyAnimationDirection, >- CSSPropertyAnimationDuration, >- CSSPropertyAnimationFillMode, >- CSSPropertyAnimationIterationCount, >- CSSPropertyAnimationName, >- CSSPropertyAnimationPlayState, >- CSSPropertyAnimationTimingFunction, >- CSSPropertyBackgroundAttachment, >- CSSPropertyBackgroundBlendMode, >- CSSPropertyBackgroundClip, >- CSSPropertyBackgroundColor, >- CSSPropertyBackgroundImage, >- CSSPropertyBackgroundOrigin, >- CSSPropertyBackgroundPosition, // more-specific background-position-x/y are non-standard >- CSSPropertyBackgroundRepeat, >- CSSPropertyBackgroundSize, >- CSSPropertyBaselineShift, >- CSSPropertyBorderBottomColor, >- CSSPropertyBorderBottomLeftRadius, >- CSSPropertyBorderBottomRightRadius, >- CSSPropertyBorderBottomStyle, >- CSSPropertyBorderBottomWidth, >- CSSPropertyBorderCollapse, >- CSSPropertyBorderImageOutset, >- CSSPropertyBorderImageRepeat, >- CSSPropertyBorderImageSlice, >- CSSPropertyBorderImageSource, >- CSSPropertyBorderImageWidth, >- CSSPropertyBorderLeftColor, >- CSSPropertyBorderLeftStyle, >- CSSPropertyBorderLeftWidth, >- CSSPropertyBorderRightColor, >- CSSPropertyBorderRightStyle, >- CSSPropertyBorderRightWidth, >- CSSPropertyBorderTopColor, >- CSSPropertyBorderTopLeftRadius, >- CSSPropertyBorderTopRightRadius, >- CSSPropertyBorderTopStyle, >- CSSPropertyBorderTopWidth, >- CSSPropertyBottom, >- CSSPropertyBoxShadow, >- CSSPropertyBoxSizing, >- CSSPropertyBufferedRendering, >- CSSPropertyCaptionSide, >- CSSPropertyCaretColor, >- CSSPropertyClear, >- CSSPropertyClip, >- CSSPropertyClipPath, >- CSSPropertyClipRule, >- CSSPropertyColor, >- CSSPropertyColorInterpolation, >- CSSPropertyColorInterpolationFilters, >- CSSPropertyColorRendering, >-#if ENABLE(DARK_MODE_CSS) >- CSSPropertyColorScheme, >-#endif >- CSSPropertyColumnCount, >- CSSPropertyColumnFill, >- CSSPropertyColumnGap, >- CSSPropertyColumnRuleColor, >- CSSPropertyColumnRuleStyle, >- CSSPropertyColumnRuleWidth, >- CSSPropertyColumnSpan, >- CSSPropertyColumnWidth, >- CSSPropertyContent, >- CSSPropertyCounterIncrement, >- CSSPropertyCounterReset, >- CSSPropertyCursor, >- CSSPropertyCx, >- CSSPropertyCy, >- CSSPropertyDirection, >- CSSPropertyDisplay, >- CSSPropertyDominantBaseline, >- CSSPropertyEmptyCells, >- CSSPropertyFill, >- CSSPropertyFillOpacity, >- CSSPropertyFillRule, >- CSSPropertyFilter, >- CSSPropertyFlexBasis, >- CSSPropertyFlexDirection, >- CSSPropertyFlexFlow, >- CSSPropertyFlexGrow, >- CSSPropertyFlexShrink, >- CSSPropertyFlexWrap, >- CSSPropertyFloat, >- CSSPropertyFloodColor, >- CSSPropertyFloodOpacity, >- CSSPropertyFontFamily, >-#if ENABLE(VARIATION_FONTS) >- CSSPropertyFontOpticalSizing, >-#endif >- CSSPropertyFontSize, >- CSSPropertyFontStretch, >- CSSPropertyFontStyle, >- CSSPropertyFontSynthesis, >- CSSPropertyFontVariant, >- CSSPropertyFontVariantAlternates, >- CSSPropertyFontVariantCaps, >- CSSPropertyFontVariantEastAsian, >- CSSPropertyFontVariantLigatures, >- CSSPropertyFontVariantNumeric, >- CSSPropertyFontVariantPosition, >-#if ENABLE(VARIATION_FONTS) >- CSSPropertyFontVariationSettings, >-#endif >- CSSPropertyFontWeight, >- CSSPropertyGlyphOrientationHorizontal, >- CSSPropertyGlyphOrientationVertical, >- CSSPropertyGridAutoColumns, >- CSSPropertyGridAutoFlow, >- CSSPropertyGridAutoRows, >- CSSPropertyGridColumnEnd, >- CSSPropertyGridColumnStart, >- CSSPropertyGridRowEnd, >- CSSPropertyGridRowStart, >- CSSPropertyGridTemplateAreas, >- CSSPropertyGridTemplateColumns, >- CSSPropertyGridTemplateRows, >- CSSPropertyHangingPunctuation, >- CSSPropertyHeight, >-#if ENABLE(CSS_IMAGE_ORIENTATION) >- CSSPropertyImageOrientation, >-#endif >- CSSPropertyImageRendering, >-#if ENABLE(CSS_IMAGE_RESOLUTION) >- CSSPropertyImageResolution, >-#endif >-#if ENABLE(CSS_COMPOSITING) >- CSSPropertyIsolation, >-#endif >- CSSPropertyJustifyContent, >- CSSPropertyJustifyItems, >- CSSPropertyJustifySelf, >- CSSPropertyKerning, >- CSSPropertyLeft, >- CSSPropertyLetterSpacing, >- CSSPropertyLightingColor, >- CSSPropertyLineBreak, >- CSSPropertyLineHeight, >- CSSPropertyListStyleImage, >- CSSPropertyListStylePosition, >- CSSPropertyListStyleType, >- CSSPropertyMarginBottom, >- CSSPropertyMarginLeft, >- CSSPropertyMarginRight, >- CSSPropertyMarginTop, >- CSSPropertyMarkerEnd, >- CSSPropertyMarkerMid, >- CSSPropertyMarkerStart, >- CSSPropertyMask, >- CSSPropertyMaskType, >- CSSPropertyMaxHeight, >- CSSPropertyMaxWidth, >- CSSPropertyMinHeight, >- CSSPropertyMinWidth, >-#if ENABLE(CSS_COMPOSITING) >- CSSPropertyMixBlendMode, >-#endif >- CSSPropertyObjectFit, >- CSSPropertyObjectPosition, >- CSSPropertyOpacity, >- CSSPropertyOrder, >- CSSPropertyOrphans, >- CSSPropertyOutlineColor, >- CSSPropertyOutlineOffset, >- CSSPropertyOutlineStyle, >- CSSPropertyOutlineWidth, >- CSSPropertyOverflowWrap, >- CSSPropertyOverflowX, >- CSSPropertyOverflowY, >- CSSPropertyPaddingBottom, >- CSSPropertyPaddingLeft, >- CSSPropertyPaddingRight, >- CSSPropertyPaddingTop, >- CSSPropertyPageBreakAfter, >- CSSPropertyPageBreakBefore, >- CSSPropertyPageBreakInside, >- CSSPropertyPaintOrder, >- CSSPropertyPerspective, >- CSSPropertyPerspectiveOrigin, >- CSSPropertyPlaceContent, >- CSSPropertyPlaceItems, >- CSSPropertyPlaceSelf, >- CSSPropertyPointerEvents, >- CSSPropertyPosition, >- CSSPropertyR, >- CSSPropertyResize, >- CSSPropertyRight, >- CSSPropertyRowGap, >- CSSPropertyRx, >- CSSPropertyRy, >-#if ENABLE(CSS_SCROLL_SNAP) >- CSSPropertyScrollPadding, >- CSSPropertyScrollPaddingBottom, >- CSSPropertyScrollPaddingLeft, >- CSSPropertyScrollPaddingRight, >- CSSPropertyScrollPaddingTop, >- CSSPropertyScrollSnapAlign, >- CSSPropertyScrollSnapMargin, >- CSSPropertyScrollSnapMarginBottom, >- CSSPropertyScrollSnapMarginLeft, >- CSSPropertyScrollSnapMarginRight, >- CSSPropertyScrollSnapMarginTop, >- CSSPropertyScrollSnapType, >-#endif >- CSSPropertyShapeImageThreshold, >- CSSPropertyShapeMargin, >- CSSPropertyShapeOutside, >- CSSPropertyShapeRendering, >- CSSPropertySpeakAs, >- CSSPropertyStopColor, >- CSSPropertyStopOpacity, >- CSSPropertyStroke, >- CSSPropertyStrokeColor, >- CSSPropertyStrokeDasharray, >- CSSPropertyStrokeDashoffset, >- CSSPropertyStrokeLinecap, >- CSSPropertyStrokeLinejoin, >- CSSPropertyStrokeMiterlimit, >- CSSPropertyStrokeOpacity, >- CSSPropertyStrokeWidth, >- CSSPropertyTabSize, >- CSSPropertyTableLayout, >- CSSPropertyTextAlign, >- CSSPropertyTextAnchor, >- CSSPropertyTextDecoration, >- CSSPropertyTextDecorationColor, >- CSSPropertyTextDecorationLine, >- CSSPropertyTextDecorationSkip, >- CSSPropertyTextDecorationStyle, >- CSSPropertyTextIndent, >- CSSPropertyTextOverflow, >- CSSPropertyTextRendering, >- CSSPropertyTextShadow, >- CSSPropertyTextTransform, >- CSSPropertyTextUnderlinePosition, >- CSSPropertyTop, >-#if ENABLE(POINTER_EVENTS) >- CSSPropertyTouchAction, >-#endif >- CSSPropertyTransform, >- CSSPropertyTransformBox, >- CSSPropertyTransformOrigin, >- CSSPropertyTransformStyle, >- CSSPropertyTransitionDelay, >- CSSPropertyTransitionDuration, >- CSSPropertyTransitionProperty, >- CSSPropertyTransitionTimingFunction, >- CSSPropertyUnicodeBidi, >- CSSPropertyVectorEffect, >- CSSPropertyVerticalAlign, >- CSSPropertyVisibility, >- CSSPropertyWhiteSpace, >- CSSPropertyWidows, >- CSSPropertyWidth, >- CSSPropertyWillChange, >- CSSPropertyWordBreak, >- CSSPropertyWordSpacing, >- CSSPropertyWordWrap, >- CSSPropertyWritingMode, >- CSSPropertyX, >- CSSPropertyY, >- CSSPropertyZIndex, >- CSSPropertyZoom, >- CSSPropertyAppleColorFilter, >- CSSPropertyWebkitAppearance, >-#if ENABLE(FILTERS_LEVEL_2) >- CSSPropertyWebkitBackdropFilter, >-#endif >- CSSPropertyWebkitBackfaceVisibility, >- CSSPropertyWebkitBackgroundClip, >- CSSPropertyWebkitBackgroundComposite, >- CSSPropertyWebkitBackgroundOrigin, >- CSSPropertyWebkitBackgroundSize, >- CSSPropertyWebkitBorderFit, >- CSSPropertyWebkitBorderHorizontalSpacing, >- CSSPropertyWebkitBorderImage, >- CSSPropertyWebkitBorderVerticalSpacing, >- CSSPropertyWebkitBoxAlign, >-#if ENABLE(CSS_BOX_DECORATION_BREAK) >- CSSPropertyWebkitBoxDecorationBreak, >-#endif >- CSSPropertyWebkitBoxDirection, >- CSSPropertyWebkitBoxFlex, >- CSSPropertyWebkitBoxFlexGroup, >- CSSPropertyWebkitBoxLines, >- CSSPropertyWebkitBoxOrdinalGroup, >- CSSPropertyWebkitBoxOrient, >- CSSPropertyWebkitBoxPack, >- CSSPropertyWebkitBoxReflect, >- CSSPropertyWebkitBoxShadow, >- CSSPropertyWebkitClipPath, >- CSSPropertyWebkitColumnAxis, >- CSSPropertyWebkitColumnBreakAfter, >- CSSPropertyWebkitColumnBreakBefore, >- CSSPropertyWebkitColumnBreakInside, >- CSSPropertyWebkitColumnProgression, >-#if ENABLE(CURSOR_VISIBILITY) >- CSSPropertyWebkitCursorVisibility, >-#endif >- CSSPropertyWebkitFontKerning, >- CSSPropertyWebkitFontSmoothing, >- CSSPropertyWebkitHyphenateCharacter, >- CSSPropertyWebkitHyphenateLimitAfter, >- CSSPropertyWebkitHyphenateLimitBefore, >- CSSPropertyWebkitHyphenateLimitLines, >- CSSPropertyWebkitHyphens, >- CSSPropertyWebkitInitialLetter, >- CSSPropertyWebkitLineAlign, >- CSSPropertyWebkitLineBoxContain, >- CSSPropertyWebkitLineClamp, >- CSSPropertyWebkitLineGrid, >- CSSPropertyWebkitLineSnap, >- CSSPropertyWebkitLocale, >- CSSPropertyWebkitMarginAfterCollapse, >- CSSPropertyWebkitMarginBeforeCollapse, >- CSSPropertyWebkitMarqueeDirection, >- CSSPropertyWebkitMarqueeIncrement, >- CSSPropertyWebkitMarqueeRepetition, >- CSSPropertyWebkitMarqueeStyle, >- CSSPropertyWebkitMaskBoxImage, >- CSSPropertyWebkitMaskBoxImageOutset, >- CSSPropertyWebkitMaskBoxImageRepeat, >- CSSPropertyWebkitMaskBoxImageSlice, >- CSSPropertyWebkitMaskBoxImageSource, >- CSSPropertyWebkitMaskBoxImageWidth, >- CSSPropertyWebkitMaskClip, >- CSSPropertyWebkitMaskComposite, >- CSSPropertyWebkitMaskImage, >- CSSPropertyWebkitMaskOrigin, >- CSSPropertyWebkitMaskPosition, >- CSSPropertyWebkitMaskRepeat, >- CSSPropertyWebkitMaskSize, >- CSSPropertyWebkitMaskSourceType, >- CSSPropertyWebkitNbspMode, >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >- CSSPropertyWebkitOverflowScrolling, >-#endif >- CSSPropertyWebkitPrintColorAdjust, >- CSSPropertyWebkitRtlOrdering, >-#if ENABLE(TOUCH_EVENTS) >- CSSPropertyWebkitTapHighlightColor, >-#endif >-#if ENABLE(CSS3_TEXT) >- CSSPropertyWebkitTextAlignLast, >-#endif >- CSSPropertyWebkitTextCombine, >- CSSPropertyWebkitTextDecorationsInEffect, >- CSSPropertyWebkitTextEmphasisColor, >- CSSPropertyWebkitTextEmphasisPosition, >- CSSPropertyWebkitTextEmphasisStyle, >- CSSPropertyWebkitTextFillColor, >-#if ENABLE(CSS3_TEXT) >- CSSPropertyWebkitTextJustify, >-#endif >- CSSPropertyWebkitTextOrientation, >- CSSPropertyWebkitTextSecurity, >-#if ENABLE(TEXT_AUTOSIZING) >- CSSPropertyWebkitTextSizeAdjust, >-#endif >- CSSPropertyWebkitTextStrokeColor, >- CSSPropertyWebkitTextStrokeWidth, >- CSSPropertyWebkitTextZoom, >-#if PLATFORM(IOS_FAMILY) >- CSSPropertyWebkitTouchCallout, >-#endif >- CSSPropertyWebkitTransformStyle, >- CSSPropertyWebkitUserDrag, >- CSSPropertyWebkitUserModify, >- CSSPropertyWebkitUserSelect, >-}; >- >-const unsigned numComputedProperties = WTF_ARRAY_LENGTH(computedProperties); >- > static CSSValueID valueForRepeatRule(int rule) > { > switch (rule) { >@@ -1686,12 +1304,12 @@ String CSSComputedStyleDeclaration::cssText() const > { > StringBuilder result; > >- for (unsigned i = 0; i < numComputedProperties; i++) { >+ for (unsigned i = 0; i < numComputedPropertyIDs; i++) { > if (i) > result.append(' '); >- result.append(getPropertyName(computedProperties[i])); >+ result.append(getPropertyName(computedPropertyIDs[i])); > result.appendLiteral(": "); >- result.append(getPropertyValue(computedProperties[i])); >+ result.append(getPropertyValue(computedPropertyIDs[i])); > result.append(';'); > } > >@@ -4220,7 +3838,7 @@ unsigned CSSComputedStyleDeclaration::length() const > if (!style) > return 0; > >- return numComputedProperties + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size(); >+ return numComputedPropertyIDs + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size(); > } > > String CSSComputedStyleDeclaration::item(unsigned i) const >@@ -4228,8 +3846,8 @@ String CSSComputedStyleDeclaration::item(unsigned i) const > if (i >= length()) > return String(); > >- if (i < numComputedProperties) >- return getPropertyNameString(computedProperties[i]); >+ if (i < numComputedPropertyIDs) >+ return getPropertyNameString(computedPropertyIDs[i]); > > auto* style = m_element->computedStyle(m_pseudoElementSpecifier); > if (!style) >@@ -4237,14 +3855,14 @@ String CSSComputedStyleDeclaration::item(unsigned i) const > > const auto& inheritedCustomProperties = style->inheritedCustomProperties(); > >- if (i < numComputedProperties + inheritedCustomProperties.size()) { >+ if (i < numComputedPropertyIDs + inheritedCustomProperties.size()) { > auto results = copyToVector(inheritedCustomProperties.keys()); >- return results.at(i - numComputedProperties); >+ return results.at(i - numComputedPropertyIDs); > } > > const auto& nonInheritedCustomProperties = style->nonInheritedCustomProperties(); > auto results = copyToVector(nonInheritedCustomProperties.keys()); >- return results.at(i - inheritedCustomProperties.size() - numComputedProperties); >+ return results.at(i - inheritedCustomProperties.size() - numComputedPropertyIDs); > } > > bool ComputedStyleExtractor::propertyMatches(CSSPropertyID propertyID, const CSSValue* value) >@@ -4267,7 +3885,7 @@ bool ComputedStyleExtractor::propertyMatches(CSSPropertyID propertyID, const CSS > > Ref<MutableStyleProperties> ComputedStyleExtractor::copyProperties() > { >- return copyPropertiesInSet(computedProperties, numComputedProperties); >+ return copyPropertiesInSet(computedPropertyIDs, numComputedPropertyIDs); > } > > Ref<CSSValueList> ComputedStyleExtractor::getCSSPropertyValuesForShorthandProperties(const StylePropertyShorthand& shorthand) >diff --git a/Source/WebCore/css/makeprop.pl b/Source/WebCore/css/makeprop.pl >index 869735f10a89c452f6154984f9db61f1b980d506..d426ae47c3ece5e1448267fb204122afa2ab6e4f 100755 >--- a/Source/WebCore/css/makeprop.pl >+++ b/Source/WebCore/css/makeprop.pl >@@ -480,7 +480,48 @@ print HEADER "const int firstCSSProperty = $first;\n"; > print HEADER "const int numCSSProperties = $num;\n"; > print HEADER "const int lastCSSProperty = $last;\n"; > print HEADER "const size_t maxCSSPropertyNameLength = $maxLen;\n"; >-print HEADER "const CSSPropertyID lastHighPriorityProperty = CSSProperty" . $nameToId{$lastHighPriorityPropertyName} . ";\n"; >+print HEADER "const CSSPropertyID lastHighPriorityProperty = CSSProperty" . $nameToId{$lastHighPriorityPropertyName} . ";\n\n"; >+ >+print HEADER "static const CSSPropertyID computedPropertyIDs[] = {\n"; >+my $numComputedPropertyIDs = 0; >+sub sortWithPrefixedPropertiesLast >+{ >+ my $aStartsWithPrefix = substr($a, 0, 1) eq "-"; >+ my $bStartsWithPrefix = substr($b, 0, 1) eq "-"; >+ if ($aStartsWithPrefix && !$bStartsWithPrefix) { >+ return 1; >+ } >+ if (!$aStartsWithPrefix && $bStartsWithPrefix) { >+ return -1; >+ } >+ return $a cmp $b; >+} >+foreach my $name (sort sortWithPrefixedPropertiesLast @names) { >+ next if (exists($propertiesWithStyleBuilderOptions{$name}{"skip-builder"})); >+ next if (grep { $_ eq $name } @internalProprerties); >+ >+ # Skip properties if they have a non-internal longhand property. >+ if (exists($propertiesWithStyleBuilderOptions{$name}{"longhands"})) { >+ my @longhands = @{$propertiesWithStyleBuilderOptions{$name}{"longhands"}}; >+ if (scalar @longhands != 1) { >+ my $hasNonInternalLonghand = 0; >+ foreach my $longhand (@longhands) { >+ if (!exists($propertiesWithStyleBuilderOptions{$longhand}{"skip-builder"}) && !grep { $_ eq $longhand } @internalProprerties) { >+ $hasNonInternalLonghand = 1; >+ last; >+ } >+ } >+ if ($hasNonInternalLonghand) { >+ next; >+ } >+ } >+ } >+ >+ print HEADER " CSSProperty" . $nameToId{$name} . ",\n"; >+ $numComputedPropertyIDs += 1; >+} >+print HEADER "};\n"; >+print HEADER "const size_t numComputedPropertyIDs = $numComputedPropertyIDs;\n"; > > print HEADER << "EOF"; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198680
:
371670
|
371671
|
371672
|
371673
|
371674
|
371675
|
371676
|
371677
|
371679
|
371680
|
371684
|
371685
|
371698
|
371699
|
371775
|
371787
|
371788
|
371791
|
371794
|
371795
|
371796
|
371797
|
371803
|
371807
|
371808
|
371810
|
371815
|
371899
|
371901
|
371904
|
371907
|
371910
|
371911
|
371913
|
371916
|
371926
|
371927
|
371928
|
371931
|
371975
|
371977
|
372101
|
381834