1294260a6b717d6fd0b20a0ab00b8472cf815673
[WebKit-https.git] / WebKit / qt / Api / qwebpage_p.h
1 /*
2     Copyright (C) 2007 Trolltech ASA
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 library 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 library; 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     This class provides all functionality needed for loading images, style sheets and html
20     pages from the web. It has a memory cache for these objects.
21 */
22 #ifndef QWEBPAGE_P_H
23 #define QWEBPAGE_P_H
24
25 #include <qnetworkproxy.h>
26 #include <qpointer.h>
27
28 #include "qwebpage.h"
29 #include "qwebframe.h"
30
31 #include <wtf/RefPtr.h>
32
33 namespace WebCore
34 {
35     class ChromeClientQt;
36     class ContextMenuClientQt;
37     class ContextMenuItem;
38     class ContextMenu;
39     class EditorClientQt;
40     class Node;
41     class Page;
42 }
43
44 class QUndoStack;
45 class QMenu;
46
47 class QWebPageContextPrivate
48 {
49 public:
50     QPoint pos;
51     QString text;
52     QUrl linkUrl;
53     QUrl imageUrl;
54     QPixmap image;
55     QPointer<QWebFrame> targetFrame;
56     RefPtr<WebCore::Node> innerNonSharedNode;
57 };
58
59 class QWebPageContext
60 {
61 public:
62     QWebPageContext();
63     QWebPageContext(const QWebPageContext &other);
64     QWebPageContext &operator=(const QWebPageContext &other);
65     ~QWebPageContext();
66
67     QPoint pos() const;
68     QString text() const;
69     QUrl linkUrl() const;
70     QUrl imageUrl() const;
71     // ### we have a pixmap internally, should this be called pixmap() instead?
72     QPixmap image() const;
73
74     QWebFrame *targetFrame() const;
75
76 private:
77     QWebPageContext(const WebCore::HitTestResult &hitTest);
78     QWebPageContextPrivate *d;
79
80     friend class QWebPage;
81 };
82
83 class QWebPagePrivate
84 {
85 public:
86     QWebPagePrivate(QWebPage *);
87     ~QWebPagePrivate();
88     void createMainFrame();
89     QMenu *createContextMenu(const WebCore::ContextMenu *webcoreMenu, const QList<WebCore::ContextMenuItem> *items);
90
91     QWebFrame *frameAt(const QPoint &pos) const;
92
93     void _q_onLoadProgressChanged(int);
94     void _q_webActionTriggered(bool checked);
95     void updateAction(QWebPage::WebAction action);
96     void updateNavigationActions();
97     void updateEditorActions();
98
99     WebCore::ChromeClientQt *chromeClient;
100     WebCore::ContextMenuClientQt *contextMenuClient;
101     WebCore::EditorClientQt *editorClient;
102     WebCore::Page *page;
103
104     QPointer<QWebFrame> mainFrame;
105     QPointer<QWebFrame> frameUnderMouse;
106
107     inline QWebFrame *currentFrame(const QPoint &pos) const
108     { return frameUnderMouse ? static_cast<QWebFrame *>(frameUnderMouse) : frameAt(pos); }
109
110     QWebPage *q;
111     QUndoStack *undoStack;
112     QWidget *view;
113
114     QWebNetworkInterface *networkInterface;
115
116     bool modified;
117
118     bool insideOpenCall;
119     quint64 m_totalBytes;
120     quint64 m_bytesReceived;
121
122     QWebPage::NavigationRequestResponse navigationRequested(QWebFrame *frame, const QWebNetworkRequest &request, QWebPage::NavigationType type);
123 #ifndef QT_NO_NETWORKPROXY
124     QNetworkProxy networkProxy;
125 #endif
126
127     QWebPageHistory history;
128     QWebPageContext currentContext;
129     QWebSettings *settings;
130
131     QAction *actions[QWebPage::WebActionCount];
132 };
133
134 #endif