Source/WebCore/ChangeLog

 12013-01-04 David Hyatt <hyatt@apple.com>
 2
 3 Make seamless iframes paginate properly in their enclosing document's pagination context.
 4 https://bugs.webkit.org/show_bug.cgi?id=106125
 5 <rdar://problem/12922720> Text in iframe is clipped while printing
 6
 7 Reviewed by NOBODY (OOPS!).
 8
 9 Added new tests in fast/multicol and fast/region.
 10
 11 * rendering/RenderBlock.cpp:
 12 (WebCore::RenderBlock::clampToStartAndEndRegions):
 13 Don't clamp when the RenderView is the containing block of an object in a RenderFlowThread.
 14
 15 * rendering/RenderObject.cpp:
 16 (WebCore::RenderObject::containerForRepaint):
 17 Don't attempt any repaint container antics when we're in a seamless iframe, since the ancestor
 18 document will actually do the handoff into the flow thread.
 19
 20 * rendering/RenderView.cpp:
 21 (WebCore::enclosingSeamlessRenderer):
 22 Heper function to test for an enclosing seamless iframe.
 23
 24 (WebCore::RenderView::addChild):
 25 Subclass addChild on RenderView to properly set the inRenderFlowThread state for a seamless
 26 child document so thta it will check regions.
 27
 28 (WebCore::RenderView::initializeLayoutState):
 29 New helper method for setting up the initial layout state of a RenderView. If inside a seamless
 30 paginated ancestor, set up the appropriate pagination information so the child document
 31 knows about it. This method will expand to inherit info about line grids and exclusions eventually
 32 also.
 33
 34 (WebCore::RenderView::layout):
 35 Now calls initializeLayoutState to set up the layout state.
 36
 37 * rendering/RenderView.h:
 38 (WebCore::RenderView::pageLogicalHeight):
 39 (WebCore::RenderView::setPageLogicalHeight):
 40 (RenderView):
 41 Fix the type of the page logical height methods to be LayoutUnit instead of unsigned.
 42
1432013-01-04 Elliott Sprehn <esprehn@chromium.org>
244
345 PseudoElement should never dispatch events
138832

Source/WebCore/rendering/RenderBlock.cpp

