diff -r 6385c4c93049 -r 8e6fa1719340 browserui/browser/BrowserAppInc/BrowserSpecialLoadObserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserui/browser/BrowserAppInc/BrowserSpecialLoadObserver.h Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2004 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: Handle special load events such as network connection, +* deal with non-http or non-html requests +* +*/ + + + +#ifndef BROWSERSPECIALLOADOBSERVER_H +#define BROWSERSPECIALLOADOBSERVER_H + +// INCLUDES +#include +#include +#include +#include +#include + +class MApiProvider; +class CEikDocument; +class CSchemeHandler; +class CDocumentHandler; +class CBrowserContentView; +class CAiwGenericParamList; +class CBrowserWindow; + +enum TPopupPreferences + { + EBlockOnce = 0, + EAllowOnce, + EBlock, + EAllow + }; + +// CLASS DECLARATION + +/** +* This observer handles special load events such as network connection, +* deal with non-http(s) or non-html requests +* +* @lib BrowserEngine.lib +* @since 2.8 +*/ +class CBrowserSpecialLoadObserver : public CBase, + public MBrCtlSpecialLoadObserver, + public MAknServerAppExitObserver + { + public: // Constructors and destructors + + /** + * Constructor. + */ + static CBrowserSpecialLoadObserver* NewL( + MApiProvider& aApiProvider, + CBrowserWindow* aWindow, + CEikDocument* aDocument, + CBrowserContentView* aContentView ); + + /** + * Destructor. + */ + virtual ~CBrowserSpecialLoadObserver(); + + private: + +#ifdef __WINS__ + TInt AskIapIdL( TUint32& aId ); +#endif // __WINS__ + + public: // From MBrCtlSpecialLoadObserver + + /** + * Request to create a network connection. + * @since 2.8 + * @param aConnectionPtr A pointer to the new connection. + * If NULL, the proxy filter will automatically create + * a network connection. + * @param aSockSvrHandle A handle to the socket server. + * @param aNewConn A flag if a new connection was created. + * If the connection is not new, proxy filter optimization + * will not read the proxy again from CommsBd. + * @return void + */ + virtual void NetworkConnectionNeededL( TInt* aConnectionPtr, + TInt* aSockSvrHandle, + TBool* aNewConn, + TApBearerType* aBearerType ); + + /** + * Request the host applicaion to handle non-http request. + * @since 2.8 + * @param aUrl The non-http(s) or file URL + * @param aParamList Parameters to pass to the host application. Contain referer header. It could be NULL + * @return ETrue is handled by the host application. EFlase if not + */ + virtual TBool HandleRequestL( RArray* aTypeArray, + CDesCArrayFlat* aDesArray ); + + /** + * Request the host applicaion to handle downloads + * @since 2.8 + * @param aTypeArray array of download parameter types + * @param aDesArray array of values associated with the types in the type array + * @return ETrue is handled by the host application. EFlase if not + */ + virtual TBool HandleDownloadL( RArray* aTypeArray, + CDesCArrayFlat* aDesArray ); + + + public: // from MAknServerAppExitObserver + + void HandleServerAppExit( TInt aReason ); + + protected: // Constructors + + /** + * Default C++ constructor. + */ + CBrowserSpecialLoadObserver( MApiProvider& aApiProvider, + CBrowserWindow* aWindow, + CEikDocument* aDocument, + CBrowserContentView* aContentView ); + + /** + * 2nd phase constructor. Leaves on failure. + */ + void ConstructL(); + + public: // New functions + + inline TBool LongZeroStartup() + { return iLongZeroStartup; } + + inline void SetLongZeroStartup( TBool aLongZeroStartup ) + { iLongZeroStartup = aLongZeroStartup; } + inline TBool IsConnectionStarted() + { return iConnectionStarted; } + /** + * Request for the connection to be cancelled + */ + inline void CancelConnection() { iConnectionCancelled = ETrue; } + + + protected: // New functions + +#ifdef __RSS_FEEDS + /** + * Handles the content if it is special Ui content (rss or opml) and returns true, otherwise the method + * returns false. + * @param aTypeArray array of download parameter types + * @param aDesArray array of values associated with the types in the type array + * @return ETrue if it handled rss content, EFalse otherwise + * @since 3.1 + */ + TBool HandleUiContentL(RArray* aTypeArray, + CDesCArrayFlat* aDesArray ) const; +#endif // __RSS_FEEDS + + /** + * Make generic parameter list from BrCtl parameter list. + * @param aTypeArray array of download parameter types + * @param aDesArray array of values associated with the types in the type array + * @return The dynamically allocated list. + * @since 2.8 + */ + CAiwGenericParamList* BrCtlParamList2GenericParamListL( + RArray* aTypeArray, + CDesCArrayFlat* aDesArray ) const; + + /** + * Extract the given BrCtl parameter from the list. + * @param aParamTypeToFind Extract this parameter. + * @param aTypeArray array of download parameter types. + * @param aDesArray array of values associated with the types in the type array. + * @param aParamFound Output: ETrue if the parameter was found. + * @return A TPtrC pointer for the value. + * @since 2.8 + */ + TPtrC ExtractBrCtlParam( + TUint aParamTypeToFind, + RArray* aTypeArray, + CDesCArrayFlat* aDesArray, + TBool& aParamFound ) const; + + /** + * Check if the download's content type is in + * KBrowserSelfDownloadContentTypes. + * @param aTypeArray array of download parameter types. + * @param aDesArray array of values associated with the types in the type array. + * @return ETrue, if it is there. + * @since 3.0 + */ + TBool IsSelfDownloadContentTypeL( RArray* aTypeArray, + CDesCArrayFlat* aDesArray ) const; + + /** + * Open the download embedded with Document Handler. + * @param aTypeArray array of download parameter types. + * @param aDesArray array of values associated with the types in the type array. + * @return None. + * @since 3.0 + */ + void OpenFileEmbeddedL( RArray* aTypeArray, + CDesCArrayFlat* aDesArray ); + + /** + * DoRequest the host applicaion to handle non-http request. + * @since 2.8 + * @param aUrl The non-http(s) or file URL + * @param aParamList Parameters to pass to the host application. Contain referer header. It could be NULL + * @return ETrue is handled by the host application. EFlase if not + */ + virtual TBool DoHandleRequestL( RArray* aTypeArray, + CDesCArrayFlat* aDesArray ); + + private: // data members + + MApiProvider *iApiProvider; // owner app, not owned + CBrowserWindow *iWindow; // owner window, not owned + CEikDocument *iDocument; // document, not owned + CSchemeHandler *iSchemeHandler; // scheme handler + CDocumentHandler *iDocHandler; // Owned. + CBrowserContentView* iContentView; // content view, not owned + TBool iSchemeProcessing; // scheme processing + + /** + * Indicated whether the Browser was started using the long zero + * key press. This is ONLY valid at start up. + **/ + TBool iLongZeroStartup; + + /** + * Flag to indicate whether the Browser has started the network connection + **/ + TBool iConnectionStarted; + TBool iConnectionCancelled; + }; + +#endif // BROWSERSPECIALLOADOBSERVER_H + +// End of File