summaryrefslogtreecommitdiffstats
path: root/WebKit/qt/tests/qwebview/tst_qwebview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/qt/tests/qwebview/tst_qwebview.cpp')
-rw-r--r--WebKit/qt/tests/qwebview/tst_qwebview.cpp122
1 files changed, 112 insertions, 10 deletions
diff --git a/WebKit/qt/tests/qwebview/tst_qwebview.cpp b/WebKit/qt/tests/qwebview/tst_qwebview.cpp
index ebcf4bb..8cd2f3f 100644
--- a/WebKit/qt/tests/qwebview/tst_qwebview.cpp
+++ b/WebKit/qt/tests/qwebview/tst_qwebview.cpp
@@ -28,10 +28,9 @@
#include <qnetworkrequest.h>
#include <qdiriterator.h>
#include <qwebkitversion.h>
+#include <qwebelement.h>
#include <qwebframe.h>
-#include <QDebug>
-
class tst_QWebView : public QObject
{
Q_OBJECT
@@ -48,6 +47,8 @@ private slots:
void reusePage_data();
void reusePage();
+ void microFocusCoordinates();
+ void focusInputTypes();
void crashTests();
};
@@ -141,22 +142,14 @@ void tst_QWebView::reusePage()
}
view1->show();
-#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)
QTest::qWaitForWindowShown(view1);
-#else
- QTest::qWait(2000);
-#endif
delete view1;
QVERIFY(page != 0); // deleting view must not have deleted the page, since it's not a child of view
QWebView *view2 = new QWebView;
view2->setPage(page);
view2->show(); // in Windowless mode, you should still be able to see the plugin here
-#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)
QTest::qWaitForWindowShown(view2);
-#else
- QTest::qWait(2000);
-#endif
delete view2;
delete page; // must not crash
@@ -203,6 +196,115 @@ void tst_QWebView::crashTests()
QTRY_VERIFY(tester.m_executed); // If fail it means that the test wasn't executed.
}
+void tst_QWebView::microFocusCoordinates()
+{
+ QWebPage* page = new QWebPage;
+ QWebView* webView = new QWebView;
+ webView->setPage( page );
+
+ page->mainFrame()->setHtml("<html><body>" \
+ "<input type='text' id='input1' style='font--family: serif' value='' maxlength='20'/><br>" \
+ "<canvas id='canvas1' width='500' height='500'/>" \
+ "<input type='password'/><br>" \
+ "<canvas id='canvas2' width='500' height='500'/>" \
+ "</body></html>");
+
+ page->mainFrame()->setFocus();
+
+ QVariant initialMicroFocus = page->inputMethodQuery(Qt::ImMicroFocus);
+ QVERIFY(initialMicroFocus.isValid());
+
+ page->mainFrame()->scroll(0,50);
+
+ QVariant currentMicroFocus = page->inputMethodQuery(Qt::ImMicroFocus);
+ QVERIFY(currentMicroFocus.isValid());
+
+ QCOMPARE(initialMicroFocus.toRect().translated(QPoint(0,-50)), currentMicroFocus.toRect());
+}
+
+void tst_QWebView::focusInputTypes()
+{
+ QWebView webView;
+ webView.show();
+ QTest::qWaitForWindowShown(&webView);
+
+ QUrl url("qrc:///resources/input_types.html");
+ QWebFrame* const mainFrame = webView.page()->mainFrame();
+ mainFrame->load(url);
+ mainFrame->setFocus();
+
+ QVERIFY(waitForSignal(&webView, SIGNAL(loadFinished(bool))));
+
+ // 'text' type
+ QWebElement inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=text]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) || defined(Q_OS_SYMBIAN)
+ QVERIFY(webView.inputMethodHints() & Qt::ImhNoAutoUppercase);
+ QVERIFY(webView.inputMethodHints() & Qt::ImhNoPredictiveText);
+#else
+ QVERIFY(webView.inputMethodHints() == Qt::ImhNone);
+#endif
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'password' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=password]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhHiddenText);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'tel' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=tel]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhDialableCharactersOnly);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'number' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=number]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhDigitsOnly);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'email' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=email]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhEmailCharactersOnly);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'url' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=url]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhUrlCharactersOnly);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'password' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=password]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhHiddenText);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'text' type
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=text]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) || defined(Q_OS_SYMBIAN)
+ QVERIFY(webView.inputMethodHints() & Qt::ImhNoAutoUppercase);
+ QVERIFY(webView.inputMethodHints() & Qt::ImhNoPredictiveText);
+#else
+ QVERIFY(webView.inputMethodHints() == Qt::ImhNone);
+#endif
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'password' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=password]"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhHiddenText);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // 'text area' field
+ inputElement = mainFrame->documentElement().findFirst(QLatin1String("textarea"));
+ QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+ QVERIFY(webView.inputMethodHints() == Qt::ImhNone);
+ QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
+}
QTEST_MAIN(tst_QWebView)
#include "tst_qwebview.moc"