1883c7b7fe78d112abc39c3a3be74333d14190fd
[WebKit.git] / Source / WebKit2 / UIProcess / API / qt / qquickwebview_p.h
1 /*
2  * Copyright (C) 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 qquickwebview_p_h
22 #define qquickwebview_p_h
23
24 #include "QtPolicyInterface.h"
25 #include "QtViewInterface.h"
26 #include "QtViewportInteractionEngine.h"
27 #include "QtWebPageProxy.h"
28
29 #include "qquickwebview.h"
30
31 #include <QtCore/QObject>
32 #include <QtCore/QScopedPointer>
33
34 class QtWebPageProxy;
35
36 QT_BEGIN_NAMESPACE
37 class QFileDialog;
38 QT_END_NAMESPACE
39
40 class QWEBKIT_EXPORT QQuickWebViewPrivate : public QObject, public WebKit::QtPolicyInterface {
41     Q_OBJECT
42     Q_DECLARE_PUBLIC(QQuickWebView)
43 public:
44     QQuickWebViewPrivate();
45     virtual ~QQuickWebViewPrivate() { }
46     void setPageProxy(QtWebPageProxy*);
47     void initialize(QQuickWebView* viewport, WKContextRef contextRef = 0, WKPageGroupRef pageGroupRef = 0);
48     void initializeTouch(QQuickWebView* viewport);
49     void initializeDesktop(QQuickWebView* viewport);
50     void enableMouseEvents();
51     void disableMouseEvents();
52
53     void loadDidCommit();
54     void contentSizeChanged(const QSize& newSize);
55     void scrollPositionRequested(const QPoint& pos);
56     void updateViewportSize();
57     void updateViewportConstraints();
58
59     static QQuickWebViewPrivate* get(QQuickWebView* view)
60     {
61         return view->d_ptr.data();
62     }
63
64     void _q_viewportUpdated();
65     void _q_viewportTrajectoryVectorChanged(const QPointF&);
66     void _q_onOpenPanelFilesSelected();
67     void _q_onOpenPanelFinished(int result);
68     void _q_onVisibleChanged();
69
70     // QtPolicyInterface.
71     virtual QtPolicyInterface::PolicyAction navigationPolicyForURL(const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers);
72
73     void chooseFiles(WKOpenPanelResultListenerRef, const QStringList& selectedFileNames, WebKit::QtViewInterface::FileChooserType);
74     void runJavaScriptAlert(const QString&);
75     bool runJavaScriptConfirm(const QString&);
76     QString runJavaScriptPrompt(const QString&, const QString& defaultValue, bool& ok);
77     void didChangeViewportProperties(const WebCore::ViewportArguments& args);
78
79 public slots:
80     void setUseTraditionalDesktopBehaviour(bool enable);
81
82 private:
83     QScopedPointer<QQuickWebPage> pageView;
84     QScopedPointer<WebKit::QtViewInterface> viewInterface;
85     QScopedPointer<QtViewportInteractionEngine> interactionEngine;
86
87     WebCore::ViewportArguments viewportArguments;
88
89     QQuickWebView* q_ptr;
90     QScopedPointer<QtWebPageProxy> pageProxy;
91
92     bool useTraditionalDesktopBehaviour;
93     QFileDialog* fileDialog;
94     WKOpenPanelResultListenerRef openPanelResultListener;
95 };
96
97 #endif /* qquickwebview_p_h */