Part 2 of removing PlatformString.h, remove PlatformString.h
[WebKit-https.git] / Source / WebKit / qt / Api / qwebframe_p.h
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 QWEBFRAME_P_H
22 #define QWEBFRAME_P_H
23
24 #include "qwebframe.h"
25 #include "qwebpage_p.h"
26
27 #include "EventHandler.h"
28 #include "GraphicsContext.h"
29 #include "KURL.h"
30 #if ENABLE(ORIENTATION_EVENTS)
31 #include "qorientationsensor.h"
32 #endif // ENABLE(ORIENTATION_EVENTS).
33 #include "qwebelement.h"
34 #include "wtf/RefPtr.h"
35 #include "Frame.h"
36 #include "ViewportArguments.h"
37 #include <wtf/text/WTFString.h>
38
39 #if USE(ACCELERATED_COMPOSITING)
40 #include "texmap/TextureMapper.h"
41 #endif
42
43
44 namespace WebCore {
45     class FrameLoaderClientQt;
46     class FrameView;
47     class HTMLFrameOwnerElement;
48     class Scrollbar;
49     class TextureMapperLayer;
50 }
51 class QWebPage;
52
53 class QWebFrameData {
54 public:
55     QWebFrameData(WebCore::Page*, WebCore::Frame* parentFrame = 0,
56                   WebCore::HTMLFrameOwnerElement* = 0,
57                   const WTF::String& frameName = WTF::String());
58
59     WebCore::KURL url;
60     WTF::String name;
61     WebCore::HTMLFrameOwnerElement* ownerElement;
62     WebCore::Page* page;
63     RefPtr<WebCore::Frame> frame;
64     WebCore::FrameLoaderClientQt* frameLoaderClient;
65
66     WTF::String referrer;
67     bool allowsScrolling;
68     int marginWidth;
69     int marginHeight;
70 };
71
72 class QWebFramePrivate {
73 public:
74     QWebFramePrivate()
75         : q(0)
76         , horizontalScrollBarPolicy(Qt::ScrollBarAsNeeded)
77         , verticalScrollBarPolicy(Qt::ScrollBarAsNeeded)
78         , frameLoaderClient(0)
79         , frame(0)
80         , page(0)
81         , allowsScrolling(true)
82         , marginWidth(-1)
83         , marginHeight(-1)
84 #if USE(ACCELERATED_COMPOSITING)
85         , rootTextureMapperLayer(0)
86 #endif
87         {}
88     void init(QWebFrame* qframe, QWebFrameData* frameData);
89     void setPage(QWebPage*);
90
91     inline QWebFrame *parentFrame() { return qobject_cast<QWebFrame*>(q->parent()); }
92
93     WebCore::Scrollbar* horizontalScrollBar() const;
94     WebCore::Scrollbar* verticalScrollBar() const;
95
96     static WebCore::Frame* core(const QWebFrame*);
97     static QWebFrame* kit(const WebCore::Frame*);
98
99     void renderRelativeCoords(WebCore::GraphicsContext*, QFlags<QWebFrame::RenderLayer>, const QRegion& clip);
100 #if USE(TILED_BACKING_STORE)
101     void renderFromTiledBackingStore(WebCore::GraphicsContext*, const QRegion& clip);
102 #endif
103
104 #if USE(ACCELERATED_COMPOSITING)
105     void renderCompositedLayers(WebCore::GraphicsContext*, const WebCore::IntRect& clip);
106 #endif
107     void renderFrameExtras(WebCore::GraphicsContext*, QFlags<QWebFrame::RenderLayer>, const QRegion& clip);
108     void emitUrlChanged();
109     void _q_orientationChanged();
110
111     void didClearWindowObject();
112
113     QWebFrame *q;
114     Qt::ScrollBarPolicy horizontalScrollBarPolicy;
115     Qt::ScrollBarPolicy verticalScrollBarPolicy;
116     WebCore::FrameLoaderClientQt *frameLoaderClient;
117     WebCore::Frame *frame;
118     QWebPage *page;
119     WebCore::KURL url;
120
121     bool allowsScrolling;
122     int marginWidth;
123     int marginHeight;
124 #if USE(ACCELERATED_COMPOSITING)
125     WebCore::TextureMapperLayer* rootTextureMapperLayer;
126     OwnPtr<WebCore::TextureMapper> textureMapper;
127 #endif
128
129 #if ENABLE(ORIENTATION_EVENTS)
130     QOrientationSensor m_orientation;
131 #endif // ENABLE(ORIENTATION_EVENTS).
132 };
133
134 class QWebHitTestResultPrivate {
135 public:
136     QWebHitTestResultPrivate() : isContentEditable(false), isContentSelected(false), isScrollBar(false) {}
137     QWebHitTestResultPrivate(const WebCore::HitTestResult &hitTest);
138
139     QPoint pos;
140     QRect boundingRect;
141     QWebElement enclosingBlock;
142     QString title;
143     QString linkText;
144     QUrl linkUrl;
145     QString linkTitle;
146     QPointer<QWebFrame> linkTargetFrame;
147     QWebElement linkElement;
148     QString alternateText;
149     QUrl imageUrl;
150     QPixmap pixmap;
151     bool isContentEditable;
152     bool isContentSelected;
153     bool isScrollBar;
154     QPointer<QWebFrame> frame;
155     RefPtr<WebCore::Node> innerNode;
156     RefPtr<WebCore::Node> innerNonSharedNode;
157 };
158
159 #endif