[webkit-reviews] review denied: [Bug 28781] Add QWebFrame::renderElement to API : [Attachment 41045] Updated QWebElement::render implementation with API autotest

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Oct 14 08:36:40 PDT 2009


Simon Hausmann <hausmann at webkit.org> has denied Viatcheslav Ostapenko
<ostapenko.viatcheslav at nokia.com>'s request for review:
Bug 28781: Add QWebFrame::renderElement to API
https://bugs.webkit.org/show_bug.cgi?id=28781

Attachment 41045: Updated QWebElement::render implementation with API autotest
https://bugs.webkit.org/attachment.cgi?id=41045&action=review

------- Additional Comments from Simon Hausmann <hausmann at webkit.org>

> +void QWebElement::render(QPainter *painter)

Coding style, please place the * to the left :)

> +{
> +    WebCore::Element* e = m_element;
> +    Document* doc = e->document();
> +    if (!doc)
> +	   return;

This is going to crash if the element is a null element. How about this?

Document* doc = e ? e->document() : 0;

> +    QImage resource(":/image.png");
> +    QRect imageRect(0, 0, resource.width(), resource.height());
> +
> +    QImage testImage(resource.width(), resource.height(),
QImage::Format_ARGB32);
> +    QPainter painter0(&testImage);
> +    painter0.fillRect(imageRect, Qt::white);
> +    painter0.drawImage(0, 0, resource);
> +    painter0.end();
> +
> +    QImage image1(resource.width(), resource.height(),
QImage::Format_ARGB32);
> +    QPainter painter1(&image1);
> +    painter1.fillRect(imageRect, Qt::white);
> +    imgs[0].render(&painter1);
> +    painter1.end();
> +
> +    QCOMPARE(image1 == testImage, true);

It's easier to write

QVERIFY(image1 == testImage)

:-)

> +    // render image 2nd time to make sure that cached rendering works fine
> +    QImage image2(resource.width(), resource.height(),
QImage::Format_ARGB32);
> +    QPainter painter2(&image2);
> +    painter2.fillRect(imageRect, Qt::white);
> +    imgs[0].render(&painter2);
> +    painter2.end();
> +
> +    QCOMPARE(image2 == testImage, true);
> +
> +    // compare table rendered through QWebElement::render to whole page
table rendering
> +    QRect tableRect(0, 0, 300, 300);
> +    QList<QWebElement> tables = page.mainFrame()->findAllElements("table");
> +    QCOMPARE(tables.count(), 1);
> +
> +    QImage image3(300, 300, QImage::Format_ARGB32);
> +    QPainter painter3(&image3);
> +    painter3.fillRect(tableRect, Qt::white);
> +    tables[0].render(&painter3);
> +    painter3.end();
> +
> +    QImage image4(300, 300, QImage::Format_ARGB32);
> +    QPainter painter4(&image4);
> +    page.mainFrame()->setClipRenderToViewport(false);
> +    page.mainFrame()->render(&painter4, tableRect);
> +    painter4.end();

It's probably a matter of preference, but instead of allocating QImage123 and
QPainter123 you
could also use scopes. Just an idea :)

> +    QCOMPARE(image3 == image4, true);

QVERIFY() is simpler here, too.

r- because of the missing null pointer check, the rest looks fine to me :)


More information about the webkit-reviews mailing list