| /* |
| Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| Copyright (C) 2007 Staikos Computing Services Inc. |
| |
| This library is free software; you can redistribute it and/or |
| modify it under the terms of the GNU Library General Public |
| License as published by the Free Software Foundation; either |
| version 2 of the License, or (at your option) any later version. |
| |
| This library is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| Library General Public License for more details. |
| |
| You should have received a copy of the GNU Library General Public License |
| along with this library; see the file COPYING.LIB. If not, write to |
| the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| Boston, MA 02110-1301, USA. |
| */ |
| |
| #ifndef QWEBPAGE_H |
| #define QWEBPAGE_H |
| |
| #include "qwebsettings.h" |
| #include "qwebkitglobal.h" |
| |
| #include <QtCore/qobject.h> |
| #include <QtCore/qurl.h> |
| #include <QtGui/qwidget.h> |
| |
| QT_BEGIN_NAMESPACE |
| class QNetworkProxy; |
| class QUndoStack; |
| class QMenu; |
| class QNetworkRequest; |
| class QNetworkReply; |
| class QNetworkAccessManager; |
| QT_END_NAMESPACE |
| |
| class QWebElement; |
| class QWebFrame; |
| class QWebNetworkRequest; |
| class QWebHistory; |
| |
| class QWebFrameData; |
| class QWebHistoryItem; |
| class QWebHitTestResult; |
| class QWebNetworkInterface; |
| class QWebPagePrivate; |
| class QWebPluginFactory; |
| class QWebSecurityOrigin; |
| class QtViewportAttributesPrivate; |
| |
| namespace WebCore { |
| class ChromeClientQt; |
| class EditorClientQt; |
| class FrameLoaderClientQt; |
| class InspectorClientQt; |
| class InspectorServerRequestHandlerQt; |
| class InspectorFrontendClientQt; |
| class NotificationPresenterClientQt; |
| class GeolocationPermissionClientQt; |
| class ResourceHandle; |
| class HitTestResult; |
| class QNetworkReplyHandler; |
| |
| struct FrameLoadRequest; |
| } |
| |
| class QWEBKIT_EXPORT QWebPage : public QObject { |
| Q_OBJECT |
| |
| Q_PROPERTY(bool modified READ isModified) |
| Q_PROPERTY(QString selectedText READ selectedText) |
| Q_PROPERTY(QString selectedHtml READ selectedHtml) |
| Q_PROPERTY(bool hasSelection READ hasSelection) |
| Q_PROPERTY(QSize viewportSize READ viewportSize WRITE setViewportSize) |
| Q_PROPERTY(QSize preferredContentsSize READ preferredContentsSize WRITE setPreferredContentsSize) |
| Q_PROPERTY(bool forwardUnsupportedContent READ forwardUnsupportedContent WRITE setForwardUnsupportedContent) |
| Q_PROPERTY(LinkDelegationPolicy linkDelegationPolicy READ linkDelegationPolicy WRITE setLinkDelegationPolicy) |
| Q_PROPERTY(QPalette palette READ palette WRITE setPalette) |
| Q_PROPERTY(bool contentEditable READ isContentEditable WRITE setContentEditable) |
| Q_ENUMS(LinkDelegationPolicy NavigationType WebAction) |
| public: |
| enum NavigationType { |
| NavigationTypeLinkClicked, |
| NavigationTypeFormSubmitted, |
| NavigationTypeBackOrForward, |
| NavigationTypeReload, |
| NavigationTypeFormResubmitted, |
| NavigationTypeOther |
| }; |
| |
| enum WebAction { |
| NoWebAction = - 1, |
| |
| OpenLink, |
| |
| OpenLinkInNewWindow, |
| OpenFrameInNewWindow, |
| |
| DownloadLinkToDisk, |
| CopyLinkToClipboard, |
| |
| OpenImageInNewWindow, |
| DownloadImageToDisk, |
| CopyImageToClipboard, |
| CopyImageUrlToClipboard, |
| |
| Back, |
| Forward, |
| Stop, |
| Reload, |
| |
| Cut, |
| Copy, |
| Paste, |
| |
| Undo, |
| Redo, |
| MoveToNextChar, |
| MoveToPreviousChar, |
| MoveToNextWord, |
| MoveToPreviousWord, |
| MoveToNextLine, |
| MoveToPreviousLine, |
| MoveToStartOfLine, |
| MoveToEndOfLine, |
| MoveToStartOfBlock, |
| MoveToEndOfBlock, |
| MoveToStartOfDocument, |
| MoveToEndOfDocument, |
| SelectNextChar, |
| SelectPreviousChar, |
| SelectNextWord, |
| SelectPreviousWord, |
| SelectNextLine, |
| SelectPreviousLine, |
| SelectStartOfLine, |
| SelectEndOfLine, |
| SelectStartOfBlock, |
| SelectEndOfBlock, |
| SelectStartOfDocument, |
| SelectEndOfDocument, |
| DeleteStartOfWord, |
| DeleteEndOfWord, |
| |
| SetTextDirectionDefault, |
| SetTextDirectionLeftToRight, |
| SetTextDirectionRightToLeft, |
| |
| ToggleBold, |
| ToggleItalic, |
| ToggleUnderline, |
| |
| InspectElement, |
| |
| InsertParagraphSeparator, |
| InsertLineSeparator, |
| |
| SelectAll, |
| ReloadAndBypassCache, |
| |
| PasteAndMatchStyle, |
| RemoveFormat, |
| |
| ToggleStrikethrough, |
| ToggleSubscript, |
| ToggleSuperscript, |
| InsertUnorderedList, |
| InsertOrderedList, |
| Indent, |
| Outdent, |
| |
| AlignCenter, |
| AlignJustified, |
| AlignLeft, |
| AlignRight, |
| |
| StopScheduledPageRefresh, |
| |
| WebActionCount |
| }; |
| |
| enum FindFlag { |
| FindBackward = 1, |
| FindCaseSensitively = 2, |
| FindWrapsAroundDocument = 4, |
| HighlightAllOccurrences = 8 |
| }; |
| Q_DECLARE_FLAGS(FindFlags, FindFlag) |
| |
| enum LinkDelegationPolicy { |
| DontDelegateLinks, |
| DelegateExternalLinks, |
| DelegateAllLinks |
| }; |
| |
| enum WebWindowType { |
| WebBrowserWindow, |
| WebModalDialog |
| }; |
| |
| enum PermissionPolicy { |
| PermissionUnknown, |
| PermissionGrantedByUser, |
| PermissionDeniedByUser |
| }; |
| |
| enum Feature { |
| Notifications, |
| Geolocation |
| }; |
| |
| class QWEBKIT_EXPORT ViewportAttributes { |
| public: |
| ViewportAttributes(); |
| ViewportAttributes(const QWebPage::ViewportAttributes& other); |
| |
| ~ViewportAttributes(); |
| |
| QWebPage::ViewportAttributes& operator=(const QWebPage::ViewportAttributes& other); |
| |
| inline qreal initialScaleFactor() const { return m_initialScaleFactor; } |
| inline qreal minimumScaleFactor() const { return m_minimumScaleFactor; } |
| inline qreal maximumScaleFactor() const { return m_maximumScaleFactor; } |
| inline qreal devicePixelRatio() const { return m_devicePixelRatio; } |
| inline bool isUserScalable() const { return m_isUserScalable; } |
| inline bool isValid() const { return m_isValid; } |
| inline QSize size() const { return m_size; } |
| |
| private: |
| QSharedDataPointer<QtViewportAttributesPrivate> d; |
| qreal m_initialScaleFactor; |
| qreal m_minimumScaleFactor; |
| qreal m_maximumScaleFactor; |
| qreal m_devicePixelRatio; |
| bool m_isUserScalable; |
| bool m_isValid; |
| QSize m_size; |
| |
| friend class WebCore::ChromeClientQt; |
| friend class QWebPage; |
| }; |
| |
| |
| explicit QWebPage(QObject *parent = 0); |
| ~QWebPage(); |
| |
| QWebFrame *mainFrame() const; |
| QWebFrame *currentFrame() const; |
| QWebFrame* frameAt(const QPoint& pos) const; |
| |
| QWebHistory *history() const; |
| QWebSettings *settings() const; |
| |
| void setView(QWidget *view); |
| QWidget *view() const; |
| |
| bool isModified() const; |
| #ifndef QT_NO_UNDOSTACK |
| QUndoStack *undoStack() const; |
| #endif |
| |
| void setNetworkAccessManager(QNetworkAccessManager *manager); |
| QNetworkAccessManager *networkAccessManager() const; |
| |
| void setPluginFactory(QWebPluginFactory *factory); |
| QWebPluginFactory *pluginFactory() const; |
| |
| quint64 totalBytes() const; |
| quint64 bytesReceived() const; |
| |
| bool hasSelection() const; |
| QString selectedText() const; |
| QString selectedHtml() const; |
| |
| #ifndef QT_NO_ACTION |
| QAction *action(WebAction action) const; |
| #endif |
| virtual void triggerAction(WebAction action, bool checked = false); |
| |
| QSize viewportSize() const; |
| void setViewportSize(const QSize &size) const; |
| ViewportAttributes viewportAttributesForSize(const QSize& availableSize) const; |
| |
| QSize preferredContentsSize() const; |
| void setPreferredContentsSize(const QSize &size) const; |
| void setActualVisibleContentRect(const QRect& rect) const; |
| |
| virtual bool event(QEvent*); |
| bool focusNextPrevChild(bool next); |
| |
| QVariant inputMethodQuery(Qt::InputMethodQuery property) const; |
| |
| bool findText(const QString &subString, FindFlags options = 0); |
| |
| void setForwardUnsupportedContent(bool forward); |
| bool forwardUnsupportedContent() const; |
| |
| void setLinkDelegationPolicy(LinkDelegationPolicy policy); |
| LinkDelegationPolicy linkDelegationPolicy() const; |
| |
| void setPalette(const QPalette &palette); |
| QPalette palette() const; |
| |
| void setContentEditable(bool editable); |
| bool isContentEditable() const; |
| |
| #ifndef QT_NO_CONTEXTMENU |
| bool swallowContextMenuEvent(QContextMenuEvent *event); |
| #endif |
| void updatePositionDependentActions(const QPoint &pos); |
| |
| QMenu *createStandardContextMenu(); |
| |
| void setFeaturePermission(QWebFrame* frame, Feature feature, PermissionPolicy policy); |
| |
| QStringList supportedContentTypes() const; |
| bool supportsContentType(const QString& mimeType) const; |
| |
| enum Extension { |
| ChooseMultipleFilesExtension, |
| ErrorPageExtension |
| }; |
| class ExtensionOption |
| {}; |
| class ExtensionReturn |
| {}; |
| |
| class ChooseMultipleFilesExtensionOption : public ExtensionOption { |
| public: |
| QWebFrame *parentFrame; |
| QStringList suggestedFileNames; |
| }; |
| |
| class ChooseMultipleFilesExtensionReturn : public ExtensionReturn { |
| public: |
| QStringList fileNames; |
| }; |
| |
| enum ErrorDomain { QtNetwork, Http, WebKit }; |
| class ErrorPageExtensionOption : public ExtensionOption { |
| public: |
| QUrl url; |
| QWebFrame* frame; |
| ErrorDomain domain; |
| int error; |
| QString errorString; |
| }; |
| |
| class ErrorPageExtensionReturn : public ExtensionReturn { |
| public: |
| ErrorPageExtensionReturn() : contentType(QLatin1String("text/html")), encoding(QLatin1String("utf-8")) {}; |
| QString contentType; |
| QString encoding; |
| QUrl baseUrl; |
| QByteArray content; |
| }; |
| |
| |
| virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); |
| virtual bool supportsExtension(Extension extension) const; |
| |
| inline QWebPagePrivate* handle() const { return d; } |
| |
| public Q_SLOTS: |
| bool shouldInterruptJavaScript(); |
| |
| Q_SIGNALS: |
| void loadStarted(); |
| void loadProgress(int progress); |
| void loadFinished(bool ok); |
| |
| void linkHovered(const QString &link, const QString &title, const QString &textContent); |
| void statusBarMessage(const QString& text); |
| void selectionChanged(); |
| void frameCreated(QWebFrame *frame); |
| void geometryChangeRequested(const QRect& geom); |
| void repaintRequested(const QRect& dirtyRect); |
| void scrollRequested(int dx, int dy, const QRect& scrollViewRect); |
| void windowCloseRequested(); |
| void printRequested(QWebFrame *frame); |
| void linkClicked(const QUrl &url); |
| |
| void toolBarVisibilityChangeRequested(bool visible); |
| void statusBarVisibilityChangeRequested(bool visible); |
| void menuBarVisibilityChangeRequested(bool visible); |
| |
| void unsupportedContent(QNetworkReply *reply); |
| void downloadRequested(const QNetworkRequest &request); |
| |
| void microFocusChanged(); |
| void contentsChanged(); |
| void databaseQuotaExceeded(QWebFrame* frame, QString databaseName); |
| void applicationCacheQuotaExceeded(QWebSecurityOrigin* origin, quint64 defaultOriginQuota); |
| |
| void saveFrameStateRequested(QWebFrame* frame, QWebHistoryItem* item); |
| void restoreFrameStateRequested(QWebFrame* frame); |
| |
| void viewportChangeRequested(); |
| |
| void featurePermissionRequested(QWebFrame* frame, QWebPage::Feature feature); |
| void featurePermissionRequestCanceled(QWebFrame* frame, QWebPage::Feature feature); |
| |
| protected: |
| virtual QWebPage *createWindow(WebWindowType type); |
| virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); |
| |
| virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type); |
| virtual QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); |
| virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); |
| virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); |
| virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); |
| virtual void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); |
| |
| virtual QString userAgentForUrl(const QUrl& url) const; |
| |
| private: |
| Q_PRIVATE_SLOT(d, void _q_onLoadProgressChanged(int)) |
| #ifndef QT_NO_ACTION |
| Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked)) |
| #endif |
| Q_PRIVATE_SLOT(d, void _q_cleanupLeakMessages()) |
| |
| QWebPagePrivate *d; |
| |
| friend class QWebFrame; |
| friend class QWebPagePrivate; |
| friend class QWebView; |
| friend class QWebViewPrivate; |
| friend class QGraphicsWebView; |
| friend class QGraphicsWebViewPrivate; |
| friend class QWebInspector; |
| friend class WebCore::ChromeClientQt; |
| friend class WebCore::EditorClientQt; |
| friend class WebCore::FrameLoaderClientQt; |
| friend class WebCore::InspectorClientQt; |
| friend class WebCore::InspectorServerRequestHandlerQt; |
| friend class WebCore::InspectorFrontendClientQt; |
| friend class WebCore::NotificationPresenterClientQt; |
| friend class WebCore::GeolocationPermissionClientQt; |
| friend class WebCore::ResourceHandle; |
| friend class WebCore::QNetworkReplyHandler; |
| friend class DumpRenderTreeSupportQt; |
| }; |
| |
| Q_DECLARE_OPERATORS_FOR_FLAGS(QWebPage::FindFlags) |
| |
| #endif |