WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
77736
Rewrite SVG tests to make extensive use of display() in repaint tests
https://bugs.webkit.org/show_bug.cgi?id=77736
Summary
Rewrite SVG tests to make extensive use of display() in repaint tests
Nikolas Zimmermann
Reported
2012-02-03 06:58:24 PST
This bug covers all tests in svg/ except for the dynamic-updates/ and custom/ folders -- 140 tests remaining to examine.
Attachments
Patch v1
(
deleted
)
2012-02-03 07:53 PST
,
Nikolas Zimmermann
no flags
Details
Formatted Diff
Diff
Patch v2
(
deleted
)
2012-02-03 08:39 PST
,
Nikolas Zimmermann
no flags
Details
Formatted Diff
Diff
Patch v3
(
deleted
)
2012-02-05 09:06 PST
,
Nikolas Zimmermann
no flags
Details
Formatted Diff
Diff
Patch v4
(
deleted
)
2012-02-05 09:23 PST
,
Nikolas Zimmermann
no flags
Details
Formatted Diff
Diff
Patch v5
(
deleted
)
2012-02-05 14:53 PST
,
Nikolas Zimmermann
no flags
Details
Formatted Diff
Diff
Patch v6
(
deleted
)
2012-02-05 16:58 PST
,
Nikolas Zimmermann
no flags
Details
Formatted Diff
Diff
Patch v7
(
deleted
)
2012-02-06 02:29 PST
,
Nikolas Zimmermann
kling
: review+
Details
Formatted Diff
Diff
Show Obsolete
(7)
View All
Add attachment
proposed patch, testcase, etc.
Nikolas Zimmermann
Comment 1
2012-02-03 07:44:23 PST
CC'ing Simon & James. I'd be glad if any of you could check the patch, and see whether the approach is sane now. I basically grepped for all tests containing waitUntilDone() and/or setTimeout calls, and fixed all that don't use dumpAsText() to repaint correctly, by forcing it using display() calls and layout triggers before. I left out svg/dynamic-updates, and svg/custom as they are quite large, and should be done in a separated bug. There are "only" 140 tests left that need fixing, but I'd like to hear if it's all okay this way.
Nikolas Zimmermann
Comment 2
2012-02-03 07:53:18 PST
Created
attachment 125327
[details]
Patch v1
Nikolas Zimmermann
Comment 3
2012-02-03 08:06:30 PST
*grml* I can't upload this using webkit-patch upload, as the patch is too large (it fails w/o an error, pretending it worked). As a git-newbie, I don't know how to correctly format the patch so it applies.
Nikolas Zimmermann
Comment 4
2012-02-03 08:39:10 PST
Created
attachment 125340
[details]
Patch v2 Ok, webkit-patch doesn't handle large files, trying git diff --binary per Ossys suggestion.
Dirk Schulze
Comment 5
2012-02-03 10:07:58 PST
Comment on
attachment 125340
[details]
Patch v2 Just as a comment. It might depend on the test, but often you just want to know the result at the end. Therefore I don't see a reason to run the display differences on all tests. This would also make it harder to create Ref Tests in the future. And I really think that we should migrate to Ref Tests as much as possible in order to reduce pixel results (often for every single platform).
James Robinson
Comment 6
2012-02-03 11:07:50 PST
(In reply to
comment #5
)
> (From update of
attachment 125340
[details]
) > Just as a comment. It might depend on the test, but often you just want to know the result at the end. Therefore I don't see a reason to run the display differences on all tests. This would also make it harder to create Ref Tests in the future. And I really think that we should migrate to Ref Tests as much as possible in order to reduce pixel results (often for every single platform).
Agree. Are these tests of type (1) or (2) by the classification in
https://bugs.webkit.org/show_bug.cgi?id=77541#c2
?
Nikolas Zimmermann
Comment 7
2012-02-03 13:34:50 PST
(In reply to
comment #6
)
> Agree. Are these tests of type (1) or (2) by the classification in
https://bugs.webkit.org/show_bug.cgi?id=77541#c2
?
All type (2).
James Robinson
Comment 8
2012-02-03 13:41:25 PST
For type (2) I think this is the right approach. Summarizing some suggestions from IRC: 1.) use LayoutTests/fast/repaint/resources/repaint.js harness, it provides nice fallback when loading the test in a browser and takes care of things like flushing styles so you don't have to do so in every test 2.) run the test logic in window.onload, not from a setTimeout() set in an inline script since the latter might run before the document has been fully parsed. it's an unlikely race to lose but can still cause flake, especially if any of these are ever run as http tests
Nikolas Zimmermann
Comment 9
2012-02-05 09:06:05 PST
Created
attachment 125529
[details]
Patch v3
Nikolas Zimmermann
Comment 10
2012-02-05 09:23:20 PST
Created
attachment 125530
[details]
Patch v4
Nikolas Zimmermann
Comment 11
2012-02-05 14:53:52 PST
Created
attachment 125536
[details]
Patch v5
Nikolas Zimmermann
Comment 12
2012-02-05 16:53:27 PST
Still fighting with a particular layout test, I hope the bots like this patch now. I've added runSVGRepaintTest() to the repaint.js harness to encapsulate the different handling related to the SVG load event timing. Once we fix the SVG load time, to fire later (as HTML load event) the need for the setTimeout() will vanish - for now centralize this hack, so we can turn it off easily later.
Nikolas Zimmermann
Comment 13
2012-02-05 16:58:10 PST
Created
attachment 125544
[details]
Patch v6
WebKit Review Bot
Comment 14
2012-02-05 19:09:50 PST
Comment on
attachment 125544
[details]
Patch v6
Attachment 125544
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11432102
New failing tests: svg/zoom/text/zoom-coords-viewattr-01-b.svg
WebKit Review Bot
Comment 15
2012-02-05 19:47:23 PST
Comment on
attachment 125544
[details]
Patch v6
Attachment 125544
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11432113
New failing tests: svg/zoom/text/zoom-coords-viewattr-01-b.svg
Dirk Schulze
Comment 16
2012-02-05 21:23:04 PST
Did you read
https://bugs.webkit.org/show_bug.cgi?id=69459#c18
?
Nikolas Zimmermann
Comment 17
2012-02-06 02:14:36 PST
(In reply to
comment #12
)
> Still fighting with a particular layout test, I hope the bots like this patch now. > I've added runSVGRepaintTest() to the repaint.js harness to encapsulate the different handling related to the SVG load event timing. Once we fix the SVG load time, to fire later (as HTML load event) the need for the setTimeout() will vanish - for now centralize this hack, so we can turn it off easily later.
There were line-ending problems with svg/filters/invalidate-child-layout.svg - I fixed them in trunk, hopefully the patch applies now. Will also add a better ChangeLog, and hopefully fix the last chromium expectation problem.
Nikolas Zimmermann
Comment 18
2012-02-06 02:29:55 PST
Created
attachment 125601
[details]
Patch v7
Andreas Kling
Comment 19
2012-02-07 02:42:08 PST
Comment on
attachment 125601
[details]
Patch v7 View in context:
https://bugs.webkit.org/attachment.cgi?id=125601&action=review
Looks pretty damn good. r=me!
> LayoutTests/ChangeLog:8 > + Convert all tests in svg/ (except svg/custom & svg/dynamic-updates) that excersive repainting to use the
Typo, exercise.
> LayoutTests/svg/as-background-image/animated-svg-as-background.html:9 > + // The animation durates 100ms. Wait 200ms for the repaint.
Not sure 'durate' is an English word. Same comment for all occurrences. :)
Nikolas Zimmermann
Comment 20
2012-02-07 03:20:03 PST
Committed
r106918
: <
http://trac.webkit.org/changeset/106918
>
Csaba Osztrogonác
Comment 21
2012-02-07 08:33:50 PST
It made svg/zoom/page/zoom-foreignObject.svg crash with Qt5-WK1. svg/zoom/page/zoom-foreignObject.svg works fine if I run only this test, but crahes if I run all tests or svg/zoom/page tests. 1 0x8067c7b /home/oszi/WebKit/WebKitBuild/Release/bin/DumpRenderTree() [0x8067c7b] 2 0xf7742400 [0xf7742400] 3 0xf6531ab6 /home/oszi/WebKit/WebKitBuild/Release/lib/libQtWebKit.so.4(WebCore::ThreadTimers::sharedTimerFiredInternal()+0xa6) [0xf6531ab6] 4 0xf6531b95 /home/oszi/WebKit/WebKitBuild/Release/lib/libQtWebKit.so.4(WebCore::ThreadTimers::sharedTimerFired()+0x45) [0xf6531b95] 5 0xf671def6 /home/oszi/WebKit/WebKitBuild/Release/lib/libQtWebKit.so.4(WebCore::SharedTimerQt::timerEvent(QTimerEvent*)+0x46) [0xf671def6] 6 0xf3ba53d4 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QObject::event(QEvent*)+0x84) [0xf3ba53d4] 7 0xf44967ac /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtWidgets.so.5(QApplicationPrivate::notify_helper(QObject*, QEvent*)+0xac) [0xf44967ac] 8 0xf449d4fe /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtWidgets.so.5(QApplication::notify(QObject*, QEvent*)+0x15e) [0xf449d4fe] 9 0xf3b883db /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QCoreApplication::notifyInternal(QObject*, QEvent*)+0x7b) [0xf3b883db] 10 0xf3bc9ae8 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QTimerInfoList::activateTimers()+0x3b8) [0xf3bc9ae8] 11 0xf3bca58a /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(+0x20358a) [0xf3bca58a] 12 0xf4fa8305 /lib/libglib-2.0.so.0(g_main_context_dispatch+0x1d5) [0xf4fa8305] 13 0xf4fabfe8 /lib/libglib-2.0.so.0(+0x3efe8) [0xf4fabfe8] 14 0xf4fac1c8 /lib/libglib-2.0.so.0(g_main_context_iteration+0x68) [0xf4fac1c8] 15 0xf3bca275 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x65) [0xf3bca275] 16 0xf3b86e61 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x31) [0xf3b86e61] 17 0xf3b87352 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+0x132) [0xf3b87352] 18 0xf3b8d5bf /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtCore.so.5(QCoreApplication::exec()+0xaf) [0xf3b8d5bf] 19 0xf3e03f47 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtGui.so.5(QGuiApplication::exec()+0x17) [0xf3e03f47] 20 0xf4495d27 /usr/local/Trolltech/Qt5/Qt-5.0.0-r21/lib/libQtWidgets.so.5(QApplication::exec()+0x27) [0xf4495d27] 21 0x8068a91 /home/oszi/WebKit/WebKitBuild/Release/bin/DumpRenderTree() [0x8068a91] 22 0xf36e0c96 /lib/libc.so.6(__libc_start_main+0xe6) [0xf36e0c96]
Nikolas Zimmermann
Comment 22
2012-02-07 13:00:16 PST
This induces some flakiness, see
bug 78021
- at least for DRT/Mac.
Nikolas Zimmermann
Comment 23
2012-02-08 02:25:31 PST
Comment on
attachment 125601
[details]
Patch v7
Bug 78084
is resolved, outermost <svg> SVGLoad event fires as soon as HTML load event. Removed the special runSVGRepaintTest() it's no longer needed.
Nikolas Zimmermann
Comment 24
2012-02-08 03:50:38 PST
(In reply to
comment #21
)
> It made svg/zoom/page/zoom-foreignObject.svg crash with Qt5-WK1. > svg/zoom/page/zoom-foreignObject.svg works fine if I run only this test, > but crahes if I run all tests or svg/zoom/page tests.
This regression is fixed as well,
bug 77995
is just landing.
Nikolas Zimmermann
Comment 25
2012-02-09 03:48:21 PST
Closing this bug, the remaining individual bugs, have to be fixed now.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug