diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/filters/redirect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/filters/redirect.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,104 @@ +// Copyright (c) 2001-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 __REDIRECT_H__ +#define __REDIRECT_H__ + +#include +#include +#include +#include "timerlogger.h" + +class CDelimitedPath8; +class CDelimitedQuery8; + +//##ModelId=3B1E52A00353 +class CRedirectFilter : public CEComFilter, public MHTTPFilter + { + public: + static CEComFilter* InstallFilterL(TAny* aSession); + + //##ModelId=3B1E52A0039D + ~CRedirectFilter(); + +public: // Methods from MHTTPFilterBase + + // @see MHTTPFilterBase::MHFRunL + //##ModelId=3B1E52A0039A + virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent); + + // @see MHTTPFilterBase::MHFSessionRunL + virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent); + + // @see MHTTPFilterBase::MHFRunError + //##ModelId=3B1E52A00391 + 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 + //##ModelId=3B1E52A00389 + virtual void MHFUnload(RHTTPSession aSession, THTTPFilterHandle aHandle); + + // @see MHTTPFilter::MHFLoad + //##ModelId=3B1E52A00386 + virtual void MHFLoad(RHTTPSession aSession, THTTPFilterHandle aHandle); + + private: + + //##ModelId=3B1E52A00385 + CRedirectFilter(RHTTPSession aSession); + //ContructL also Installs the filter. + //##ModelId=3B1E52A0037F + void ConstructL(RHTTPSession aSession); + + // Function to handle the receipt of 301 Moved Permanently, 302 Found, 307 Moved Temporarily or 303 See Other + //##ModelId=3B1E52A0037D + void HandleRedirectL(RHTTPTransaction aTransaction,THTTPEvent::TTransactionWarning aWarningEvent); + + // Handle a 305 Use Proxy response + //##ModelId=3B1E52A0037B + void HandleUseProxyL(RHTTPTransaction aTransaction); + + // Sets the uri of aRequest to aUri. If aUri is relative then complete it + // using the host information from the request uri. + // Note: according to the http spec a redirect should not use a relative uri + // but that does not stop some sites from doing it. + void SetRedirectUriL(RHTTPRequest aRequest, const TUriC8& aUri) const; + + void EscapeEncodeUriL ( CUri8& aUri ) const; + + + + + private: + // A count to make sure we delete at the right time. + //##ModelId=3B1E52A00373 + TInt iLoadCount; + //##ModelId=3BA6003B0264 + RStringPool iStringPool; + + //##ModelId=3BA6003B0250 + RHTTPSession iSession; + + const TStringTable& iStringTable; + __DECLARE_PERFORMANCE_LOG + }; + +#endif //__REDIRECT_H_