Remove "All rights reserved" line from license headers.
[profile/ivi/qtdeclarative.git] / tests / auto / qtquick2 / qquickitem / tst_qquickitem.cpp
index e38dcf4..3ff5054 100644 (file)
@@ -1,8 +1,7 @@
 /****************************************************************************
 **
 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
 **
 ** This file is part of the test suite of the Qt Toolkit.
 **
@@ -35,6 +34,7 @@
 **
 **
 **
+**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
@@ -66,16 +66,30 @@ protected:
     virtual void focusOutEvent(QFocusEvent *) { Q_ASSERT(focused); focused = false; }
     virtual void mousePressEvent(QMouseEvent *event) { event->accept(); ++pressCount; }
     virtual void mouseReleaseEvent(QMouseEvent *event) { event->accept(); ++releaseCount; }
+    virtual void touchEvent(QTouchEvent *event) { event->accept(); }
     virtual void wheelEvent(QWheelEvent *event) { event->accept(); ++wheelCount; }
 };
 
+class TestCanvas: public QQuickCanvas
+{
+public:
+    TestCanvas()
+        : QQuickCanvas()
+    {}
+
+    virtual bool event(QEvent *event)
+    {
+        return QQuickCanvas::event(event);
+    }
+};
+
 class TestPolishItem : public QQuickItem
 {
 Q_OBJECT
 public:
-    TestPolishItem(QQuickItem *parent)
+    TestPolishItem(QQuickItem *parent = 0)
     : QQuickItem(parent), wasPolished(false) {
-        QTimer::singleShot(10, this, SLOT(doPolish()));
+
     }
 
     bool wasPolished;
@@ -109,6 +123,8 @@ class tst_qquickitem : public QDeclarativeDataTest
 public:
 
 private slots:
+    void initTestCase();
+
     void noCanvas();
     void simpleFocus();
     void scopedFocus();
@@ -122,7 +138,9 @@ private slots:
     void enabled();
 
     void mouseGrab();
+    void touchEventAccept();
     void polishOutsideAnimation();
+    void polishOnCompleted();
 
     void wheelEvent_data();
     void wheelEvent();
@@ -146,6 +164,12 @@ private:
     }
 };
 
+void tst_qquickitem::initTestCase()
+{
+    QDeclarativeDataTest::initTestCase();
+    qmlRegisterType<TestPolishItem>("Qt.test", 1, 0, "TestPolishItem");
+}
+
 // Focus has no effect when outside a canvas
 void tst_qquickitem::noCanvas()
 {
@@ -853,6 +877,31 @@ void tst_qquickitem::mouseGrab()
     delete canvas;
 }
 
+void tst_qquickitem::touchEventAccept()
+{
+    TestCanvas *canvas = new TestCanvas;
+    canvas->resize(100, 100);
+    canvas->show();
+
+    TestItem *item = new TestItem;
+    item->setSize(QSizeF(100, 100));
+    item->setParentItem(canvas->rootItem());
+
+    static QTouchDevice* device = new QTouchDevice;
+    device->setType(QTouchDevice::TouchScreen);
+    QWindowSystemInterface::registerTouchDevice(device);
+
+    QTouchEvent *event = new QTouchEvent(QEvent::TouchBegin, device);
+
+    bool accepted = canvas->event(event);
+
+    QVERIFY(accepted && event->isAccepted());
+
+    delete event;
+    delete item;
+    delete canvas;
+}
+
 void tst_qquickitem::polishOutsideAnimation()
 {
     QQuickCanvas *canvas = new QQuickCanvas;
@@ -862,12 +911,32 @@ void tst_qquickitem::polishOutsideAnimation()
     TestPolishItem *item = new TestPolishItem(canvas->rootItem());
     item->setSize(QSizeF(200, 100));
     QTest::qWait(50);
+
+    QTimer::singleShot(10, item, SLOT(doPolish()));
     QTRY_VERIFY(item->wasPolished);
 
     delete item;
     delete canvas;
 }
 
+void tst_qquickitem::polishOnCompleted()
+{
+    QQuickView *view = new QQuickView;
+    view->setSource(testFileUrl("polishOnCompleted.qml"));
+    view->show();
+
+    TestPolishItem *item = qobject_cast<TestPolishItem*>(view->rootObject());
+    QVERIFY(item);
+
+#ifdef Q_OS_MAC
+    QSKIP("QTBUG-21590 view does not reliably receive polish without a running animation");
+#endif
+
+    QTRY_VERIFY(item->wasPolished);
+
+    delete view;
+}
+
 void tst_qquickitem::wheelEvent_data()
 {
     QTest::addColumn<bool>("visible");