Run https://bug-103081-attachments.webkit.org/attachment.cgi?id=175962 with WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS=1 Resize window to be smaller than one tile. Now resize to be bigger than 1 tile in height and 2 tiles in width. result: third tile row in in x-direction is not there.
Created attachment 176026 [details] Issue
To be able to easily reproduce, add the follwing patch: @@ -377,6 +377,8 @@ void TiledBackingStore::computeCoverAndKeepRect(const IntRect& visibleRect, IntR coverRect = visibleRect; keepRect = visibleRect; + return; + The bug is in @@ -196,6 +196,8 @@ void PageViewportController::didChangeViewportSize(const FloatSize& newSize) // it can resize the content accordingly. m_webPageProxy->setViewportSize(roundedIntSize(newSize)); syncVisibleContents(); } Which sync'ed the visible content before the new fixed layout size has been applied in the web process.
Created attachment 176251 [details] Test case
Created attachment 176274 [details] patch
Comment on attachment 176274 [details] patch Didn't this fix some layout tests?
Comment on attachment 176274 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=176274&action=review > Source/WebKit2/ChangeLog:8 > + The problem turned up because visible content was synchromized before the new fixed synchromized -> syncronized
Comment on attachment 176274 [details] patch Clearing flags on attachment: 176274 Committed r135864: <http://trac.webkit.org/changeset/135864>
All reviewed patches have been landed. Closing bug.
I spent a while using git bisect and it turns out that this patch seems to be causing failures in several css-sticky test cases. Try for example the following: WebKitBuild/Debug/bin/MiniBrowser LayoutTests/fast/css/sticky/inflow-sticky.html The output will be wrong (no blue stripe). Then try to resize the window, it will repaint and the blue stripe will appear. The output will then match the one in the -expected.html.
You can also test http://html5-demos.appspot.com/static/css/sticky.html You'll see that the sticky element does not behave as expected. It gets repositioned only when you resize the window. It is pretty broken.