diff options
author | Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | 2009-11-12 10:36:19 (GMT) |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | 2009-11-12 10:36:19 (GMT) |
commit | a495b9a6ed660ac74596d3ce6700e47c2e1887eb (patch) | |
tree | a7d80c222af0bfd907a025e1ba5ecc4e4f3f4985 /src/3rdparty/webkit/WebKit/qt/tests | |
parent | 1212fbea0b6829986649dd1f237e59377f52a6cd (diff) | |
download | Qt-a495b9a6ed660ac74596d3ce6700e47c2e1887eb.zip Qt-a495b9a6ed660ac74596d3ce6700e47c2e1887eb.tar.gz Qt-a495b9a6ed660ac74596d3ce6700e47c2e1887eb.tar.bz2 |
Updated WebKit from /home/jturcott/dev/webkit/ to qtwebkit/qtwebkit-4.6 ( 361c6ae17415602fedcce8924de445feafaddebb )
Changes in WebKit/qt since the last update:
++ b/WebKit/qt/ChangeLog
2009-11-11 Liang QI <liang.qi@nokia.com>
[Qt] Fix tst_qwebpage and tst_qwebframe compilation on Symbian.
* tests/qwebframe/qwebframe.pro:
* tests/qwebframe/tst_qwebframe.cpp:
* tests/qwebpage/qwebpage.pro:
* tests/qwebpage/tst_qwebpage.cpp:
2009-11-11 Kenneth Rohde Christiansen <kenneth@webkit.org>
Reviewed by Simon Hausmann.
Fix a crash in the layout test plugins/document-open.html
* Api/qwebframe.cpp:
(QWebFrame::toPlainText):
2009-11-11 Warwick Allison <warwick.allison@nokia.com>, Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
[Qt] Regression: Preserve the parent of plugin objects when using
QtWebKit with only a QWebPage.
* WebCoreSupport/FrameLoaderClientQt.cpp:
(WebCore::FrameLoaderClientQt::createPlugin): Don't reparent
plugins to 0.
* tests/qwebpage/tst_qwebpage.cpp:
(PluginCounterPage::PluginCounterPage): Initialize m_pluginParent to 0.
(PluginCounterPage::~PluginCounterPage): Delete the plugin parent later
(after the page)
(PluginTracerPage::createPlugin): Assign a dummy parent to the plugin.
(PluginTracerPage::PluginTracerPage): Set up the plugin parent.
(tst_QWebPage::createViewlessPlugin): Verify that for viewless pages the
plugin parent remains unchanged.
2009-11-11 David Boddie <dboddie@trolltech.com>
[Qt] Doc: Added internal or hidden placeholder documentation.
* Api/qwebpage.cpp:
2009-11-11 Martin Smith <msmith@trolltech.com>
[Qt] doc: Changed Trolltech to Nokia
* Api/qwebview.cpp:
2009-11-10 Kenneth Rohde Christiansen <kenneth@webkit.org>
Unreviewed documentation fixes.
Added a few improvements from Jocelyn Turcotte to the
createWindow docs.
* Api/qwebview.cpp:
2009-11-10 Kenneth Rohde Christiansen <kenneth@webkit.org>
Unreviewed documentation fix.
[Qt] Make qwebpage's createWindow not qwebview dependent.
https://bugs.webkit.org/show_bug.cgi?id=30771
Update documentation to make it clear that a reimplementation
of the createWindow method of the associated QWebPage can
result in the QWebView::createWindow method to never be called.
* Api/qwebview.cpp:
2009-11-11 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
Fix enabling of software input panel when activating editable elements
in QGraphicsWebView.
* Api/qgraphicswebview.cpp:
(QGraphicsWebViewPrivate::inputMethodEnabled): Implement method to
query for input method support.
* Api/qwebpage.cpp:
(QWebPageWidgetClient::inputMethodEnabled): Ditto for QWidget.
(QWebPagePrivate::handleSoftwareInputPanel): Don't use view() to
test for input method support. Instead query using QWebPageClient
and send the SIPR event to the ownerWidget() instead of the view().
The latter is null for QGraphicsWebView.
* tests/qwebpage/tst_qwebpage.cpp:
(EventSpy::EventSpy):
(EventSpy::eventFilter):
(tst_QWebPage::inputMethods): Modify the test to verify that SIPR
events are dispatched when activating focusable content.
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/tests')
-rw-r--r-- | src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp | 59 |
1 files changed, 56 insertions, 3 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 93a1784..777c454 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -85,6 +85,22 @@ static bool waitForSignal(QObject* obj, const char* signal, int timeout = 10000) return timeoutSpy.isEmpty(); } +class EventSpy : public QObject, public QList<QEvent::Type> +{ + Q_OBJECT +public: + EventSpy(QObject* objectToSpy) + { + objectToSpy->installEventFilter(this); + } + + virtual bool eventFilter(QObject* receiver, QEvent* event) + { + append(event->type()); + return false; + } +}; + class tst_QWebPage : public QObject { Q_OBJECT @@ -646,20 +662,41 @@ class PluginCounterPage : public QWebPage { public: int m_count; QPointer<QObject> m_widget; - PluginCounterPage(QObject* parent = 0) : QWebPage(parent), m_count(0), m_widget(0) + QObject* m_pluginParent; + PluginCounterPage(QObject* parent = 0) + : QWebPage(parent) + , m_count(0) + , m_widget(0) + , m_pluginParent(0) { settings()->setAttribute(QWebSettings::PluginsEnabled, true); } + ~PluginCounterPage() + { + if (m_pluginParent) + m_pluginParent->deleteLater(); + } }; template<class T> class PluginTracerPage : public PluginCounterPage { public: - PluginTracerPage(QObject* parent = 0) : PluginCounterPage(parent) {} + PluginTracerPage(QObject* parent = 0) + : PluginCounterPage(parent) + { + // this is a dummy parent object for the created plugin + m_pluginParent = new T; + } virtual QObject* createPlugin(const QString&, const QUrl&, const QStringList&, const QStringList&) { m_count++; - return m_widget = new T(); + m_widget = new T; + // need a cast to the specific type, as QObject::setParent cannot be called, + // because it is not virtual. Instead it is necesary to call QWidget::setParent, + // which also takes a QWidget* instead of a QObject*. Therefore we need to + // upcast to T*, which is a QWidget. + static_cast<T*>(m_widget.data())->setParent(static_cast<T*>(m_pluginParent)); + return m_widget; } }; @@ -725,6 +762,8 @@ void tst_QWebPage::createViewlessPlugin() page->mainFrame()->setHtml(content); QCOMPARE(page->m_count, 1); QVERIFY(page->m_widget); + QVERIFY(page->m_pluginParent); + QVERIFY(page->m_widget->parent() == page->m_pluginParent); delete page; } @@ -1338,6 +1377,8 @@ void tst_QWebPage::inputMethods() "</body></html>"); page->mainFrame()->setFocus(); + EventSpy viewEventSpy(container); + QWebElementCollection inputs = page->mainFrame()->documentElement().findAll("input"); QMouseEvent evpres(QEvent::MouseButtonPress, inputs.at(0).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); @@ -1345,6 +1386,18 @@ void tst_QWebPage::inputMethods() QMouseEvent evrel(QEvent::MouseButtonRelease, inputs.at(0).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); page->event(&evrel); +#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) + QVERIFY(!viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); +#endif + viewEventSpy.clear(); + + page->event(&evpres); + page->event(&evrel); + +#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) + QVERIFY(viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); +#endif + //ImMicroFocus QVariant variant = page->inputMethodQuery(Qt::ImMicroFocus); QRect focusRect = variant.toRect(); |