diff -r b16258d2340f -r 5ee1d9ce5878 applayerprotocols/httptransportfw/Test/testfilter/testhttpfilter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/testfilter/testhttpfilter.h Fri Feb 19 23:50:57 2010 +0200 @@ -0,0 +1,173 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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 __TESTFILTER_H_ +#define __TESTFILTER_H_ +#include "Timer.h" +#include +#include +#include +#include +#include + +class RHTTPResponse; +class RHTTPTransaction; +class CMD5; + +const TInt KMaxTypeLength = 255; +const TInt KBsfAddressSize = 128; + +class CShutdown : public CTimer + { + enum { EShutdownDelay = 0x4000000 }; // approx 2s + public: + CShutdown(); + void ConstructL(); + void Start(); + void Stop(); + private: + void RunL(); + }; + +class CTestFilterInterface : public CBase +/** +The ECOM interface definition for an HTTP authentication filter. Implementations +of an authentication filter must inherit this class. +@publishedAll +@released +*/ + { +public: // Methods + /** + @fn InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback) + Intended Usage: This method is used to install the authentication filter to the filter queue. + The returned pointer is not owned as the filters must be self-destroying when + they are unloaded. + @param aSession A handle to the transport session + @param aCallback A pointer to the object implementing the callback function + @return Pointer to the newly installed plugin + @pre The session had already been setup + @post The filter(s) have been installed + */ + inline static void InstallFilterL(RHTTPSession& aSession); + + /** + @fn ~CTestFilterInterface() + Intended Usage: Virtual destructor + @pre The object identified by the destructor key in iEcomDtorID exists + @post The object is destroyed + */ + inline ~CTestFilterInterface(); + +private: + // Attributes + /// The ECom destructor key identifier + TUid iEcomDtorID; + }; + +//---------------------------------------------------------------------------------------- + +inline void CTestFilterInterface::InstallFilterL(RHTTPSession& aSession) + { + const TUid KUidAuthenticationFilter = {0x2002CE96}; + + REComSession::CreateImplementationL(KUidAuthenticationFilter, _FOFF(CTestFilterInterface,iEcomDtorID), &aSession); + } + +inline CTestFilterInterface::~CTestFilterInterface() + { + REComSession::DestroyedImplementation(iEcomDtorID); + } + + +class CTestFilter : public CTestFilterInterface, public MHTTPFilter, public MTimerObserver +{ + enum + { + EAlgUnknown, + EAlgMd5, + EAlgMd5Sess + }; + +public: + + static CTestFilterInterface* InstallFilterL(TAny* aSession); + + virtual ~CTestFilter(); + +public: // Methods from MHTTPFilterBase + + /// @see MHTTPFilterBase::MHFRunL + virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent); + + /// @see MHTTPFilterBase::MHFSessionRunL + virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent); + + /// @see MHTTPFilterBase::MHFRunError + virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent); + + /// @see MHTTPFilterBase::MHFSessionRunError + virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent); + +public: // Methods from MHTTPFilter + + /// @see MHTTPFilter::MHFUnload + virtual void MHFUnload(RHTTPSession aSession, THTTPFilterHandle aHandle); + + /// @see MHTTPFilter::MHFLoad + virtual void MHFLoad(RHTTPSession aSession, THTTPFilterHandle aHandle); + + private: + + CTestFilter(); + + ///ContructL also Installs the filter. + void ConstructL( RHTTPSession aSession ); + + void CheckHeadersL( RHTTPTransaction& aTrans ); + + void CleanupAll(); + + TBool FindAuth(const TDesC8& aQop) const; + + void DoSubmitL( RHTTPTransaction aTransaction ); + + void EncodeBasicAuthL(RString& aUsername,RString& aPW, RHTTPTransaction& aTransaction); + + TBool HandleTimerEventL(TTimerEventType aEventType); + + /// A count to make sure we delete at the right time. + TInt iLoadCount; + RStringPool iStringPool; + RStringF iUsernameStr; + RStringF iPasswordStr; + RStringF iUserAgent; + RStringF iAuthInfo; + TInt64 iSeed; + TInt iOffset; + TUint8 iFlags; + TBuf8<5> iProtocolIdentifier; + TInt iBootstrapCount; + TBool iBootstrapPending; + TBool iHaveCredentials; + CActiveSchedulerWait iBootstrapWait; + CTimerOut* iTimeOut; + +}; + +#endif //__TESTFILTER_H_ + +//EOF