[Qt][WK2] Cleanup dead code in QtWebPageProxy.
[WebKit.git] / Source / WebKit2 / UIProcess / qt / QtWebPageProxy.h
1 /*
2  * Copyright (C) 2010, 2011 Nokia Corporation and/or its subsidiary(-ies)
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this program; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  *
19  */
20
21 #ifndef QtWebPageProxy_h
22 #define QtWebPageProxy_h
23
24 #include "DrawingAreaProxy.h"
25 #include "LayerTreeContext.h"
26 #include "PageClient.h"
27 #include "QtDownloadManager.h"
28 #include "QtPanGestureRecognizer.h"
29 #include "QtPinchGestureRecognizer.h"
30 #include "QtPolicyInterface.h"
31 #include "QtTapGestureRecognizer.h"
32 #include "QtViewInterface.h"
33 #include "ShareableBitmap.h"
34 #include "ViewportArguments.h"
35 #include "WebContext.h"
36 #include "WebPageProxy.h"
37 #include <wtf/RefPtr.h>
38 #include <QBasicTimer>
39 #include <QGraphicsView>
40 #include <QKeyEvent>
41 #include <QTouchEvent>
42 #include <QMenu>
43 #include <QSharedPointer>
44
45 QT_BEGIN_NAMESPACE
46 class QUndoStack;
47 QT_END_NAMESPACE
48
49 class QtWebError;
50 class QWebPreferences;
51 class QWKHistory;
52
53 using namespace WebKit;
54
55 WebCore::DragOperation dropActionToDragOperation(Qt::DropActions actions);
56
57 // FIXME: needs focus in/out, window activation, support through viewStateDidChange().
58 class QtWebPageProxy : public QObject, WebKit::PageClient {
59     Q_OBJECT
60
61 public:
62     enum WebAction {
63         NoWebAction = - 1,
64
65         Back,
66         Forward,
67         Stop,
68         Reload,
69
70         Undo,
71         Redo,
72
73         WebActionCount
74     };
75
76     QtWebPageProxy(WebKit::QtViewInterface*, WebKit::QtViewportInteractionEngine* = 0, WebKit::QtPolicyInterface* = 0, WKContextRef = 0, WKPageGroupRef = 0);
77     ~QtWebPageProxy();
78
79     virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy();
80
81     virtual bool handleEvent(QEvent*);
82
83     // PageClient
84     virtual void setViewNeedsDisplay(const WebCore::IntRect&);
85     virtual void displayView();
86     virtual void scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset);
87
88     virtual WebCore::IntSize viewSize();
89     virtual bool isViewWindowActive();
90     virtual bool isViewFocused();
91     virtual bool isViewVisible();
92     virtual bool isViewInWindow();
93
94 #if USE(ACCELERATED_COMPOSITING)
95     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&);
96     virtual void exitAcceleratedCompositingMode();
97 #endif // USE(ACCELERATED_COMPOSITING)
98     virtual void pageDidRequestScroll(const WebCore::IntPoint&);
99     virtual void processDidCrash();
100     virtual void pageClosed() { }
101     virtual void didRelaunchProcess();
102
103     virtual void didFinishFirstNonEmptyLayout();
104     virtual void didChangeContentsSize(const WebCore::IntSize&);
105     virtual void didChangeViewportProperties(const WebCore::ViewportArguments&);
106
107     virtual void startDrag(const WebCore::DragData&, PassRefPtr<ShareableBitmap> dragImage);
108     virtual void setCursor(const WebCore::Cursor&);
109     virtual void setCursorHiddenUntilMouseMoves(bool hiddenUntilMouseMoves);
110     virtual void toolTipChanged(const WTF::String&, const WTF::String&);
111     virtual void registerEditCommand(PassRefPtr<WebKit::WebEditCommandProxy>, WebKit::WebPageProxy::UndoOrRedo);
112     virtual void clearAllEditCommands();
113     virtual bool canUndoRedo(WebPageProxy::UndoOrRedo);
114     virtual void executeUndoRedo(WebPageProxy::UndoOrRedo);
115     virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&);
116     virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&);
117     virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&);
118     virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&);
119
120     virtual void doneWithKeyEvent(const WebKit::NativeWebKeyboardEvent&, bool wasEventHandled);
121     virtual void selectionChanged(bool, bool, bool, bool);
122     virtual PassRefPtr<WebKit::WebPopupMenuProxy> createPopupMenuProxy(WebKit::WebPageProxy*);
123     virtual PassRefPtr<WebKit::WebContextMenuProxy> createContextMenuProxy(WebKit::WebPageProxy*);
124
125     virtual void setFindIndicator(PassRefPtr<WebKit::FindIndicator>, bool fadeOut, bool animate);
126
127     virtual void didCommitLoadForMainFrame(bool useCustomRepresentation);
128     virtual void didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference&);
129     virtual double customRepresentationZoomFactor() { return 1; }
130     virtual void setCustomRepresentationZoomFactor(double) { }
131     virtual void didChangeScrollbarsForMainFrame() const { }
132
133     virtual void flashBackingStoreUpdates(const Vector<WebCore::IntRect>& updateRects);
134     virtual void findStringInCustomRepresentation(const String&, FindOptions, unsigned maxMatchCount) { }
135     virtual void countStringMatchesInCustomRepresentation(const String&, FindOptions, unsigned maxMatchCount) { }
136
137     virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&);
138     virtual void didReceiveMessageFromNavigatorQtObject(const String&);
139
140     void didChangeUrl(const QUrl&);
141     void didChangeTitle(const QString&);
142
143     void loadDidBegin();
144     void loadDidCommit();
145     void loadDidSucceed();
146     void loadDidFail(const QtWebError&);
147     void didChangeLoadProgress(int);
148     int loadProgress() const { return m_loadProgress; }
149
150     bool canGoBack() const;
151     void goBack();
152     bool canGoForward() const;
153     void goForward();
154     bool canStop() const;
155     void stop();
156     bool canReload() const;
157     void reload();
158
159     void updateEditorActions();
160
161     WKPageRef pageRef() const;
162
163     void load(const QUrl& url);
164     QUrl url() const;
165
166     void setDrawingAreaSize(const QSize&);
167
168     QWebPreferences* preferences() const;
169
170     QString title() const;
171
172     void setCustomUserAgent(const QString&);
173     QString customUserAgent() const;
174
175     void setNavigatorQtObjectEnabled(bool);
176     bool navigatorQtObjectEnabled() const { return m_navigatorQtObjectEnabled; }
177
178     void setViewportInteractionEngine(QtViewportInteractionEngine* engine) { m_interactionEngine = engine; m_panGestureRecognizer.setViewportInteractionEngine(engine); m_pinchGestureRecognizer.setViewportInteractionEngine(engine);}
179
180     void postMessageToNavigatorQtObject(const QString&);
181
182     qreal textZoomFactor() const;
183     qreal pageZoomFactor() const;
184     void setTextZoomFactor(qreal zoomFactor);
185     void setPageZoomFactor(qreal zoomFactor);
186     void setPageAndTextZoomFactors(qreal pageZoomFactor, qreal textZoomFactor);
187
188     void setVisibleContentRectAndScale(const QRectF&, float);
189     void setVisibleContentRectTrajectoryVector(const QPointF&);
190     void findZoomableAreaForPoint(const QPoint&);
191     void renderToCurrentGLContext(const WebCore::TransformationMatrix&, float);
192
193     QWKHistory* history() const;
194     QtViewInterface* viewInterface() const { return m_viewInterface; }
195
196     void handleDownloadRequest(DownloadProxy*);
197     void init();
198
199     void handleSingleTapEvent(const QTouchEvent::TouchPoint&);
200     void handleDoubleTapEvent(const QTouchEvent::TouchPoint&);
201
202 public Q_SLOTS:
203     void navigationStateChanged();
204     void didReceiveDownloadResponse(QWebDownloadItem*);
205
206 public:
207     Q_SIGNAL void zoomableAreaFound(const QRect&);
208     Q_SIGNAL void updateNavigationState();
209     Q_SIGNAL void receivedMessageFromNavigatorQtObject(const QVariantMap&);
210
211 protected:
212     RefPtr<WebKit::WebPageProxy> m_webPageProxy;
213     WebKit::QtViewInterface* const m_viewInterface;
214     QtViewportInteractionEngine* m_interactionEngine;
215     QtPanGestureRecognizer m_panGestureRecognizer;
216     QtPinchGestureRecognizer m_pinchGestureRecognizer;
217     QtTapGestureRecognizer m_tapGestureRecognizer;
218     WebKit::QtPolicyInterface* const m_policyInterface;
219
220 private:
221     bool handleKeyPressEvent(QKeyEvent*);
222     bool handleKeyReleaseEvent(QKeyEvent*);
223     bool handleFocusInEvent(QFocusEvent*);
224     bool handleFocusOutEvent(QFocusEvent*);
225     bool handleMouseMoveEvent(QMouseEvent*);
226     bool handleMousePressEvent(QMouseEvent*);
227     bool handleMouseReleaseEvent(QMouseEvent*);
228     bool handleMouseDoubleClickEvent(QMouseEvent*);
229     bool handleWheelEvent(QWheelEvent*);
230     bool handleHoverLeaveEvent(QHoverEvent*);
231     bool handleHoverMoveEvent(QHoverEvent*);
232     bool handleDragEnterEvent(QDragEnterEvent*);
233     bool handleDragLeaveEvent(QDragLeaveEvent*);
234     bool handleDragMoveEvent(QDragMoveEvent*);
235     bool handleDropEvent(QDropEvent*);
236
237     virtual void timerEvent(QTimerEvent*);
238
239 #if ENABLE(TOUCH_EVENTS)
240     virtual void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled);
241 #endif
242
243     void touchEvent(QTouchEvent*);
244
245     static PassRefPtr<WebContext> defaultWKContext();
246     static RefPtr<WebContext> s_defaultContext;
247     static RefPtr<QtDownloadManager> s_downloadManager;
248     static unsigned s_defaultPageProxyCount;
249
250     RefPtr<WebContext> m_context;
251     QWKHistory* m_history;
252
253     mutable OwnPtr<QWebPreferences> m_preferences;
254
255     OwnPtr<QUndoStack> m_undoStack;
256     int m_loadProgress;
257
258     bool m_navigatorQtObjectEnabled;
259     QPoint m_tripleClick;
260     QBasicTimer m_tripleClickTimer;
261 };
262
263 #endif /* QtWebPageProxy_h */