Added a QWebNetworkRequest convenience constructor.
[WebKit-https.git] / WebKitQt / Api / qwebnetworkinterface.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., 59 Temple Place - Suite 330,
17   Boston, MA 02111-1307, 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 QWEBNETWORKINTERFACE_H
23 #define QWEBNETWORKINTERFACE_H
24
25 #include <qobject.h>
26 #include <qurl.h>
27 #include <qhttp.h>
28 #include <qbytearray.h>
29
30 #include <qwebkitglobal.h>
31
32 class QWebNetworkJobPrivate;
33 class QWebNetworkInterface;
34 class QWebObjectPluginConnector;
35
36 namespace WebCore {
37     class WebCoreHttp;
38     class ResourceRequest;
39     class FrameLoaderClientQt;
40 }
41
42 struct QWebNetworkRequestPrivate;
43 class QWEBKIT_EXPORT QWebNetworkRequest
44 {
45 public:
46     enum Method {
47         Get,
48         Post
49         //Head
50     };
51
52     QWebNetworkRequest();
53     explicit QWebNetworkRequest(const QUrl &url, Method method = Get, const QByteArray &postData = QByteArray());
54     QWebNetworkRequest(const QWebNetworkRequest &other);
55
56     QWebNetworkRequest &operator=(const QWebNetworkRequest &other);
57     ~QWebNetworkRequest();
58
59     QUrl url() const;
60     void setUrl(const QUrl &url);
61
62     QHttpRequestHeader httpHeader() const;
63     void setHttpHeader(const QHttpRequestHeader &header) const;
64
65     QByteArray postData() const;
66     void setPostData(const QByteArray &data);
67
68 private:
69     explicit QWebNetworkRequest(const QWebNetworkRequestPrivate &priv);
70     explicit QWebNetworkRequest(const WebCore::ResourceRequest &request);
71     friend class QWebNetworkJob;
72     friend class WebCore::FrameLoaderClientQt;
73
74     QWebNetworkRequestPrivate *d;
75 };
76
77 class QWEBKIT_EXPORT QWebNetworkJob
78 {
79 public:
80     QUrl url() const;
81     QByteArray postData() const;
82     QHttpRequestHeader httpHeader() const;
83     QWebNetworkRequest request() const;
84
85     QHttpResponseHeader response() const;
86     void setResponse(const QHttpResponseHeader &response);
87
88     bool cancelled() const;
89
90     void ref();
91     bool deref();
92
93     QWebNetworkInterface *networkInterface() const;
94     
95 private:
96     QWebNetworkJob();
97     ~QWebNetworkJob();
98
99     friend class QWebNetworkManager;
100     friend class QWebObjectPluginConnector;
101
102     QWebNetworkJobPrivate *d;
103 };
104
105 class QWebNetworkInterfacePrivate;
106
107 class QWEBKIT_EXPORT QWebNetworkInterface : public QObject
108 {
109     Q_OBJECT
110 public:
111     QWebNetworkInterface(QObject *parent = 0);
112     ~QWebNetworkInterface();
113
114     static void setDefaultInterface(QWebNetworkInterface *defaultInterface);
115     static QWebNetworkInterface *defaultInterface();
116
117     virtual void addJob(QWebNetworkJob *job);
118     virtual void cancelJob(QWebNetworkJob *job);
119     
120 signals:
121     void started(QWebNetworkJob*);
122     void data(QWebNetworkJob*, const QByteArray &data);
123     void finished(QWebNetworkJob*, int errorCode);
124
125 private:
126     friend class QWebNetworkInterfacePrivate;
127     friend class WebCore::WebCoreHttp;
128     QWebNetworkInterfacePrivate *d;
129 };
130
131 #endif