webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.h
changeset 0 dd21522fd290
child 10 a359256acfc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+
+#ifndef __HTTPSESSIONMANAGER_H__
+#define __HTTPSESSIONMANAGER_H__
+
+#include <wtf/HashMap.h>
+#include "HttpUiCallbacks.h"
+#include "HttpCallbacks.h"
+#include "HttpDownload.h"
+#include <../bidi.h>
+#include "WebFrame.h"
+#include "WebFrameView.h"
+#include "WebView.h"
+#include <es_sock.h> // RConnection
+
+namespace WebCore {
+    class ResourceHandle;
+    struct ResourceRequest;
+    class ResourceResponse;
+};
+class HttpCallbacks;
+class HttpConnection;
+class CHttpCacheManager;
+class HttpRequestHeaderManager;
+class CookieHandler;
+class HttpDlConnection;
+class RHTTPTransaction;
+class SelfDownloadContentHandler;
+
+const int KHttpMaxConnectionNum = 7;
+const int KHttpMaxTransactionNumPerConnection = 5;
+const int KHttpBatchingBuffSize = 2*1400;
+const int KHttpReceiveBuffSize = 32*1024;
+
+class HttpSessionManager
+{
+friend class HttpDownload;
+public:
+    HttpSessionManager();
+    ~HttpSessionManager();
+    void openHttpSessionIfNeededL();
+    void closeHttpSession();
+    bool isSessionRunning() const { return m_sessionRunning; }
+    RHTTPSession& httpSession() { return m_httpSession; }
+    CookieHandler* cookieHandler() const { return m_cookieHandler; }
+    void enableCookies(int cookiesEnabled);
+    int cookiesEnabled() const { return m_cookiesEnabled; }
+    void enableImei(bool imeiEnabled) { m_imeiEnabled = imeiEnabled; }
+    bool imeiEnabled() const { return m_imeiEnabled; }
+    void setEmbedded(int embedded) { m_embedded = embedded; }
+    int isEmbedded() const { return m_embedded; }
+    void enableReferer(bool referer) { m_sendReferer = referer; }
+    bool refererEnabled() const { return m_sendReferer; }
+    void enableSecurityDialogs(bool showDialogs) {m_securityWarningsEnabled = showDialogs; }
+    bool securityDialogsEnabled() const { return m_securityWarningsEnabled; }
+    void enableAutoOpenDownloads(bool autoOpen);
+    bool autoOpenDownloads() { return m_autoOpenDownloads; }
+    void setAp(unsigned int ap) { m_ap = ap; }
+    unsigned int ap() const { return m_ap; }
+    void setCharset(unsigned int charset) { m_charset = charset; }
+    unsigned int charset() const { return m_charset; }
+    void addRequest(HttpConnection* connection, WebCore::ResourceHandle* handle);
+    void removeRequest(HttpConnection* connection);
+    void addDlRequest(HttpDlConnection* dlConnection);
+    bool findDownloadConnection (HttpDlConnection* dlConnection, int& position);
+    void removeDlRequest(HttpDlConnection* dlConnection); 
+    void addAuthRequest(HttpConnection* connection, WebCore::ResourceHandle* handle); 
+    void removeAuthRequest(HttpConnection* connection); 
+    HttpUiCallbacks* uiCallback() { return &m_uiCallbacks; }
+    MHTTPTransactionCallback* transactionCallback() { return &m_transactionCallbacks; }
+    void handleError(int error);
+    CHttpCacheManager* cacheManager();
+    HttpDownload* httpDownload(bool aCreate=true);
+    HttpConnection* firstHttpConnection();
+	void download(WebCore::ResourceHandle* handle, const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, HttpConnection* connection);
+    HttpRequestHeaderManager* requestHeaderManager() { return m_ReqHdrManager; }
+	void setSelfDownloadContentTypes(const TDesC& types);
+	void setClientAcceptHeadersL(const TDesC& headers);
+	bool httpPipelining() {return m_httpPipelining;}
+    void UpdateCacheL( const WebCore::String& url, const WebCore::String &equiv, const WebCore::String &content );
+	void ResetOutstandingSelfDl() {m_OutstandingSelfDl = false; }
+    const RPointerArray<HBufC8>& ClientAcceptHeaders() const { return m_ClientAcceptHeaders; }
+    
+private:
+    void updateFilters(bool initializing = false);
+    int count();
+    HttpDlConnection* CreateHttpDlConnection();
+	void downloadL(WebCore::ResourceHandle* handle, const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, HttpConnection* connection);
+
+private:
+    RHTTPSession m_httpSession;
+    bool m_sessionRunning;
+    int m_cookiesEnabled;
+    bool m_cookieFilterLoaded;
+    bool m_imeiEnabled;
+    int m_embedded;
+    bool m_sendReferer;
+    bool m_securityWarningsEnabled;
+    bool m_autoOpenDownloads;
+	bool m_httpPipelining;
+    unsigned int m_ap;
+    unsigned int m_charset;
+    HashMap<HttpConnection *, WebCore::ResourceHandle *> m_pendingHttpRequests;
+    HashMap<HttpConnection *, WebCore::ResourceHandle *> m_pendingHttpAuthRequests;
+    HttpUiCallbacks m_uiCallbacks;
+    HttpCallbacks m_transactionCallbacks;
+    CHttpCacheManager* m_cacheManager;
+    HttpRequestHeaderManager* m_ReqHdrManager;
+    CookieHandler* m_cookieHandler;
+    Vector<HttpDlConnection*> m_pendingHttpDownloadRequests;
+    HttpDownload* m_httpDownload;
+    SelfDownloadContentHandler* m_SelfDownloadContentHandler;
+    HBufC* m_SelfDownloadContentTypes;
+	bool m_OutstandingSelfDl;
+	RPointerArray<HBufC8> m_ClientAcceptHeaders;
+};
+#endif // __HTTPSESSIONMANAGER_H__
+// end of file