Rename QWebNetworkJob::request() into QWebNetworkJob::httpHeader() and added
[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 }
39
40 struct QWebNetworkRequestPrivate;
41 class QWEBKIT_EXPORT QWebNetworkRequest
42 {
43 public:
44     QWebNetworkRequest();
45     QWebNetworkRequest(const QWebNetworkRequest &other);
46     QWebNetworkRequest &operator=(const QWebNetworkRequest &other);
47     ~QWebNetworkRequest();
48
49     QUrl url() const;
50     void setUrl(const QUrl &url);
51
52     QHttpRequestHeader httpHeader() const;
53     void setHttpHeader(const QHttpRequestHeader &header) const;
54
55     QByteArray postData() const;
56     void setPostData(const QByteArray &data);
57
58 private:
59     explicit QWebNetworkRequest(QWebNetworkRequestPrivate *priv);
60     QWebNetworkRequestPrivate *d;
61     friend class QWebNetworkJob;
62 };
63
64 class QWEBKIT_EXPORT QWebNetworkJob
65 {
66 public:
67     enum Method {
68         Get,
69         Post
70         //Head
71     };
72     QUrl url() const;
73     QByteArray postData() const;
74     QHttpRequestHeader httpHeader() const;
75     QWebNetworkRequest request() const;
76
77     QHttpResponseHeader response() const;
78     void setResponse(const QHttpResponseHeader &response);
79
80     bool cancelled() const;
81
82     void ref();
83     bool deref();
84
85     QWebNetworkInterface *networkInterface() const;
86     
87 private:
88     QWebNetworkJob();
89     ~QWebNetworkJob();
90
91     friend class QWebNetworkManager;
92     friend class QWebObjectPluginConnector;
93
94     QWebNetworkJobPrivate *d;
95 };
96
97 class QWebNetworkInterfacePrivate;
98
99 class QWEBKIT_EXPORT QWebNetworkInterface : public QObject
100 {
101     Q_OBJECT
102 public:
103     QWebNetworkInterface(QObject *parent = 0);
104     ~QWebNetworkInterface();
105
106     static void setDefaultInterface(QWebNetworkInterface *defaultInterface);
107     static QWebNetworkInterface *defaultInterface();
108
109     virtual void addJob(QWebNetworkJob *job);
110     virtual void cancelJob(QWebNetworkJob *job);
111     
112 signals:
113     void started(QWebNetworkJob*);
114     void data(QWebNetworkJob*, const QByteArray &data);
115     void finished(QWebNetworkJob*, int errorCode);
116
117 private:
118     friend class QWebNetworkInterfacePrivate;
119     friend class WebCore::WebCoreHttp;
120     QWebNetworkInterfacePrivate *d;
121 };
122
123 #endif