• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     Copyright (C) 2008,2009 Nokia Corporation and/or its subsidiary(-ies)
3     Copyright (C) 2007 Staikos Computing Services Inc.
4 
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9 
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14 
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20 
21 #ifndef QWEBFRAME_H
22 #define QWEBFRAME_H
23 
24 #include <QtCore/qobject.h>
25 #include <QtCore/qurl.h>
26 #include <QtCore/qvariant.h>
27 #include <QtGui/qicon.h>
28 #include <QtScript/qscriptengine.h>
29 #include <QtNetwork/qnetworkaccessmanager.h>
30 #include "qwebkitglobal.h"
31 
32 QT_BEGIN_NAMESPACE
33 class QRect;
34 class QPoint;
35 class QPainter;
36 class QPixmap;
37 class QMouseEvent;
38 class QWheelEvent;
39 class QNetworkRequest;
40 class QRegion;
41 class QPrinter;
42 QT_END_NAMESPACE
43 
44 class QWebNetworkRequest;
45 class QWebFramePrivate;
46 class QWebPage;
47 class QWebHitTestResult;
48 class QWebHistoryItem;
49 class QWebSecurityOrigin;
50 class QWebElement;
51 class QWebElementCollection;
52 class QWebScriptWorld;
53 
54 class DumpRenderTreeSupportQt;
55 namespace WebCore {
56     class WidgetPrivate;
57     class FrameLoaderClientQt;
58     class ChromeClientQt;
59     class PlatformLayerProxyQt;
60 }
61 class QWebFrameData;
62 class QWebHitTestResultPrivate;
63 class QWebFrame;
64 
65 class QWEBKIT_EXPORT QWebHitTestResult {
66 public:
67     QWebHitTestResult();
68     QWebHitTestResult(const QWebHitTestResult &other);
69     QWebHitTestResult &operator=(const QWebHitTestResult &other);
70     ~QWebHitTestResult();
71 
72     bool isNull() const;
73 
74     QPoint pos() const;
75     QRect boundingRect() const;
76     QWebElement enclosingBlockElement() const;
77     QString title() const;
78 
79     QString linkText() const;
80     QUrl linkUrl() const;
81     QUrl linkTitle() const;
82     QWebFrame *linkTargetFrame() const;
83     QWebElement linkElement() const;
84 
85     QString alternateText() const; // for img, area, input and applet
86 
87     QUrl imageUrl() const;
88     QPixmap pixmap() const;
89 
90     bool isContentEditable() const;
91     bool isContentSelected() const;
92 
93     QWebElement element() const;
94 
95     QWebFrame *frame() const;
96 
97 private:
98     QWebHitTestResult(QWebHitTestResultPrivate *priv);
99     QWebHitTestResultPrivate *d;
100 
101     friend class QWebFrame;
102     friend class QWebPagePrivate;
103     friend class QWebPage;
104 };
105 
106 class QWEBKIT_EXPORT QWebFrame : public QObject {
107     Q_OBJECT
108     Q_PROPERTY(qreal textSizeMultiplier READ textSizeMultiplier WRITE setTextSizeMultiplier DESIGNABLE false)
109     Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor)
110     Q_PROPERTY(QString title READ title)
111     Q_PROPERTY(QUrl url READ url WRITE setUrl)
112     Q_PROPERTY(QUrl requestedUrl READ requestedUrl)
113     Q_PROPERTY(QUrl baseUrl READ baseUrl)
114     Q_PROPERTY(QIcon icon READ icon)
115     Q_PROPERTY(QSize contentsSize READ contentsSize)
116     Q_PROPERTY(QPoint scrollPosition READ scrollPosition WRITE setScrollPosition)
117     Q_PROPERTY(bool focus READ hasFocus)
118 private:
119     QWebFrame(QWebPage *parent, QWebFrameData *frameData);
120     QWebFrame(QWebFrame *parent, QWebFrameData *frameData);
121     ~QWebFrame();
122 
123 public:
124     QWebPage *page() const;
125 
126     void load(const QUrl &url);
127     void load(const QNetworkRequest &request,
128               QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation,
129               const QByteArray &body = QByteArray());
130     void setHtml(const QString &html, const QUrl &baseUrl = QUrl());
131     void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl());
132 
133     void addToJavaScriptWindowObject(const QString &name, QObject *object);
134     void addToJavaScriptWindowObject(const QString &name, QObject *object, QScriptEngine::ValueOwnership ownership);
135     QString toHtml() const;
136     QString toPlainText() const;
137     QString renderTreeDump() const;
138 
139     QString title() const;
140     void setUrl(const QUrl &url);
141     QUrl url() const;
142     QUrl requestedUrl() const;
143     QUrl baseUrl() const;
144     QIcon icon() const;
145     QMultiMap<QString, QString> metaData() const;
146 
147     QString frameName() const;
148 
149     QWebFrame *parentFrame() const;
150     QList<QWebFrame*> childFrames() const;
151 
152     Qt::ScrollBarPolicy scrollBarPolicy(Qt::Orientation orientation) const;
153     void setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy);
154 
155     void setScrollBarValue(Qt::Orientation orientation, int value);
156     int scrollBarValue(Qt::Orientation orientation) const;
157     int scrollBarMinimum(Qt::Orientation orientation) const;
158     int scrollBarMaximum(Qt::Orientation orientation) const;
159     QRect scrollBarGeometry(Qt::Orientation orientation) const;
160 
161     void scroll(int, int);
162     QPoint scrollPosition() const;
163     void setScrollPosition(const QPoint &pos);
164 
165     void scrollToAnchor(const QString& anchor);
166 
167     enum RenderLayer {
168         ContentsLayer = 0x10,
169         ScrollBarLayer = 0x20,
170         PanIconLayer = 0x40,
171 
172         AllLayers = 0xff
173     };
174 
175     void render(QPainter*);
176     void render(QPainter*, const QRegion& clip);
177     void render(QPainter*, RenderLayer layer, const QRegion& clip = QRegion());
178 
179     void setTextSizeMultiplier(qreal factor);
180     qreal textSizeMultiplier() const;
181 
182     qreal zoomFactor() const;
183     void setZoomFactor(qreal factor);
184 
185     bool hasFocus() const;
186     void setFocus();
187 
188     QPoint pos() const;
189     QRect geometry() const;
190     QSize contentsSize() const;
191 
192     QWebElement documentElement() const;
193     QWebElementCollection findAllElements(const QString &selectorQuery) const;
194     QWebElement findFirstElement(const QString &selectorQuery) const;
195 
196     QWebHitTestResult hitTestContent(const QPoint &pos) const;
197 
198     virtual bool event(QEvent *);
199 
200     QWebSecurityOrigin securityOrigin() const;
201 
202 public Q_SLOTS:
203     QVariant evaluateJavaScript(const QString& scriptSource);
204 #ifndef QT_NO_PRINTER
205     void print(QPrinter *printer) const;
206 #endif
207 
208 Q_SIGNALS:
209     void javaScriptWindowObjectCleared();
210 
211     void provisionalLoad();
212     void titleChanged(const QString &title);
213     void urlChanged(const QUrl &url);
214 
215     void initialLayoutCompleted();
216 
217     void iconChanged();
218 
219     void contentsSizeChanged(const QSize &size);
220 
221     void loadStarted();
222     void loadFinished(bool ok);
223 
224     void pageChanged();
225 
226 private:
227     friend class QGraphicsWebView;
228     friend class QWebPage;
229     friend class QWebPagePrivate;
230     friend class QWebFramePrivate;
231     friend class DumpRenderTreeSupportQt;
232     friend class WebCore::WidgetPrivate;
233     friend class WebCore::FrameLoaderClientQt;
234     friend class WebCore::ChromeClientQt;
235     friend class WebCore::PlatformLayerProxyQt;
236     QWebFramePrivate *d;
237     Q_PRIVATE_SLOT(d, void _q_orientationChanged())
238 };
239 
240 #endif
241