Skip to content

Commit 58426bc

Browse files
author
David Hyatt
committed
Fix for https://bugs.webkit.org/show_bug.cgi?id=49220 <<rdar://problem/8644849>, REGRESSION: transforms now
O(n^3) from pathological behavior in lowestPosition, rightmostPosition, leftmostPosition and topmostPosition. Reviewed by Simon Fraser. This patch throws out the lowest/rightmost/leftmost/topmostPosition functions and re-architects layout overflow in the engine to cache all the information required to properly handle scrolling. In the old code, there were two types of overflow: layout overflow and visual overflow. The former could affect scrolling and the latter could not. The distinction was largely meaningless, since layout overflow wasn't actually used to determine scroll width or scroll height. It didn't propagate across self-painting layer boundaries either. In the old code, the term visible overflow meant the union of the layout overflow and visual overflow rects. In the new code, the two types of overflow remain, but the distinction between the two is now clear. Visual overflow is used purely for painting and hit testing checks and layout overflow is used specifically for scrolling. It has been expanded to propagate across self-painting layers, to factor in relative positioning and transforms, and to work with writing modes. In order to minimize layout test changes, layers no longer incorporate right/bottom overflow into their width/height members. Doing so uncovered two bugs where left/top overflow was ignored (proof that even having layer dimensions is harmful). A render tree dump hack has been put into the code to keep this overflow dumping for the RenderView's layer, since otherwise a huge number of tests would change. Added fast/overflow/overflow-rtl-vertical.html to test vertical writing-mode overflow. Existing tests cover the rest. WebCore: * page/FrameView.cpp: (WebCore::FrameView::adjustViewSize): (WebCore::FrameView::forceLayoutForPagination): Changed to use RenderView's docTop/Left/Width/Height accessors, which simply grab the overflow and properly flip it to account for writing modes. * platform/graphics/IntRect.h: (WebCore::IntRect::shiftLeftEdgeTo): (WebCore::IntRect::shiftRightEdgeTo): (WebCore::IntRect::shiftTopEdgeTo): (WebCore::IntRect::shiftBottomEdgeTo): New helper functions for sliding the edge of a rectangle without moving any of the other three edges. * rendering/InlineBox.h: (WebCore::InlineBox::frameRect): frameRect is a helper for obtaining the x, y, width, height of an InlineBox as an IntRect. * rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::placeBoxesInInlineDirection): All of the overflow setting in the inline direction has been removed from this function. All line overflow is computed at once now in a single function: computeOverflow. (WebCore::InlineFlowBox::addBoxShadowVisualOverflow): (WebCore::InlineFlowBox::addTextBoxVisualOverflow): (WebCore::InlineFlowBox::addReplacedChildOverflow): Helper for propagating overflow from specific types of children that occur on a line into the InlineFlowBox's overflow. (WebCore::InlineFlowBox::computeOverflow): The new function that computes both horizontal and vertical overflow for a line box. (WebCore::InlineFlowBox::setLayoutOverflow): (WebCore::InlineFlowBox::setVisualOverflow): (WebCore::InlineFlowBox::setOverflowFromLogicalRects): New functions that set the overflow computed by computeOverflow. These replace setBlockDirectionOverflowPositions and setInlineDirectionOverflowPositions. They essentially do the same thing, but they operate on rectangles. (WebCore::InlineFlowBox::nodeAtPoint): (WebCore::InlineFlowBox::paint): Changed to use visual overflow instead of visible overflow. (Visible overflow as a union of layout and visual overflow is no longer necessary, since visual overflow is now equivalent to the old visible overflow concept.) * rendering/InlineFlowBox.h: (WebCore::InlineFlowBox::logicalLayoutOverflowRect): (WebCore::InlineFlowBox::logicalVisualOverflowRect): Helpers for obtaining logical overflow rectangles, since lines compute their overflow in logical terms before converting to block coordinates at the end. * rendering/RenderBlock.cpp: (WebCore::RenderBlock::layoutBlock): (WebCore::RenderBlock::addOverflowFromChildren): (WebCore::RenderBlock::computeOverflow): (WebCore::RenderBlock::addOverflowFromFloats): (WebCore::RenderBlock::addOverflowFromPositionedObjects): Blocks now have a computeOverflow function called at the end of layout that adds in all the types of overflow. The addOverflowFromChildren method is virtual so that RenderListItem and RenderTable can subclass it. RenderListItem has to position its list marker and propagate marker overflow up, and RenderTable adds in overflow from its sections. (WebCore::RenderBlock::layoutOnlyPositionedObjects): (WebCore::RenderBlock::layoutPositionedObjects): When only positioned objects lay out, overflow must still be recomputed. The refactoring of overflow computation into a single callable method: computeOverflow, makes it possible for this to be done easily. (WebCore::RenderBlock::paint): visible -> visual. (WebCore::RenderBlock::addOverhangingFloats): The propagation of float overflow has changed substantially. The basic rules are: (1) The float must be in our floating objects list to contribute to overflow. (2) The float must be a descendant to contribute to overflow. (3) The block must have the outermost list that contains the float, or it has a self-painting layer and so the float needs to be included in its overflow. (WebCore::RenderBlock::nodeAtPoint): visible -> visual. (WebCore::RenderBlock::layoutColumns): Remove column overflow computation from layoutColumns and move it to computeOverflow. (WebCore::RenderBlock::adjustLinePositionForPagination): visible -> visual. * rendering/RenderBlock.h: (WebCore::RenderBlock::scrollbarsChanged): Added a new virtual method used by table cells when scrollbars in an overflow:auto/scroll table cell come and go. * rendering/RenderBlockLineLayout.cpp: (WebCore::RenderBlock::layoutInlineChildren): (WebCore::RenderBlock::determineStartPosition): (WebCore::RenderBlock::matchedEndLine): (WebCore::RenderBlock::addOverflowFromInlineChildren): (WebCore::RenderBlock::beforeSideVisualOverflowForLine): (WebCore::RenderBlock::afterSideVisualOverflowForLine): visible -> visual. * rendering/RenderBox.cpp: (WebCore::RenderBox::scrollWidth): (WebCore::RenderBox::scrollHeight): Patched to use layoutOverflow functions instead of the old rightmost/leftmostPosition functions. (WebCore::RenderBox::paintRootBoxDecorations): Use docLeft and docTop here, so that writing modes are handled. (WebCore::RenderBox::clippedOverflowRectForRepaint): visible -> visual. (WebCore::RenderBox::addOverflowFromChild): (WebCore::RenderBox::addLayoutOverflow): (WebCore::RenderBox::addVisualOverflow): (WebCore::RenderBox::logicalVisualOverflowRectForPropagation): (WebCore::RenderBox::visualOverflowRectForPropagation): (WebCore::RenderBox::logicalLayoutOverflowRectForPropagation): (WebCore::RenderBox::layoutOverflowRectForPropagation): * rendering/RenderBox.h: The new overflow system for boxes. Layout overflow now crosses self-painting layer boundaries and adjusts child boxes for transforms, relative positioning and writing mode differences. (WebCore::RenderBox::layoutOverflowRect): (WebCore::RenderBox::topLayoutOverflow): (WebCore::RenderBox::bottomLayoutOverflow): (WebCore::RenderBox::leftLayoutOverflow): (WebCore::RenderBox::rightLayoutOverflow): Changed the default rectangle for layout overflow to be the client box to match the scrollable areas of overflow regions. (WebCore::RenderBox::clientLogicalBottom): New helper for obtaining the logical bottom of the client box. (WebCore::RenderBox::clientBoxRect): New helper for obtaining the clientLeft/Top/Width/Height box. * rendering/RenderBoxModelObject.h: (WebCore::RenderBoxModelObject::relativePositionLogicalOffset): Helper for obtaining the relative position offset transposed for vertical writing modes. Used by line overflow. * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::layoutBlock): Changed flexible boxes to just call the base class computeOverflow method. * rendering/RenderInline.cpp: (WebCore::RenderInline::linesVisualOverflowBoundingBox): (WebCore::RenderInline::clippedOverflowRectForRepaint): visible -> visual. * rendering/RenderInline.h: * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateLayerPosition): Changed layers to no longer incorporate right/bottom overflow into width/height. This is the reason many layout tests change. (Not doing this makes the layout test changes far worse, since overflow propagates across self-painting layers now.) (WebCore::RenderLayer::overflowTop): (WebCore::RenderLayer::overflowBottom): (WebCore::RenderLayer::overflowLeft): (WebCore::RenderLayer::overflowRight): overflowTop/Bottom/Left/Right return overflow that accounts for writing modes, i.e., purely physical overflow that can be used to set up the scroll area. (WebCore::RenderLayer::computeScrollDimensions): Drastically simplified this method now that overflowTop/Bottom/Left/Right just do the right thing regarding unreachable overflow. (WebCore::RenderLayer::updateScrollInfoAfterLayout): Make sure to explicitly set the vertical scrollbar's position just as we did with horizontal scrollbars, so that clamping to the bottom works. (WebCore::performOverlapTests): (WebCore::RenderLayer::paintLayer): Fix a bug in performOverlapTests. It incorrectly used the layer's bounds, and so it didn't account for left/top overflow out of the layer (see why I hate layers even having dimensions?). Changed it to use the bounding box of the layer instead. (WebCore::RenderLayer::hitTest): Fix a bug in hit testing. It incorrectly used the root layer's bounds as the limit of the hit test, and so it didn't account for left/top overflow in a ScrollView (hate hate hate layers having dimensions). I changed it to use the hit test rect instead, so that the damage rect never stops the point from being tested (unless the hit test request says not to ignore clipping). (WebCore::RenderLayer::localBoundingBox): visible -> visual. * rendering/RenderLayer.h: Added the new overflowTop/Left/Right/Bottom accessors. * rendering/RenderLineBoxList.cpp: (WebCore::RenderLineBoxList::anyLineIntersectsRect): (WebCore::RenderLineBoxList::lineIntersectsDirtyRect): (WebCore::RenderLineBoxList::paint): (WebCore::RenderLineBoxList::hitTest): visible -> visual. * rendering/RenderListItem.cpp: (WebCore::RenderListItem::addOverflowFromChildren): (WebCore::RenderListItem::positionListMarker): * rendering/RenderListItem.h: RenderListItem now positions the list marker when computing its overflow, since the marker propagates overflow back up to the list item. * rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::paint): visible -> visual. * rendering/RenderMarquee.cpp: (WebCore::RenderMarquee::computePosition): Changed to use overflow functions instead of rightmost/lowestPosition. * rendering/RenderMedia.cpp: * rendering/RenderMedia.h: Removed the lowest/topmost/rightmost/leftmostPosition functions, since control overflow is handled properly already. * rendering/RenderOverflow.h: (WebCore::RenderOverflow::RenderOverflow): (WebCore::RenderOverflow::setLayoutOverflow): (WebCore::RenderOverflow::setVisualOverflow): Add new setters for layout and visual overflow as rects. * rendering/RenderReplaced.cpp: (WebCore::RenderReplaced::shouldPaint): (WebCore::RenderReplaced::clippedOverflowRectForRepaint): visible -> visual. * rendering/RenderRubyRun.cpp: (WebCore::RenderRubyRun::layout): Call computeOverflow to recompute our overflow information after we adjust the ruby. * rendering/RenderTable.cpp: (WebCore::RenderTable::layout): (WebCore::RenderTable::addOverflowFromChildren): (WebCore::RenderTable::paint): * rendering/RenderTable.h: Move section overflow propagation into addOverflowFromChildren, and change RenderTable to just call computeOverflow. * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::clippedOverflowRectForRepaint): visible -> visual. (WebCore::RenderTableCell::scrollbarsChanged): Adding unreachable overflow support (something that in the old code only existed for positioned objects in the root view) exposed a bug in table layout. If scrollbars are added during the layout that occurs after intrinsic padding was incorporated into the cell, then the cell won't lay out properly the second time (after the scrollbars have been added). We have to adjust the intrinsic padding accounting for the presence of the new scrollbar so the second layout will get the right dimensions. * rendering/RenderTableCell.h: (WebCore::RenderTableCell::hasVisualOverflow): visible -> visual. * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::layoutRows): * rendering/RenderTableSection.h: visible -> visual. Removed the leftmost/rightmost/topmost/bottommostPosition functions. * rendering/RenderTreeAsText.cpp: (WebCore::writeLayers): Added a hack to render tree dumping to include right/bottom overflow for the root layer only. This keeps a zillion layout tests from failing. * rendering/RenderView.cpp: (WebCore::RenderView::layout): (WebCore::RenderView::docTop): (WebCore::RenderView::docBottom): (WebCore::RenderView::docLeft): (WebCore::RenderView::docRight): * rendering/RenderView.h: (WebCore::RenderView::docHeight): (WebCore::RenderView::docWidth): RenderView now uses docLeft/Top/Height/Width functions, which are just overflow queries that account for writing modes. These methods are now the preferred way to query for the physical dimensions of a document. * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::addHighlightOverflow): Changed to call setOverflowFromLogicalRects instead of the block/inline position functions. (WebCore::RootInlineBox::alignBoxesInBlockDirection): Remove the computation of block direction overflow, since it now all happens at once after the line is built. (WebCore::RootInlineBox::paddedLayoutOverflowRect): * rendering/RootInlineBox.h: Added a new helper function for incorporating the end padding into a line. This end padding also includes the single pixel for a caret in LTR if needed. LayoutTests: * compositing/checkerboard-expected.txt: * compositing/geometry/limit-layer-bounds-transformed-expected.txt: * compositing/iframes/composited-parent-iframe-expected.txt: * fast/backgrounds/size/contain-and-cover-expected.txt: * fast/flexbox/009.html: * fast/overflow/overflow-rtl-vertical.html: Added. * fast/spatial-navigation/snav-clipped-overflowed-content-expected.txt: * fast/spatial-navigation/snav-clipped-overflowed-content.html: * platform/mac/compositing/direct-image-compositing-expected.txt: * platform/mac/compositing/geometry/fixed-position-expected.txt: * platform/mac/compositing/geometry/video-opacity-overlay-expected.txt: * platform/mac/compositing/overflow/fixed-position-ancestor-clip-expected.txt: * platform/mac/compositing/overflow/scroll-ancestor-update-expected.txt: * platform/mac/compositing/reflections/load-video-in-reflection-expected.txt: * platform/mac/compositing/repaint/content-into-overflow-expected.txt: * platform/mac/compositing/repaint/overflow-into-content-expected.txt: * platform/mac/css1/box_properties/margin-expected.txt: * platform/mac/css1/box_properties/margin_right-expected.txt: * platform/mac/css1/classification/white_space-expected.txt: * platform/mac/css1/color_and_background/background_attachment-expected.txt: * platform/mac/css1/color_and_background/background_repeat-expected.txt: * platform/mac/css2.1/t0803-c5502-mrgn-r-02-c-expected.txt: * platform/mac/css2.1/t0803-c5505-mrgn-02-c-expected.txt: * platform/mac/css2.1/t0804-c5508-ipadn-b-02-b-a-expected.txt: * platform/mac/css2.1/t0905-c414-flt-00-d-expected.txt: * platform/mac/css2.1/t0905-c414-flt-01-d-g-expected.txt: * platform/mac/css2.1/t0905-c414-flt-02-c-expected.txt: * platform/mac/css2.1/t0905-c414-flt-03-c-expected.txt: * platform/mac/css2.1/t0905-c414-flt-04-c-expected.txt: * platform/mac/css2.1/t0905-c414-flt-wrap-01-d-g-expected.txt: * platform/mac/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt: * platform/mac/css2.1/t0905-c5525-fltwidth-02-c-g-expected.txt: * platform/mac/css2.1/t0905-c5525-fltwidth-03-c-g-expected.txt: * platform/mac/css2.1/t090501-c414-flt-02-d-g-expected.txt: * platform/mac/css2.1/t090501-c414-flt-03-b-g-expected.txt: * platform/mac/css2.1/t1202-counters-08-b-expected.txt: * platform/mac/css2.1/t1202-counters-09-b-expected.txt: * platform/mac/editing/deleting/delete-after-span-ws-001-expected.txt: * platform/mac/editing/deleting/delete-after-span-ws-002-expected.txt: * platform/mac/editing/deleting/delete-after-span-ws-003-expected.txt: * platform/mac/editing/deleting/delete-line-end-ws-001-expected.txt: * platform/mac/editing/deleting/delete-line-end-ws-002-expected.txt: * platform/mac/editing/selection/25228-expected.txt: * platform/mac/editing/selection/focus_editable_html-expected.txt: * platform/mac/editing/selection/select-all-001-expected.txt: * platform/mac/editing/selection/select-all-002-expected.txt: * platform/mac/editing/selection/select-all-003-expected.txt: * platform/mac/editing/selection/select-all-004-expected.txt: * platform/mac/editing/selection/unrendered-001-expected.txt: * platform/mac/editing/selection/unrendered-002-expected.txt: * platform/mac/editing/selection/unrendered-003-expected.txt: * platform/mac/editing/selection/unrendered-004-expected.txt: * platform/mac/editing/selection/unrendered-005-expected.txt: * platform/mac/fast/backgrounds/repeat/negative-offset-repeat-expected.txt: * platform/mac/fast/backgrounds/size/backgroundSize15-expected.txt: * platform/mac/fast/block/basic/010-expected.txt: * platform/mac/fast/block/basic/fieldset-stretch-to-legend-expected.txt: * platform/mac/fast/block/float/008-expected.txt: * platform/mac/fast/block/float/013-expected.txt: * platform/mac/fast/block/float/019-expected.txt: * platform/mac/fast/block/float/021-expected.txt: * platform/mac/fast/block/float/029-expected.txt: * platform/mac/fast/block/float/031-expected.txt: * platform/mac/fast/block/float/033-expected.txt: * platform/mac/fast/block/float/035-expected.txt: * platform/mac/fast/block/float/avoidance-percent-width-strict-expected.txt: * platform/mac/fast/block/float/clamped-right-float-expected.txt: * platform/mac/fast/block/float/float-in-float-painting-expected.txt: * platform/mac/fast/block/float/nested-clearance-expected.txt: * platform/mac/fast/block/float/relative-painted-twice-expected.txt: * platform/mac/fast/block/margin-collapse/004-expected.txt: * platform/mac/fast/block/margin-collapse/062-expected.txt: * platform/mac/fast/block/margin-collapse/063-expected.txt: * platform/mac/fast/block/margin-collapse/104-expected.txt: * platform/mac/fast/block/margin-collapse/block-inside-inline/004-expected.txt: * platform/mac/fast/block/margin-collapse/block-inside-inline/005-expected.txt: * platform/mac/fast/block/positioning/002-expected.txt: * platform/mac/fast/block/positioning/047-expected.txt: * platform/mac/fast/block/positioning/049-expected.txt: * platform/mac/fast/block/positioning/051-expected.txt: * platform/mac/fast/block/positioning/auto-height-with-top-and-bottom-expected.txt: * platform/mac/fast/block/positioning/replaced-inside-fixed-top-bottom-expected.txt: * platform/mac/fast/blockflow/block-level-images-expected.txt: * platform/mac/fast/blockflow/border-radius-clipping-vertical-lr-expected.txt: * platform/mac/fast/blockflow/box-shadow-vertical-lr-expected.txt: * platform/mac/fast/blockflow/box-shadow-vertical-rl-expected.txt: * platform/mac/fast/blockflow/floats-in-block-layout-expected.txt: * platform/mac/fast/body-propagation/background-color/002-expected.txt: * platform/mac/fast/body-propagation/background-color/002-xhtml-expected.txt: * platform/mac/fast/body-propagation/background-image/002-expected.txt: * platform/mac/fast/body-propagation/background-image/002-xhtml-expected.txt: * platform/mac/fast/body-propagation/overflow/001-expected.txt: * platform/mac/fast/body-propagation/overflow/001-xhtml-expected.txt: * platform/mac/fast/body-propagation/overflow/005-declarative-expected.txt: * platform/mac/fast/body-propagation/overflow/005-expected.txt: * platform/mac/fast/body-propagation/overflow/005-xhtml-expected.txt: * platform/mac/fast/borders/fieldsetBorderRadius-expected.txt: * platform/mac/fast/box-shadow/basic-shadows-expected.txt: * platform/mac/fast/box-sizing/box-sizing-expected.txt: * platform/mac/fast/clip/008-expected.txt: * platform/mac/fast/clip/009-expected.txt: * platform/mac/fast/clip/010-expected.txt: * platform/mac/fast/clip/011-expected.txt: * platform/mac/fast/clip/012-expected.txt: * platform/mac/fast/compact/001-expected.txt: * platform/mac/fast/css/color-correction-on-background-image-expected.txt: * platform/mac/fast/css/negative-leading-expected.txt: * platform/mac/fast/css/percentage-non-integer-expected.txt: * platform/mac/fast/css/word-space-extra-expected.txt: * platform/mac/fast/dom/clone-node-dynamic-style-expected.txt: * platform/mac/fast/dynamic/window-resize-scrollbars-test-expected.txt: * platform/mac/fast/events/focusingUnloadedFrame-expected.txt: * platform/mac/fast/flexbox/009-expected.txt: * platform/mac/fast/flexbox/016-expected.txt: * platform/mac/fast/flexbox/flex-hang-expected.txt: * platform/mac/fast/forms/basic-textareas-quirks-expected.txt: * platform/mac/fast/forms/file-input-direction-expected.txt: * platform/mac/fast/forms/floating-textfield-relayout-expected.txt: * platform/mac/fast/forms/textfield-overflow-expected.txt: * platform/mac/fast/frames/flattening/frameset-flattening-advanced-expected.txt: * platform/mac/fast/frames/flattening/frameset-flattening-grid-expected.txt: * platform/mac/fast/frames/flattening/frameset-flattening-simple-expected.txt: * platform/mac/fast/frames/flattening/frameset-flattening-subframe-resize-expected.txt: * platform/mac/fast/frames/flattening/frameset-flattening-subframesets-expected.txt: * platform/mac/fast/frames/frame-scrolling-attribute-expected.txt: * platform/mac/fast/frames/iframe-scrolling-attribute-expected.txt: * platform/mac/fast/frames/inline-object-inside-frameset-expected.txt: * platform/mac/fast/gradients/background-clipped-expected.txt: * platform/mac/fast/images/gif-large-checkerboard-expected.txt: * platform/mac/fast/images/pdf-as-image-landscape-expected.txt: * platform/mac/fast/inline-block/inline-block-vertical-align-expected.txt: * platform/mac/fast/inline/long-wrapped-line-expected.txt: * platform/mac/fast/layers/layer-visibility-expected.txt: * platform/mac/fast/layers/layer-visibility-sublayer-expected.txt: * platform/mac/fast/lists/001-expected.txt: * platform/mac/fast/lists/001-vertical-expected.txt: * platform/mac/fast/lists/003-expected.txt: * platform/mac/fast/lists/003-vertical-expected.txt: * platform/mac/fast/lists/li-br-expected.txt: * platform/mac/fast/media/mq-relative-constraints-02-expected.txt: * platform/mac/fast/media/mq-relative-constraints-03-expected.txt: * platform/mac/fast/media/mq-relative-constraints-04-expected.txt: * platform/mac/fast/media/mq-relative-constraints-05-expected.txt: * platform/mac/fast/media/mq-relative-constraints-06-expected.txt: * platform/mac/fast/media/mq-relative-constraints-07-expected.txt: * platform/mac/fast/media/mq-relative-constraints-08-expected.txt: * platform/mac/fast/media/mq-relative-constraints-09-expected.txt: * platform/mac/fast/media/mq-width-absolute-01-expected.txt: * platform/mac/fast/media/mq-width-absolute-02-expected.txt: * platform/mac/fast/media/mq-width-absolute-03-expected.txt: * platform/mac/fast/media/mq-width-absolute-04-expected.txt: * platform/mac/fast/multicol/float-multicol-expected.txt: * platform/mac/fast/multicol/float-paginate-complex-expected.txt: * platform/mac/fast/multicol/float-paginate-expected.txt: * platform/mac/fast/multicol/layers-in-multicol-expected.txt: * platform/mac/fast/multicol/paginate-block-replaced-expected.txt: * platform/mac/fast/multicol/positioned-with-constrained-height-expected.txt: * platform/mac/fast/multicol/span/anonymous-style-inheritance-expected.txt: * platform/mac/fast/multicol/table-vertical-align-expected.txt: * platform/mac/fast/overflow/006-expected.txt: * platform/mac/fast/overflow/float-in-relpositioned-expected.txt: * platform/mac/fast/overflow/overflow-auto-table-expected.txt: * platform/mac/fast/overflow/overflow-rtl-vertical-expected.checksum: Added. * platform/mac/fast/overflow/overflow-rtl-vertical-expected.png: Added. * platform/mac/fast/overflow/overflow-rtl-vertical-expected.txt: Added. * platform/mac/fast/overflow/scrollRevealButton-expected.txt: * platform/mac/fast/reflections/reflection-direction-expected.txt: * platform/mac/fast/repaint/box-shadow-h-expected.checksum: * platform/mac/fast/repaint/box-shadow-h-expected.png: * platform/mac/fast/repaint/box-shadow-h-expected.txt: * platform/mac/fast/repaint/box-shadow-v-expected.txt: * platform/mac/fast/repaint/content-into-overflow-expected.txt: * platform/mac/fast/repaint/dynamic-table-vertical-alignment-change-expected.txt: * platform/mac/fast/repaint/float-overflow-expected.txt: * platform/mac/fast/repaint/float-overflow-right-expected.txt: * platform/mac/fast/repaint/overflow-into-content-expected.txt: * platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt: * platform/mac/fast/repaint/subtree-root-clip-expected.txt: * platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.txt: * platform/mac/fast/repaint/transform-replaced-shadows-expected.checksum: * platform/mac/fast/repaint/transform-replaced-shadows-expected.png: * platform/mac/fast/replaced/004-expected.txt: * platform/mac/fast/table/034-expected.txt: * platform/mac/fast/table/border-collapsing/004-vertical-expected.txt: * platform/mac/fast/table/colspanMinWidth-vertical-expected.txt: * platform/mac/fast/table/fixed-with-auto-with-colspan-expected.txt: * platform/mac/fast/table/fixed-with-auto-with-colspan-vertical-expected.txt: * platform/mac/fast/table/frame-and-rules-expected.txt: * platform/mac/fast/table/height-percent-test-vertical-expected.txt: * platform/mac/fast/table/wide-colspan-expected.txt: * platform/mac/fast/table/wide-column-expected.txt: * platform/mac/fast/text/international/thai-line-breaks-expected.txt: * platform/mac/fast/text/large-text-composed-char-expected.txt: * platform/mac/fast/text/letter-spacing-negative-opacity-expected.txt: * platform/mac/fast/text/text-letter-spacing-expected.txt: * platform/mac/fast/text/whitespace/012-expected.txt: * platform/mac/mathml/presentation/fenced-expected.txt: * platform/mac/mathml/presentation/mo-expected.txt: * platform/mac/mathml/presentation/over-expected.txt: * platform/mac/mathml/presentation/row-alignment-expected.txt: * platform/mac/mathml/presentation/row-expected.txt: * platform/mac/printing/return-from-printing-mode-expected.txt: * platform/mac/svg/custom/altglyph-expected.txt: * platform/mac/svg/custom/getscreenctm-in-mixed-content-expected.txt: * platform/mac/svg/custom/path-bad-data-expected.txt: * platform/mac/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt: * platform/mac/svg/custom/svg-fonts-in-html-expected.txt: * platform/mac/svg/custom/text-xy-updates-SVGList-expected.txt: * platform/mac/svg/overflow/overflow-on-outermost-svg-element-in-xhtml-defaults-expected.txt: * platform/mac/svg/text/foreignObject-text-clipping-bug-expected.txt: * platform/mac/svg/text/kerning-expected.txt: * platform/mac/svg/text/multichar-glyph-expected.txt: * platform/mac/svg/transforms/animated-path-inside-transformed-html-expected.txt: * platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.txt: * platform/mac/svg/zoom/text/zoom-hixie-mixed-009-expected.txt: * platform/mac/tables/mozilla/bugs/bug120364-expected.txt: * platform/mac/tables/mozilla/bugs/bug131020-expected.txt: * platform/mac/tables/mozilla/bugs/bug196870-expected.txt: * platform/mac/tables/mozilla/bugs/bug23151-expected.txt: * platform/mac/tables/mozilla/bugs/bug29314-expected.txt: * platform/mac/tables/mozilla/bugs/bug43039-expected.txt: * platform/mac/tables/mozilla/bugs/bug43854-1-expected.txt: * platform/mac/tables/mozilla/bugs/bug45055-2-expected.txt: * platform/mac/tables/mozilla/bugs/bug5797-expected.txt: * platform/mac/tables/mozilla/bugs/bug625-expected.txt: * platform/mac/tables/mozilla/bugs/bug72359-expected.txt: * platform/mac/tables/mozilla/bugs/bug83786-expected.txt: * platform/mac/tables/mozilla/bugs/bug92143-expected.txt: * platform/mac/tables/mozilla/bugs/bug96334-expected.txt: * platform/mac/tables/mozilla/core/nested1-expected.txt: * platform/mac/tables/mozilla/marvin/backgr_index-expected.txt: * platform/mac/tables/mozilla/marvin/x_table_align_left-expected.txt: * platform/mac/tables/mozilla/marvin/x_table_align_right-expected.txt: * platform/mac/tables/mozilla/marvin/x_td_nowrap-expected.txt: * platform/mac/tables/mozilla/marvin/x_th_nowrap-expected.txt: * platform/mac/tables/mozilla_expected_failures/bugs/bug220653-expected.txt: * platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt: * platform/mac/tables/mozilla_expected_failures/bugs/bug67915-2-expected.txt: * platform/mac/tables/mozilla_expected_failures/bugs/bug85016-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_caption-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_caption_bottom-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_caption_left-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_caption_right-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_caption_top-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.txt: * platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.txt: * platform/mac/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt: * platform/mac/transforms/3d/point-mapping/3d-point-mapping-expected.txt: * platform/mac/transforms/3d/point-mapping/3d-point-mapping-origins-expected.txt: * platform/mac/transforms/3d/point-mapping/3d-point-mapping-preserve-3d-expected.txt: * platform/mac/transforms/svg-vs-css-expected.txt: * svg/custom/text-zoom-expected.txt: Canonical link: https://commits.webkit.org/63805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@73385 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 4aa1997 commit 58426bc