@@bool RenderBlock::logicalWidthChangedInR
73567356
73577357RenderRegion* RenderBlock::clampToStartAndEndRegions(RenderRegion* region) const
73587358{
7359  ASSERT(region && inRenderFlowThread());
7360 
 7359 ASSERT(isRenderView() || (region && inRenderFlowThread()));
 7360 if (isRenderView())
 7361 return region;
 7362
73617363 // We need to clamp to the block, since we want any lines or blocks that overflow out of the
73627364 // logical top or logical bottom of the block to size as though the border box in the first and
73637365 // last regions extended infinitely. Otherwise the lines are going to size according to the regions
138746

Source/WebCore/rendering/RenderObject.cpp

@@RenderLayerModelObject* RenderObject::co
12961296 // repainting to do individual region repaints.
12971297 if (inRenderFlowThread()) {
12981298 RenderFlowThread* parentRenderFlowThread = enclosingRenderFlowThread();
 1299 if (parentRenderFlowThread && parentRenderFlowThread->document() != document())
 1300 return repaintContainer; // The ancestor document will do the reparenting when the repaint propagates further up.
 1301 // We're just a seamless child document, and we don't need to do the hacking.
12991302 // If we have already found a repaint container then we will repaint into that container only if it is part of the same
13001303 // flow thread. Otherwise we will need to catch the repaint call and send it to the flow thread.
13011304 if (!(repaintContainer && repaintContainer->inRenderFlowThread() && repaintContainer->enclosingRenderFlowThread() == parentRenderFlowThread))
138746

Source/WebCore/rendering/RenderView.cpp

3333#include "HitTestResult.h"
3434#include "Page.h"
3535#include "RenderGeometryMap.h"
 36#include "RenderIFrame.h"
3637#include "RenderLayer.h"
3738#include "RenderLayerBacking.h"
3839#include "RenderNamedFlowThread.h"

@@void RenderView::checkLayoutState(const
156157}
157158#endif
158159
 160static RenderBox* enclosingSeamlessRenderer(Element* ownerElement)
 161{
 162 if (!ownerElement)
 163 return 0;
 164
 165 RenderObject* ownerElementRenderer = ownerElement->renderer();
 166 if (!ownerElementRenderer)
 167 return 0;
 168
 169 if (!ownerElementRenderer->isRenderIFrame())
 170 return 0;
 171
 172 RenderIFrame* iFrameRenderer = toRenderIFrame(ownerElementRenderer);
 173 if (!iFrameRenderer->isSeamless())
 174 return 0;
 175
 176 return iFrameRenderer;
 177}
 178
 179void RenderView::addChild(RenderObject* newChild, RenderObject* beforeChild)
 180{
 181 // Seamless iframes are considered part of an enclosing render flow thread from the parent document. This is necessary for them to look
 182 // up regions in the parent document during layout.
 183 if (newChild && !newChild->isRenderFlowThread() && view() && view()->frame() && view()->frame()->ownerElement()) {
 184 RenderObject* ownerElementRenderer = view()->frame()->ownerElement()->renderer();
 185 if (ownerElementRenderer && ownerElementRenderer->inRenderFlowThread() && ownerElementRenderer->isRenderIFrame() && toRenderIFrame(ownerElementRenderer)->isSeamless())
 186 newChild->setInRenderFlowThread();
 187 }
 188
 189 RenderBlock::addChild(newChild, beforeChild);
 190}
 191
 192void RenderView::initializeLayoutState(LayoutState& state)
 193{
 194 // FIXME: May be better to push a clip and avoid issuing offscreen repaints.
 195 state.m_clipped = false;
 196
 197 // Check the writing mode of the seamless ancestor. It has to match our document's writing mode, or we won't inherit any
 198 // pagination information.
 199 RenderBox* seamlessAncestor = enclosingSeamlessRenderer(document()->ownerElement());
 200 LayoutState* seamlessLayoutState = seamlessAncestor ? seamlessAncestor->view()->layoutState() : 0;
 201 bool shouldInheritPagination = seamlessLayoutState && !m_pageLogicalHeight && seamlessAncestor->style()->writingMode() == style()->writingMode();
 202
 203 state.m_pageLogicalHeight = shouldInheritPagination ? seamlessLayoutState->m_pageLogicalHeight : m_pageLogicalHeight;
 204 state.m_pageLogicalHeightChanged = shouldInheritPagination ? seamlessLayoutState->m_pageLogicalHeightChanged : m_pageLogicalHeightChanged;
 205 state.m_isPaginated = state.m_pageLogicalHeight;
 206 if (state.m_isPaginated && shouldInheritPagination) {
 207 // Set up the correct pagination offset. We can use a negative offset in order to push the top of the RenderView into its correct place
 208 // on a page. We can take the iframe's offset from the logical top of the first page and make the negative into the pagination offset within the child
 209 // view.
 210 bool isFlipped = seamlessAncestor->style()->isFlippedBlocksWritingMode();
 211 LayoutSize layoutOffset = seamlessLayoutState->layoutOffset();
 212 LayoutSize iFrameOffset(layoutOffset.width() + seamlessAncestor->x() + (!isFlipped ? seamlessAncestor->borderLeft() + seamlessAncestor->paddingLeft() :
 213 seamlessAncestor->borderRight() + seamlessAncestor->paddingRight()),
 214 layoutOffset.height() + seamlessAncestor->y() + (!isFlipped ? seamlessAncestor->borderTop() + seamlessAncestor->paddingTop() :
 215 seamlessAncestor->borderBottom() + seamlessAncestor->paddingBottom()));
 216
 217 LayoutSize offsetDelta = seamlessLayoutState->m_pageOffset - iFrameOffset;
 218 state.m_pageOffset = offsetDelta;
 219
 220 // Set the current render flow thread to point to our ancestor. This will allow the seamless document to locate the correct
 221 // regions when doing a layout.
 222 if (seamlessAncestor->inRenderFlowThread())
 223 flowThreadController()->setCurrentRenderFlowThread(seamlessAncestor->view()->flowThreadController()->currentRenderFlowThread());
 224 }
 225
 226 // FIXME: We need to make line grids and exclusions work with seamless iframes as well here. Basically all layout state information needs
 227 // to propagate here and not just pagination information.
 228}
 229
159230void RenderView::layout()
160231{
161232 StackStats::LayoutCheckPoint layoutCheckPoint;

@@void RenderView::layout()
183254 return;
184255
185256 LayoutState state;
186  // FIXME: May be better to push a clip and avoid issuing offscreen repaints.
187  state.m_clipped = false;
188  state.m_pageLogicalHeight = m_pageLogicalHeight;
189  state.m_pageLogicalHeightChanged = m_pageLogicalHeightChanged;
190  state.m_isPaginated = state.m_pageLogicalHeight;
 257 initializeLayoutState(state);
 258
191259 m_pageLogicalHeightChanged = false;
192260 m_layoutState = &state;
193261
138746

Source/WebCore/rendering/RenderView.h

@@public:
161161
162162 virtual void updateHitTestResult(HitTestResult&, const LayoutPoint&);
163163
164  unsigned pageLogicalHeight() const { return m_pageLogicalHeight; }
165  void setPageLogicalHeight(unsigned height)
 164 LayoutUnit pageLogicalHeight() const { return m_pageLogicalHeight; }
 165 void setPageLogicalHeight(LayoutUnit height)
166166 {
167167 if (m_pageLogicalHeight != height) {
168168 m_pageLogicalHeight = height;

@@public:
227227 void addRenderCounter() { m_renderCounterCount++; }
228228 void removeRenderCounter() { ASSERT(m_renderCounterCount > 0); m_renderCounterCount--; }
229229 bool hasRenderCounters() { return m_renderCounterCount; }
 230
 231 virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) OVERRIDE;
230232
231233protected:
232234 virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0) const OVERRIDE;
233235 virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE;
234236 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const;
235237 virtual bool requiresColumns(int desiredColumnCount) const OVERRIDE;
236 
 238
237239private:
 240 void initializeLayoutState(LayoutState& state);
 241
238242 virtual void calcColumnWidth() OVERRIDE;
239243 virtual ColumnInfo::PaginationUnit paginationUnit() const OVERRIDE;
240244

@@protected:
320324private:
321325 bool shouldUsePrintingLayout() const;
322326
323  unsigned m_pageLogicalHeight;
 327 LayoutUnit m_pageLogicalHeight;
324328 bool m_pageLogicalHeightChanged;
325329 LayoutState* m_layoutState;
326330 unsigned m_layoutStateDisableCount;
138746

LayoutTests/ChangeLog

 12013-01-04 David Hyatt <hyatt@apple.com>
 2
 3 Make seamless iframes paginate properly in their enclosing document's pagination context.
 4 https://bugs.webkit.org/show_bug.cgi?id=106125
 5 <rdar://problem/12922720> Text in iframe is clipped while printing
 6
 7 Reviewed by NOBODY (OOPS!).
 8
 9 Added new tests in fast/multicol and fast/region.
 10
 11 * fast/multicol/resources/ipad.jpg: Added.
 12 * fast/multicol/resources/seamless.html: Added.
 13 * fast/multicol/seamless-flowed-through-columns-expected.html: Added.
 14 * fast/multicol/seamless-flowed-through-columns.html: Added.
 15 * fast/regions/resources/ipad.jpg: Added.
 16 * fast/regions/resources/seamless.html: Added.
 17 * fast/regions/seamless-iframe-flowed-into-regions-expected.html: Added.
 18 * fast/regions/seamless-iframe-flowed-into-regions.html: Added.
 19
1202013-01-04 Elliott Sprehn <esprehn@chromium.org>
221
322 PseudoElement should never dispatch events
138832

LayoutTests/fast/multicol/seamless-flowed-through-columns-expected.html

 1<!doctype html>
 2<html>
 3<body style="overflow:hidden; height:900px; -webkit-column-count:4">
 4<p>First line outside iframe.</p>
 5<p>Second line outside iframe.</p>
 6<hr>
 7<div>
 8Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 9</div>
 10<p>
 11Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 12</p>
 13<p>
 14Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 15</p>
 16<p>
 17Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 18</p>
 19<p>
 20Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 21</p>
 22<p>
 23Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 24</p>
 25<img src="resources/ipad.jpg" style="max-width: 100%;"/>
 26<p>
 27Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 28</p>
 29<p>
 30Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 31</p>
 32<p>
 33Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 34</p>
 35<p>
 36Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 37</p>
 38<p>
 39Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 40</p>
 41</body>
 42</html>
 43
0

LayoutTests/fast/multicol/seamless-flowed-through-columns.html

 1<!doctype html>
 2<html>
 3<body style="overflow:hidden; height:900px; -webkit-column-count:4">
 4<p>First line outside iframe.</p>
 5<p>Second line outside iframe.</p>
 6<hr>
 7<iframe src="resources/seamless.html" seamless="seamless"></iframe>
 8</body>
 9</html>
 10
0

LayoutTests/fast/multicol/resources/seamless.html

 1<!doctype html>
 2<html>
 3<body style="margin:0">
 4<div>
 5Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 6</div>
 7<p>
 8Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 9</p>
 10<p>
 11Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 12</p>
 13<p>
 14Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 15</p>
 16<p>
 17Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 18</p>
 19<p>
 20Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 21</p>
 22<img src="ipad.jpg" style="max-width: 100%;"/>
 23<p>
 24Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 25</p>
 26<p>
 27Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 28</p>
 29<p>
 30Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 31</p>
 32<p>
 33Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 34</p>
 35<p>
 36Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 37</p>
 38</body>
 39</html>
0

LayoutTests/fast/regions/seamless-iframe-flowed-into-regions-expected.html

 1<!doctype html>
 2<html>
 3 <!--
 4 Test that the content is flowed properly into regions.
 5 On success, you should see that the colored boxes are displayed inside the 3 rectangles with black border.
 6 The green box should be displayed in the left rectangle.
 7 The blue box should be displayed in the middle rectangle.
 8 The orange box should be displayed in the right rectangle.
 9 -->
 10 <head>
 11 <link rel="stylesheet" href="resources/region-style.css">
 12 <style>
 13 .regionArticle { width: 350px; display:inline-block; margin:10px; border:2px solid blue }
 14 .one { height:300px; }
 15 .two { height:350px; }
 16 .three { height:400px; }
 17 .four { height:450px; }
 18 .five { height:500px;}
 19 .six { height:550px; }
 20 .seven { height:600px; }
 21 .eight { height:600px; }
 22 </style>
 23 </head>
 24 <body style="overflow:hidden">
 25 <div class="flowArticle">
 26 <p>First line outside the iframe.</p>
 27 <p>Second line outside the iframe.</p>
 28 <hr>
 29
 30<div>
 31Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 32</div>
 33<p>
 34Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 35</p>
 36<p>
 37Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 38</p>
 39<p>
 40Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 41</p>
 42<p>
 43Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 44</p>
 45<p>
 46Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 47</p>
 48<img src="resources/ipad.jpg" style="max-width: 100%;"/>
 49<p>
 50Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 51</p>
 52<p>
 53Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 54</p>
 55<p>
 56Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 57</p>
 58<p>
 59Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 60</p>
 61<p>
 62Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 63</p>
 64
 65
 66 </div>
 67 <div class="regionArticle one"></div>
 68 <div class="regionArticle two"></div>
 69 <div class="regionArticle three"></div>
 70 <div class="regionArticle four"></div>
 71 <div class="regionArticle five"></div>
 72 <div class="regionArticle six"></div>
 73 <div class="regionArticle seven"></div>
 74 <div class="regionArticle eight"></div>
 75 </body>
 76</html>
0

LayoutTests/fast/regions/seamless-iframe-flowed-into-regions.html

 1<!doctype html>
 2<html>
 3 <!--
 4 Test that the content is flowed properly into regions.
 5 On success, you should see that the colored boxes are displayed inside the 3 rectangles with black border.
 6 The green box should be displayed in the left rectangle.
 7 The blue box should be displayed in the middle rectangle.
 8 The orange box should be displayed in the right rectangle.
 9 -->
 10 <head>
 11 <link rel="stylesheet" href="resources/region-style.css">
 12 <style>
 13 .regionArticle { width: 350px; display:inline-block; margin:10px; border:2px solid blue }
 14 .one { height:300px; }
 15 .two { height:350px; }
 16 .three { height:400px; }
 17 .four { height:450px; }
 18 .five { height:500px;}
 19 .six { height:550px; }
 20 .seven { height:600px; }
 21 .eight { height:600px; }
 22 </style>
 23 </head>
 24 <body style="overflow:hidden">
 25 <div class="flowArticle">
 26 <p>First line outside the iframe.</p>
 27 <p>Second line outside the iframe.</p>
 28 <hr>
 29 <iframe scrolling=no src="resources/seamless.html" seamless="seamless"></iframe>
 30 </div>
 31 <div class="regionArticle one"></div>
 32 <div class="regionArticle two"></div>
 33 <div class="regionArticle three"></div>
 34 <div class="regionArticle four"></div>
 35 <div class="regionArticle five"></div>
 36 <div class="regionArticle six"></div>
 37 <div class="regionArticle seven"></div>
 38 <div class="regionArticle eight"></div>
 39 </body>
 40</html>
0

LayoutTests/fast/regions/resources/seamless.html

 1<!doctype html>
 2<html>
 3<body style="margin:0">
 4<div>
 5Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 6</div>
 7<p>
 8Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 9</p>
 10<p>
 11Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 12</p>
 13<p>
 14Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 15</p>
 16<p>
 17Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 18</p>
 19<p>
 20Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 21</p>
 22<img src="ipad.jpg" style="max-width: 100%;"/>
 23<p>
 24Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut odio purus, pharetra at tempor id, malesuada viverra neque. Donec nisi tortor, fringilla vitae sodales et, commodo in ante. Sed tincidunt nulla id dui imperdiet convallis. Donec tempus congue orci sed aliquet. Cras urna turpis, congue in laoreet sit amet, commodo et massa. Nam sed sem nec lorem dictum tempor non vitae massa. Cras varius ultrices ullamcorper. Vestibulum sed ante in tellus venenatis blandit eget et neque. Donec ullamcorper porttitor tellus id rhoncus. Quisque tortor mi, mollis vitae rutrum non, faucibus a tellus. Phasellus ac nisl et ante ultricies tristique vitae at urna. Vestibulum aliquet, sapien in adipiscing accumsan, sem nulla gravida augue, et elementum velit orci id quam. Nulla quis erat non quam vehicula tincidunt.
 25</p>
 26<p>
 27Aliquam tristique dolor vel ligula sollicitudin rhoncus. Integer eget quam orci. Nulla mattis neque vitae arcu volutpat euismod. Donec ut tortor in sem consectetur sodales sed non augue. Integer quis mauris id purus pulvinar elementum vitae at lacus. Vestibulum rutrum ornare lacinia. In pretium vestibulum leo, dapibus pretium arcu euismod elementum. Nulla facilisi. Phasellus molestie elementum est, vel rhoncus magna condimentum ut. Nunc ac libero eget mi convallis aliquam non in neque. Praesent lobortis, lorem semper auctor egestas, felis sem sollicitudin tellus, a vehicula odio risus et nibh.
 28</p>
 29<p>
 30Nunc pellentesque vehicula ligula, ut posuere nunc consequat rutrum. Integer feugiat, risus eget tristique porttitor, massa lacus auctor neque, in scelerisque mauris orci in enim. Nam molestie, leo sit amet dictum elementum, lectus lorem aliquet elit, non tempus augue diam quis mauris. Nunc in massa id neque consequat posuere. Nullam semper est vitae sem lobortis vehicula. Donec luctus rhoncus augue eget molestie. Aliquam iaculis nibh nec ipsum tempor vel lacinia enim mattis. Nullam iaculis condimentum velit, nec porttitor sem viverra viverra. In hac habitasse platea dictumst. Proin id augue nec nisi tincidunt pulvinar. Proin hendrerit sem justo, eget lobortis purus. Fusce et dapibus mauris. Donec pharetra ante vel nulla viverra non feugiat velit commodo. Integer cursus suscipit pharetra.
 31</p>
 32<p>
 33Cras nec tortor dui. Morbi tincidunt accumsan neque, vitae laoreet lorem vehicula interdum. Duis blandit elit a lectus tempor fringilla. Proin quis libero id purus pulvinar mollis id ut sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque vitae placerat sem. Phasellus quis dignissim mi. Cras semper, dolor malesuada laoreet dapibus, tellus lectus fermentum tellus, nec sagittis mi eros eget lorem. Suspendisse feugiat porta suscipit. Mauris bibendum lorem nec nunc pretium ac volutpat dui malesuada.
 34</p>
 35<p>
 36Aenean risus magna, tincidunt vel auctor condimentum, tempus id leo. Curabitur varius sapien ac magna rhoncus interdum eleifend odio vehicula. Quisque luctus quam libero, ac ultrices eros. In dignissim porta nunc, et fermentum felis hendrerit nec. Suspendisse dignissim felis id arcu consectetur vitae sodales ante laoreet. Etiam scelerisque lectus quis mi mattis pellentesque. Integer adipiscing, augue quis cursus dignissim, orci justo accumsan tellus, sed lobortis quam quam at velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eu diam hendrerit leo egestas mattis. Aliquam in ultricies sem. Fusce at metus a nunc posuere convallis in nec sapien.
 37</p>
 38</body>
 39</html>
0

LayoutTests/fast/multicol/resources/ipad.jpg

LayoutTests/fast/regions/resources/ipad.jpg