29230db0b135b540c947c97dba88964fc3dd61f3
[WebKit-https.git] / Source / WebCore / platform / network / NetworkingContext.h
1 /*
2     Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
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
20 #ifndef NetworkingContext_h
21 #define NetworkingContext_h
22
23 #include "NetworkStorageSession.h"
24 #include <wtf/RefCounted.h>
25 #include <wtf/RetainPtr.h>
26
27 #if PLATFORM(MAC)
28 #include <wtf/SchedulePair.h>
29 #endif
30
31 #if PLATFORM(CHROMIUM)
32 namespace WebKit {
33 class WebCookieJar;
34 }
35 #endif
36
37 #if PLATFORM(QT)
38 #include <qglobal.h>
39 #endif
40
41 #if PLATFORM(MAC)
42 OBJC_CLASS NSOperationQueue;
43 #endif
44
45 #if PLATFORM(QT)
46 QT_BEGIN_NAMESPACE
47 class QObject;
48 class QNetworkAccessManager;
49 class QUrl;
50 QT_END_NAMESPACE
51 #endif
52
53 #if USE(SOUP)
54 typedef struct _SoupSession SoupSession;
55 #endif
56
57 namespace WebCore {
58
59 class ResourceError;
60 class ResourceRequest;
61
62 class NetworkingContext : public RefCounted<NetworkingContext> {
63 public:
64     virtual ~NetworkingContext() { }
65
66     virtual bool isValid() const { return true; }
67
68     virtual bool shouldClearReferrerOnHTTPSToHTTPRedirect() const = 0;
69
70 #if PLATFORM(CHROMIUM)
71     // FIXME: Wrap WebCookieJar into a NetworkStorageSession to make the code cross-platform.
72     virtual WebKit::WebCookieJar* cookieJar() const = 0;
73 #endif
74
75 #if PLATFORM(MAC)
76     virtual bool needsSiteSpecificQuirks() const = 0;
77     virtual bool localFileContentSniffingEnabled() const = 0; // FIXME: Reconcile with ResourceHandle::forceContentSniffing().
78     virtual SchedulePairHashSet* scheduledRunLoopPairs() const { return 0; }
79     virtual RetainPtr<CFDataRef> sourceApplicationAuditData() const = 0;
80     virtual ResourceError blockedError(const ResourceRequest&) const = 0;
81 #endif
82
83 #if PLATFORM(MAC) || USE(CFNETWORK) || USE(SOUP)
84     virtual NetworkStorageSession& storageSession() const = 0;
85 #endif
86
87 #if PLATFORM(QT)
88     // FIXME: Wrap QNetworkAccessManager into a NetworkStorageSession to make the code cross-platform.
89     virtual QObject* originatingObject() const = 0;
90     virtual QNetworkAccessManager* networkAccessManager() const = 0;
91     virtual bool mimeSniffingEnabled() const = 0;
92     virtual bool thirdPartyCookiePolicyPermission(const QUrl&) const = 0;
93 #endif
94
95 #if PLATFORM(WIN)
96     virtual String userAgent() const = 0;
97     virtual String referrer() const = 0;
98     virtual ResourceError blockedError(const ResourceRequest&) const = 0;
99 #endif
100
101 #if USE(SOUP)
102     virtual uint64_t initiatingPageID() const = 0;
103 #endif
104
105 protected:
106     NetworkingContext() { }
107 };
108
109 }
110
111 #endif // NetworkingContext_h