307 files changed

Lines changed: 1993 additions & 1634 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

LayoutTests/ChangeLog

Lines changed: 297 additions & 0 deletions
Large diffs are not rendered by default.

LayoutTests/compositing/checkerboard-expected.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
layer at (0,0) size 2055x2063
22
RenderView at (0,0) size 800x600
3-
layer at (0,0) size 2055x2063
3+
layer at (0,0) size 800x2063
44
RenderBlock {HTML} at (0,0) size 800x2063
55
RenderBody {BODY} at (8,8) size 784x2047
66
RenderBlock {DIV} at (0,0) size 2047x2047

LayoutTests/compositing/geometry/limit-layer-bounds-transformed-expected.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
Text here
22
(GraphicsLayer
3-
(bounds 1329.00 585.00)
3+
(bounds 800.00 600.00)
44
(children 1
55
(GraphicsLayer
6-
(bounds 1329.00 585.00)
6+
(bounds 800.00 600.00)
77
(children 3
88
(GraphicsLayer
99
(position 129.00 29.00)

LayoutTests/compositing/iframes/composited-parent-iframe-expected.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
(bounds 800.00 600.00)
44
(children 1
55
(GraphicsLayer
6-
(position -12.00 0.00)
7-
(bounds 812.00 600.00)
6+
(bounds 800.00 600.00)
87
(children 1
98
(GraphicsLayer
10-
(position 0.00 -12.00)
9+
(position -12.00 -12.00)
1110
(bounds 370.00 220.00)
1211
(drawsContent 1)
1312
(children 1

LayoutTests/fast/backgrounds/size/contain-and-cover-expected.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
layer at (0,0) size 800x600
22
RenderView at (0,0) size 800x600
3-
layer at (0,0) size 800x598
3+
layer at (0,0) size 800x0
44
RenderBlock {HTML} at (0,0) size 800x0
55
RenderBody {BODY} at (0,0) size 800x0
66
RenderBlock (floating) {DIV} at (2,2) size 396x146 [bgcolor=#ADD8E6] [border: (3px solid #000000)]

LayoutTests/fast/flexbox/009.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
display: -webkit-box;
1010
display: box;
1111
overflow:auto;
12+
-webkit-box-orient: vertical;
13+
-moz-box-orient: vertical;
1214
border: 2px solid olive;
1315
}
1416

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2+
"http://www.w3.org/TR/html4/loose.dtd">
3+
<html style="-webkit-writing-mode:vertical-lr">
4+
<head>
5+
<title>overflow:auto with direction:rtl</title>
6+
<style type="text/css">
7+
div.test { background: yellow; width: 6ex; height: 100px; overflow: auto;
8+
border-top: 10px solid red; border-bottom: 5px solid green; margin: 4px; }
9+
div.rtl { direction: rtl; border-bottom: 10px solid red; border-top: 5px solid green; }
10+
</style>
11+
</head>
12+
<body>
13+
<p>
14+
This is a test case for <i>http://bugzilla.opendarwin.org/show_bug.cgi?id=5826 Blocks with direction:rtl and overflow:auto or scroll have incorrect scrollbars</i>.
15+
</p>
16+
The right column should be a mirror-image of the left column in terms of
17+
<ul>
18+
<li>the presence of a scrollbar</li>
19+
<li>the initial position of the scroll thumb</li>
20+
<li>which letters are visible initially and when you scroll</li>
21+
</ul>
22+
<table>
23+
<tr>
24+
<td>
25+
<div class="test">
26+
abcdefghijklmnopqrstuvwxyz
27+
</div>
28+
29+
<div class="test">
30+
<div style="direction:rtl; background:lightgray;">abcdefghijklmnopqrstuvwxyz</div>
31+
</div>
32+
33+
<div class="test">
34+
<div style="direction:ltr; background:lightgray;">abcdefghijklmnopqrstuvwxyz</div>
35+
</div>
36+
</td>
37+
<td>
38+
<div class="test rtl">
39+
zyxwvutsrqponmlkjihgfedcba
40+
</div>
41+
42+
<div class="test rtl">
43+
<div style="direction:ltr; background:lightgray;">zyxwvutsrqponmlkjihgfedcba</div>
44+
</div>
45+
46+
<div class="test rtl">
47+
<div style="direction:rtl; background:lightgray;">zyxwvutsrqponmlkjihgfedcba</div>
48+
</div>
49+
</td>
50+
</tr>
51+
</table>
52+
</body>
53+
</html>

LayoutTests/fast/spatial-navigation/snav-clipped-overflowed-content-expected.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ PASS gFocusedDocument.activeElement.getAttribute("id") is "1"
77
PASS gFocusedDocument.activeElement.getAttribute("id") is "1"
88
PASS gFocusedDocument.activeElement.getAttribute("id") is "2"
99
PASS gFocusedDocument.activeElement.getAttribute("id") is "2"
10-
PASS gFocusedDocument.activeElement.getAttribute("id") is "2"
1110
PASS gFocusedDocument.activeElement.getAttribute("id") is "3"
1211
PASS gFocusedDocument.activeElement.getAttribute("id") is "2"
1312
PASS gFocusedDocument.activeElement.getAttribute("id") is "2"
14-
PASS gFocusedDocument.activeElement.getAttribute("id") is "2"
1513
PASS gFocusedDocument.activeElement.getAttribute("id") is "1"
1614
PASS gFocusedDocument.activeElement.getAttribute("id") is "1"
1715
PASS gFocusedDocument.activeElement.getAttribute("id") is "start"

LayoutTests/fast/spatial-navigation/snav-clipped-overflowed-content.html

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,9 @@
3737
["Down", "1"],
3838
["Down", "2"],
3939
["Down", "2"],
40-
["Down", "2"],
4140
["Down", "3"],
4241
["Up", "2"],
4342
["Up", "2"],
44-
["Up", "2"],
4543
["Up", "1"],
4644
["Up", "1"],
4745
["Up", "start"],
@@ -82,7 +80,7 @@
8280
<div></div>
8381
<img src="resources/green.png" width=200px height=200px>
8482
<div></div>
85-
<a id="2" href="a"><img src="resources/green.png" width=30px height=30px></a>.</p>
83+
<a id="2" href="a"><img src="resources/green.png" width=30px height=30px></a>.
8684
</div>
8785
<a id="3" href="a"><img src="resources/green.png" width=30px height=30px></a>
8886
<div id="console"></div>

LayoutTests/platform/mac/compositing/direct-image-compositing-expected.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
layer at (0,0) size 785x749
22
RenderView at (0,0) size 785x600
3-
layer at (0,0) size 785x749
3+
layer at (0,0) size 785x149
44
RenderBlock {HTML} at (0,0) size 785x149
55
RenderBody {BODY} at (8,21) size 769x112
66
RenderBlock {H1} at (0,0) size 769x37

0 commit comments

Comments
 (0)