summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebKit/qt/tests
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@nokia.com>2009-11-12 10:36:19 (GMT)
committerJocelyn Turcotte <jocelyn.turcotte@nokia.com>2009-11-12 10:36:19 (GMT)
commita495b9a6ed660ac74596d3ce6700e47c2e1887eb (patch)
treea7d80c222af0bfd907a025e1ba5ecc4e4f3f4985 /src/3rdparty/webkit/WebKit/qt/tests
parent1212fbea0b6829986649dd1f237e59377f52a6cd (diff)
downloadQt-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.cpp59
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();