[Qt] Implement textZoomIn() and textZoomOut() in DRT's EventSender, add results
[WebKit-https.git] / WebKitTools / DumpRenderTree / qt / EventSenderQt.h
1 /*
2  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
3  * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1.  Redistributions of source code must retain the above copyright
10  *     notice, this list of conditions and the following disclaimer.
11  * 2.  Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15  *     its contributors may be used to endorse or promote products derived
16  *     from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 #ifndef EventSenderQt_h
30 #define EventSenderQt_h
31
32 #include <QApplication>
33 #include <QEvent>
34 #include <QEventLoop>
35 #include <QMouseEvent>
36 #include <QObject>
37 #include <QPoint>
38 #include <QString>
39 #include <QStringList>
40
41 #include <qwebpage.h>
42 #include <qwebframe.h>
43
44 #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)
45 #include <QTouchEvent>
46 #endif
47
48 class EventSender : public QObject {
49     Q_OBJECT
50 public:
51     EventSender(QWebPage* parent);
52     virtual bool eventFilter(QObject* watched, QEvent* event);
53
54 public slots:
55     void mouseDown(int button = 0);
56     void mouseUp(int button = 0);
57     void mouseMoveTo(int x, int y);
58     void leapForward(int ms);
59     void keyDown(const QString& string, const QStringList& modifiers = QStringList(), unsigned int location = 0);
60     void clearKillRing() {}
61     void contextClick();
62     void scheduleAsynchronousClick();
63     void addTouchPoint(int x, int y);
64     void updateTouchPoint(int index, int x, int y);
65     void setTouchModifier(const QString &modifier, bool enable);
66     void touchStart();
67     void touchMove();
68     void touchEnd();
69     void zoomPageIn();
70     void zoomPageOut();
71     void textZoomIn();
72     void textZoomOut();
73     void clearTouchPoints();
74     void releaseTouchPoint(int index);
75
76 private:
77     void sendTouchEvent(QEvent::Type);
78     void sendOrQueueEvent(QEvent*);
79     void replaySavedEvents(bool flush);
80     QPoint m_mousePos;
81     Qt::MouseButtons m_mouseButtons;
82     QWebPage* m_page;
83     int m_timeLeap;
84     bool m_mouseButtonPressed;
85     bool m_drag;
86     QEventLoop* m_eventLoop;
87     QWebFrame* frameUnderMouse() const;
88 #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)
89     QList<QTouchEvent::TouchPoint> m_touchPoints;
90     Qt::KeyboardModifiers m_touchModifiers;
91     bool m_touchActive;
92 #endif
93 };
94 #endif //  EventSenderQt_h