2011-06-14 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
authorAdemar de Souza Reis Jr <ademar.reis@openbossa.org>
Tue, 14 Jun 2011 14:32:55 +0000 (11:32 -0300)
committerAdemar de Souza Reis Jr <ademar.reis@openbossa.org>
Tue, 14 Jun 2011 14:32:55 +0000 (11:32 -0300)
commitf49c89c0c3fbffc68931a564916dc900f04861ea
tree3e912c0875c3e41127f7408a8ed0901d1fd067d3
parent1e0a6b8d36485d0edf35c314f6bb794e3fa0d6f1
2011-06-14  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Andreas Kling.

        [Qt] tst_QWebFrame::overloadedSlots() fails
        https://bugs.webkit.org/show_bug.cgi?id=37319

        Increase the likeness that JSElements are converted to QWebElements. When hinted
        with QWebElement metatype, we qualify the conversion from JSElement as a "perfect
        match".

        The test was failing because the wrong slot was called, since the QWebElement
        match was taken as equal to the others and not chosen when the metacall happened.

        We also remove the implicit conversion between JSDocument (which is not an
        element) to QWebElement. The conversion only worked for calling slots, while
        without hint it returned a QVariantMap (as can be seen in domCycles test). It was
        added for supporting DRT, but since this change we can use it as QVariantMap and
        get the value for "documentElement".

        This patch is based on Noam Rosenthal original patch in the same bug.

        * bridge/qt/qt_runtime.cpp:
        (JSC::Bindings::hintForRealType):
        Extracted function to choose the metatype hint based on the JSValue type.  Add
        QWebElement metatype as a hint for JSElement objects, this way if no hint is
        provided, JSElement objects will always be converted to QWebElements.

        (JSC::Bindings::convertValueToQVariant):
        Use previous function. Identify the conversion between JSElement to QWebElement
        as a "perfect match" (dist = 0). And remove the implicit conversion when the hint
        is QWebElement metatype and we have a JSDocument.  Changed from JSHTMLElement to
        JSElement to cover the 'documentElement'.
2011-06-14  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Andreas Kling.

        [Qt] tst_QWebFrame::overloadedSlots() fails
        https://bugs.webkit.org/show_bug.cgi?id=37319

        Since the implicit conversion was removed, change support functions of DRT to
        expect a QVariantMap instead of a QWebElement. This matches the exposed function
        in the controller, which takes 'document' and not 'document.documentElement'.

        And now that Element -> QWebElement is a perfect match, we must use QWebElement
        instead of QVariantMap, like in plainText().

        * WebCoreSupport/DumpRenderTreeSupportQt.h:
        * WebCoreSupport/DumpRenderTreeSupportQt.cpp:
        (DumpRenderTreeSupportQt::plainText): Fix to use QWebElement instead of
        QVariantMap when getting the startContainer. Also use QVariantMap directly,
        bridge will do conversion for us now.

        (getCoreDocumentFromVariantMap): Extracts the WebCore::Document* from the
        QVariantMap that Qt bridge gives us when 'document' is passed from JS.

        (DumpRenderTreeSupportQt::nodesFromRect): Use helper function.

        * tests/qwebframe/tst_qwebframe.cpp: Splitted the test domCycles() into two
        different tests. In practice, the original test just checked whether we could
        create a QVariantMap representing 'document' without infinite looping due to
        cycles in the DOM. This was more evident before since we haven't a conversion
        from JSElement to QWebElement, but from JSElement to QVariantMap.

        (tst_QWebFrame::documentHasDocumentElement): Evaluates 'document' and extracts
        'documentElement' from it. Compares to QWebFrame::documentElement().

        (tst_QWebFrame::documentAllHasDocumentElement): Look inside 'document.all' for
        the documentElement.

        (tst_QWebFrame::overloadedSlots): Remove expected failure and fix wrong comment.
2011-06-14  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Andreas Kling.

        [Qt] tst_QWebFrame::overloadedSlots() fails
        https://bugs.webkit.org/show_bug.cgi?id=37319

        Since we don't implictly convert 'document' object to QWebElement
        in metacalls anymore, change the controller to expect QVariantMap instead.

        The method plainText() was updated to use QVariantMap as well to let the bridge
        do the conversion directly for us.

        * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
        (LayoutTestController::nodesFromRect):
        * DumpRenderTree/qt/LayoutTestControllerQt.h:
        * DumpRenderTree/qt/PlainTextControllerQt.cpp:
        (PlainTextController::plainText):
        * DumpRenderTree/qt/PlainTextControllerQt.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@88796 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Conflicts:

Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h
Source/WebCore/ChangeLog
Source/WebCore/bridge/qt/qt_runtime.cpp
Source/WebKit/qt/ChangeLog
Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp
Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h
Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
Tools/ChangeLog
Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp
Tools/DumpRenderTree/qt/LayoutTestControllerQt.h
Tools/DumpRenderTree/qt/PlainTextControllerQt.cpp
Tools/DumpRenderTree/qt/PlainTextControllerQt.h