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