QtWebKit/qwebpage.h Source File

qwebpage.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 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 QWEBPAGE_H
22 #define QWEBPAGE_H
23 
24 #include "qwebsettings.h"
25 #include "qwebkitglobal.h"
26 
27 #include <QtCore/qobject.h>
28 #include <QtCore/qurl.h>
29 #include <QtGui/qwidget.h>
30 
32 class QNetworkProxy;
33 class QUndoStack;
34 class QMenu;
35 class QNetworkRequest;
36 class QNetworkReply;
39 
40 class QWebElement;
41 class QWebFrame;
42 class QWebNetworkRequest;
43 class QWebHistory;
44 
45 class QWebFrameData;
46 class QWebHistoryItem;
47 class QWebHitTestResult;
48 class QWebNetworkInterface;
49 class QWebPagePrivate;
50 class QWebPluginFactory;
51 class QWebSecurityOrigin;
52 class QtViewportAttributesPrivate;
53 
54 namespace WebCore {
55  class ChromeClientQt;
56  class EditorClientQt;
57  class FrameLoaderClientQt;
58  class InspectorClientQt;
59  class InspectorServerRequestHandlerQt;
60  class InspectorFrontendClientQt;
61  class NotificationPresenterClientQt;
62  class GeolocationPermissionClientQt;
63  class ResourceHandle;
64  class HitTestResult;
65  class QNetworkReplyHandler;
66 
67  struct FrameLoadRequest;
68 }
69 
71  Q_OBJECT
72 
73  Q_PROPERTY(bool modified READ isModified)
74  Q_PROPERTY(QString selectedText READ selectedText)
75  Q_PROPERTY(QString selectedHtml READ selectedHtml)
76  Q_PROPERTY(bool hasSelection READ hasSelection)
77  Q_PROPERTY(QSize viewportSize READ viewportSize WRITE setViewportSize)
78  Q_PROPERTY(QSize preferredContentsSize READ preferredContentsSize WRITE setPreferredContentsSize)
79  Q_PROPERTY(bool forwardUnsupportedContent READ forwardUnsupportedContent WRITE setForwardUnsupportedContent)
80  Q_PROPERTY(LinkDelegationPolicy linkDelegationPolicy READ linkDelegationPolicy WRITE setLinkDelegationPolicy)
81  Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
82  Q_PROPERTY(bool contentEditable READ isContentEditable WRITE setContentEditable)
84 public:
91  NavigationTypeOther
92  };
93 
94  enum WebAction {
95  NoWebAction = - 1,
96 
98 
101 
104 
108 
113 
117 
146 
150 
154 
156 
159 
162 
165 
173 
178 
180 
182 
183  WebActionCount
184  };
185 
186  enum FindFlag {
187  FindBackward = 1,
188  FindCaseSensitively = 2,
189  FindWrapsAroundDocument = 4,
190  HighlightAllOccurrences = 8
191  };
192  Q_DECLARE_FLAGS(FindFlags, FindFlag)
193 
197  DelegateAllLinks
198  };
199 
202  WebModalDialog
203  };
204 
208  PermissionDeniedByUser
209  };
210 
211  enum Feature {
213  Geolocation
214  };
215 
217  public:
220 
222 
224 
225  inline qreal initialScaleFactor() const { return m_initialScaleFactor; }
226  inline qreal minimumScaleFactor() const { return m_minimumScaleFactor; }
227  inline qreal maximumScaleFactor() const { return m_maximumScaleFactor; }
228  inline qreal devicePixelRatio() const { return m_devicePixelRatio; }
229  inline bool isUserScalable() const { return m_isUserScalable; }
230  inline bool isValid() const { return m_isValid; }
231  inline QSize size() const { return m_size; }
232 
233  private:
235  qreal m_initialScaleFactor;
236  qreal m_minimumScaleFactor;
237  qreal m_maximumScaleFactor;
238  qreal m_devicePixelRatio;
239  bool m_isUserScalable;
240  bool m_isValid;
241  QSize m_size;
242 
243  friend class WebCore::ChromeClientQt;
244  friend class QWebPage;
245  };
246 
247 
248  explicit QWebPage(QObject *parent = 0);
249  ~QWebPage();
250 
251  QWebFrame *mainFrame() const;
252  QWebFrame *currentFrame() const;
253  QWebFrame* frameAt(const QPoint& pos) const;
254 
255  QWebHistory *history() const;
256  QWebSettings *settings() const;
257 
258  void setView(QWidget *view);
259  QWidget *view() const;
260 
261  bool isModified() const;
262 #ifndef QT_NO_UNDOSTACK
263  QUndoStack *undoStack() const;
264 #endif
265 
268 
269  void setPluginFactory(QWebPluginFactory *factory);
271 
272  quint64 totalBytes() const;
273  quint64 bytesReceived() const;
274 
275  bool hasSelection() const;
276  QString selectedText() const;
277  QString selectedHtml() const;
278 
279 #ifndef QT_NO_ACTION
280  QAction *action(WebAction action) const;
281 #endif
282  virtual void triggerAction(WebAction action, bool checked = false);
283 
284  QSize viewportSize() const;
285  void setViewportSize(const QSize &size) const;
286  ViewportAttributes viewportAttributesForSize(const QSize& availableSize) const;
287 
289  void setPreferredContentsSize(const QSize &size) const;
290  void setActualVisibleContentRect(const QRect& rect) const;
291 
292  virtual bool event(QEvent*);
293  bool focusNextPrevChild(bool next);
294 
296 
297  bool findText(const QString &subString, FindFlags options = 0);
298 
299  void setForwardUnsupportedContent(bool forward);
300  bool forwardUnsupportedContent() const;
301 
304 
305  void setPalette(const QPalette &palette);
306  QPalette palette() const;
307 
308  void setContentEditable(bool editable);
309  bool isContentEditable() const;
310 
311 #ifndef QT_NO_CONTEXTMENU
313 #endif
314  void updatePositionDependentActions(const QPoint &pos);
315 
317 
318  void setFeaturePermission(QWebFrame* frame, Feature feature, PermissionPolicy policy);
319 
321  bool supportsContentType(const QString& mimeType) const;
322 
323  enum Extension {
326  };
328  {};
330  {};
331 
333  public:
336  };
337 
339  public:
341  };
342 
343  enum ErrorDomain { QtNetwork, Http, WebKit };
345  public:
349  int error;
351  };
352 
354  public:
355  ErrorPageExtensionReturn() : contentType(QLatin1String("text/html")), encoding(QLatin1String("utf-8")) {};
356  QString contentType;
360  };
361 
362 
363  virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0);
364  virtual bool supportsExtension(Extension extension) const;
365 
366  inline QWebPagePrivate* handle() const { return d; }
367 
368 public Q_SLOTS:
369  bool shouldInterruptJavaScript();
370 
371 Q_SIGNALS:
372  void loadStarted();
373  void loadProgress(int progress);
374  void loadFinished(bool ok);
375 
376  void linkHovered(const QString &link, const QString &title, const QString &textContent);
377  void statusBarMessage(const QString& text);
378  void selectionChanged();
379  void frameCreated(QWebFrame *frame);
380  void geometryChangeRequested(const QRect& geom);
381  void repaintRequested(const QRect& dirtyRect);
382  void scrollRequested(int dx, int dy, const QRect& scrollViewRect);
383  void windowCloseRequested();
384  void printRequested(QWebFrame *frame);
385  void linkClicked(const QUrl &url);
386 
387  void toolBarVisibilityChangeRequested(bool visible);
388  void statusBarVisibilityChangeRequested(bool visible);
389  void menuBarVisibilityChangeRequested(bool visible);
390 
391  void unsupportedContent(QNetworkReply *reply);
392  void downloadRequested(const QNetworkRequest &request);
393 
394  void microFocusChanged();
395  void contentsChanged();
396  void databaseQuotaExceeded(QWebFrame* frame, QString databaseName);
397  void applicationCacheQuotaExceeded(QWebSecurityOrigin* origin, quint64 defaultOriginQuota);
398 
399  void saveFrameStateRequested(QWebFrame* frame, QWebHistoryItem* item);
400  void restoreFrameStateRequested(QWebFrame* frame);
401 
402  void viewportChangeRequested();
403 
404  void featurePermissionRequested(QWebFrame* frame, QWebPage::Feature feature);
405  void featurePermissionRequestCanceled(QWebFrame* frame, QWebPage::Feature feature);
406 
407 protected:
408  virtual QWebPage *createWindow(WebWindowType type);
409  virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList &paramNames, const QStringList &paramValues);
410 
411  virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type);
412  virtual QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile);
413  virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg);
414  virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg);
415  virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result);
416  virtual void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID);
417 
418  virtual QString userAgentForUrl(const QUrl& url) const;
419 
420 private:
421  Q_PRIVATE_SLOT(d, void _q_onLoadProgressChanged(int))
422 #ifndef QT_NO_ACTION
423  Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked))
424 #endif
425  Q_PRIVATE_SLOT(d, void _q_cleanupLeakMessages())
426 
427  QWebPagePrivate *d;
428 
429  friend class QWebFrame;
430  friend class QWebPagePrivate;
431  friend class QWebView;
432  friend class QWebViewPrivate;
433  friend class QGraphicsWebView;
434  friend class QGraphicsWebViewPrivate;
435  friend class QWebInspector;
436  friend class WebCore::ChromeClientQt;
437  friend class WebCore::EditorClientQt;
438  friend class WebCore::FrameLoaderClientQt;
439  friend class WebCore::InspectorClientQt;
440  friend class WebCore::InspectorServerRequestHandlerQt;
441  friend class WebCore::InspectorFrontendClientQt;
442  friend class WebCore::NotificationPresenterClientQt;
443  friend class WebCore::GeolocationPermissionClientQt;
444  friend class WebCore::ResourceHandle;
445  friend class WebCore::QNetworkReplyHandler;
446  friend class DumpRenderTreeSupportQt;
447 };
448 
449 Q_DECLARE_OPERATORS_FOR_FLAGS(QWebPage::FindFlags)
450 
451 #endif
GLuint GLuint GLsizei GLenum type
Definition: GLee.h:872
LinkDelegationPolicy
Definition: qwebpage.h:194
QWidget * view() const
int int int int * dy
Definition: GLee.h:10535
#define QT_END_NAMESPACE
Definition: qglobal.h:128
#define Q_PROPERTY(text)
Definition: qobjectdefs.h:80
QWebFrame * currentFrame() const
bool isModified() const
QWebPluginFactory * pluginFactory() const
ViewportAttributes viewportAttributesForSize(const QSize &availableSize) const
bool isContentEditable() const
QString selectedText() const
NavigationType
Definition: qwebpage.h:85
QWebPage(QObject *parent=0)
qreal initialScaleFactor() const
Definition: qwebpage.h:225
#define Q_PRIVATE_SLOT(d, signature)
Definition: qobjectdefs.h:73
QSize preferredContentsSize() const
virtual void triggerAction(WebAction action, bool checked=false)
LinkDelegationPolicy linkDelegationPolicy() const
QNetworkAccessManager * networkAccessManager() const
#define Q_SLOTS
Definition: qobjectdefs.h:71
void setActualVisibleContentRect(const QRect &rect) const
#define Q_SIGNALS
Definition: qobjectdefs.h:72
QWebSettings * settings() const
QAction * action(WebAction action) const
unsigned long long quint64
Definition: qglobal.h:948
QVariant inputMethodQuery(Qt::InputMethodQuery property) const
#define Q_ENUMS(x)
Definition: qobjectdefs.h:84
PermissionPolicy
Definition: qwebpage.h:205
Definition: qpoint.h:53
#define QT_BEGIN_NAMESPACE
Definition: qglobal.h:127
QMenu * createStandardContextMenu()
void setPreferredContentsSize(const QSize &size) const
QWebFrame * frameAt(const QPoint &pos) const
QWebHistory * history() const
void updatePositionDependentActions(const QPoint &pos)
QUndoStack * undoStack() const
void setFeaturePermission(QWebFrame *frame, Feature feature, PermissionPolicy policy)
qreal minimumScaleFactor() const
Definition: qwebpage.h:226
void setPluginFactory(QWebPluginFactory *factory)
Definition: qmenu.h:72
QObject * parent() const
Definition: qobject.h:273
InputMethodQuery
Definition: qnamespace.h:1541
bool swallowContextMenuEvent(QContextMenuEvent *event)
void setViewportSize(const QSize &size) const
bool isUserScalable() const
Definition: qwebpage.h:229
#define Q_OBJECT
Definition: qobjectdefs.h:157
void setView(QWidget *view)
WebWindowType
Definition: qwebpage.h:200
QPalette palette() const
virtual bool event(QEvent *)
void setLinkDelegationPolicy(LinkDelegationPolicy policy)
bool supportsContentType(const QString &mimeType) const
Definition: qurl.h:61
QWebPagePrivate * handle() const
Definition: qwebpage.h:366
Definition: qrect.h:58
quint64 bytesReceived() const
Definition: qsize.h:53
void setContentEditable(bool editable)
bool focusNextPrevChild(bool next)
int int int * dx
Definition: GLee.h:10535
bool forwardUnsupportedContent() const
QWebFrame * mainFrame() const
QVariant property(const char *name) const
void setNetworkAccessManager(QNetworkAccessManager *manager)
qreal maximumScaleFactor() const
Definition: qwebpage.h:227
qreal devicePixelRatio() const
Definition: qwebpage.h:228
quint64 totalBytes() const
bool findText(const QString &subString, FindFlags options=0)
QSize viewportSize() const
GLsizeiptr size
Definition: GLee.h:1561
bool hasSelection() const
QStringList supportedContentTypes() const
void setPalette(const QPalette &palette)
QString selectedHtml() const
#define QWEBKIT_EXPORT
Definition: qwebkitglobal.h:45
void setForwardUnsupportedContent(bool forward)