webengine/osswebengine/WebCore/platform/network/symbian/HttpCallbacks.cpp
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpCallbacks.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,104 @@
+/*
+* 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:  
+*
+*/
+
+
+#include "HttpCallbacks.h"
+#include "HttpConnection.h"
+#include "HttpDlConnection.h"
+#include <http/rhttpsession.h>
+
+// CONSTANTS
+
+
+HttpCallbacks::HttpCallbacks()
+{
+}
+
+HttpCallbacks::~HttpCallbacks()
+{
+}
+
+void HttpCallbacks::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent &aEvent)
+{
+    HttpConnection* httpConnection = HttpConnection::connectionFromTransaction(aTransaction);
+    if (httpConnection) {
+        httpConnection->MHFRunL(aEvent);
+    } else {
+		RHTTPTransactionPropertySet propSet = aTransaction.PropertySet();
+		RStringPool strPool = aTransaction.Session().StringPool();
+		THTTPHdrVal callback;
+		RStringF downloadPropStr;
+
+		HttpDlConnection* httpDlConnection = HttpDlConnection::dlConnectionFromTransaction(aTransaction);
+		if (httpDlConnection) {
+			RStringF downloadPropStr = strPool.OpenFStringL( _L8( "TransactionCallback" ) );
+			if( propSet.Property( downloadPropStr, callback ) ){
+				MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST( MHTTPTransactionCallback*, callback.Int() );
+				if( callbackPtr ){
+					callbackPtr->MHFRunL( aTransaction, aEvent );
+				}
+			}
+		}
+		else {
+			RStringF callbackStr = strPool.OpenFStringL( _L8( "SelfDownloadCallback" ) );
+			TBool selfDl = propSet.Property(callbackStr, callback);
+			if(selfDl) {
+				MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST( MHTTPTransactionCallback*, callback.Int());
+				if(callbackPtr) {
+					callbackPtr->MHFRunL(aTransaction, aEvent);
+				}
+			}
+		}
+	}
+}
+
+TInt HttpCallbacks::MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent &aEvent)
+{
+    HttpConnection* httpConnection = HttpConnection::connectionFromTransaction(aTransaction);
+    if (httpConnection) {
+        httpConnection->handleError(aError);
+    }	
+	else {
+		RHTTPTransactionPropertySet propSet = aTransaction.PropertySet();
+		RStringPool strPool = aTransaction.Session().StringPool();
+		THTTPHdrVal callback;
+		RStringF downloadPropStr;
+
+		HttpDlConnection* httpDlConnection = HttpDlConnection::dlConnectionFromTransaction(aTransaction);
+		if (httpDlConnection) {
+			RStringF downloadPropStr = strPool.OpenFStringL( _L8( "TransactionCallback" ) );
+			if( propSet.Property( downloadPropStr, callback ) ){
+				MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST( MHTTPTransactionCallback*, callback.Int() );
+				if( callbackPtr ){
+					callbackPtr->MHFRunError( aError, aTransaction, aEvent );
+				}
+			}
+		}
+		else {
+			RStringF callbackStr = strPool.OpenFStringL( _L8( "SelfDownloadCallback" ) );
+			TBool selfDl = propSet.Property(callbackStr, callback);
+			if(selfDl) {
+				MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST( MHTTPTransactionCallback*, callback.Int());
+				if(callbackPtr) {
+					callbackPtr->MHFRunError(aError, aTransaction, aEvent);
+				}
+			}
+		}
+	}
+    return KErrNone;
+}
+// end of file