--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pnpmobileservices/pnpms/OnlineSupport/inc/MiniBrowser.h Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,258 @@
+/*
+* Copyright (c) 2005-2006 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: Header file CMiniBrowser class
+*
+*/
+
+
+#ifndef MINI_BROWSER_H
+#define MINI_BROWSER_H
+
+// INCLUDES
+#include <http/mhttptransactioncallback.h>
+#include <http/mhttpdatasupplier.h>
+#include <http/rhttpsession.h>
+#include <http/rhttptransaction.h>
+
+
+#include "MiniBrowserObserver.h"
+#include "HttpProvStates.h"
+
+// FORWARD DECLARATIONS
+class CNHeadWrapperParser;
+
+// CLASS DECLARATION
+
+/**
+* CMiniBrowser class
+*
+* @since 3.1?
+*/
+class CMiniBrowser :
+ public CBase,
+ public MHTTPTransactionCallback,
+ public MHTTPDataSupplier
+ {
+public:
+ enum TContentType
+ {
+ EContentTypeUnknown = 0,
+ EContentTypeTextPlain,
+ EContentTypeNokiaHeadWrapper
+ };
+ /**
+ Standard Symbian 2 phase constructor. The returned object is left
+ to the CleanupStack.
+ @param aObserver Listens for events/errors
+ @param aSocketServ RSocketServ. Note! This must be opened until
+ the CMiniBrowser object has been destroyed.
+ @param aSocketServ RSocketServ. Note! This must be opened and
+ started until the CMiniBrowser object has been destroyed.
+ */
+ static CMiniBrowser* NewLC( MMiniBrowserObserver& aObserver,
+ RSocketServ& aSocketServ, RConnection& aConnection );
+
+ /**
+ Standard Symbian 2 phase constructor.
+ @param aObserver Listens for events/errors
+ @param aSocketServ RSocketServ. Note! This must be opened until
+ the CMiniBrowser object has been destroyed.
+ @param aSocketServ RSocketServ. Note! This must be opened and
+ started until the CMiniBrowser object has been destroyed.
+ */
+ static CMiniBrowser* NewL( MMiniBrowserObserver& aObserver, RSocketServ&
+ aSocketServ, RConnection& aConnection );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMiniBrowser();
+
+ /**
+ Make a HTTP GET request to the url defined.
+ Use this override if the AP used does not have proxy defined.
+ @param aUri
+ @param aProxyAddress Proxy server address.
+ @param aProxyPort Port to be used for proxy server
+ */
+ void HttpGetL( const TDesC& aUri );
+
+ /**
+ Make a HTTP GET request to the url defined.
+ Use this override if the AP used has a proxy defined.
+ @param aUri
+ @param aProxyAddress Proxy server address.
+ @param aProxyPort Port to be used for proxy server
+ */
+ void HttpGetL( const TDesC& aUri, const TDesC& aProxyAddress,
+ const TUint aProxyPort );
+
+ /**
+ Returns the report URL that was in the previously received HeadWrapper document.
+ Leaves with KErrNotFound if there was no valid report url or no HeadWrapper document
+ has been received.
+ @return Report Url. Left to CleanupStack.
+ */
+ HBufC* GetReportUrlLC();
+
+private:
+ CMiniBrowser( MMiniBrowserObserver& aObserver );
+ void ConstructL( RSocketServ& aSocketServ, RConnection& aConnection );
+
+ /**
+ Called from HttpGetL.
+ @see HttpGetL
+ */
+ void CMiniBrowser::DoHttpGetL(
+ const TDesC& aUri,
+ const TBool aUseProxy,
+ const TDesC& aProxyAddress,
+ const TUint aProxyPort );
+
+
+public: // from MHTTPTransactionCallback
+
+ /*!
+ Called when the filter's registration conditions are satisfied
+ for events that occur on a transaction. Note that this function
+ is not allowed to leave if called with certain events
+ */
+ void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent &aEvent );
+ /*!
+ Called when RunL leaves from a transaction event. This works
+ in the same way as CActve::RunError; return KErrNone if you
+ have handled the error. If you don't completely handle the
+ error, a panic will occur.
+ */
+ TInt MHFRunError( TInt aError, RHTTPTransaction aTransaction,
+ const THTTPEvent& aEvent );
+
+public: // from MHTTPDataSupplier
+
+ /*!
+ Obtain a data part from the supplier. The data is guaranteed to
+ survive until a call is made to ReleaseData().
+ */
+ TBool GetNextDataPart( TPtrC8 &aDataPart );
+
+ /*!
+ Release the current data part being held at the data supplier.
+ This call indicates to the supplier that the part is no longer
+ needed, and another one can be supplied, if appropriate.
+ */
+ void ReleaseData();
+
+ /*!
+ Obtain the overall size of the data being supplied, if known to
+ the supplier. Where a body of data is supplied in several parts
+ this size will be the sum of all the part sizes. If the size is
+ not known, KErrNotFound is returned; in this case the client must
+ use the return code of GetNextDataPart to find out when the data
+ is complete.
+ */
+ TInt OverallDataSize();
+
+ /*!
+ Reset the data supplier. This indicates to the data supplier that
+ it should return to the first part of the data. This could be used
+ in a situation where the data consumer has encountered an error and
+ needs the data to be supplied afresh. Even if the last part has
+ been supplied (i.e. GetNextDataPart has returned ETrue), the data
+ supplier should reset to the first part.
+
+ If the supplier cannot reset it should return an error code;
+ otherwise it should return KErrNone, where the reset will be
+ assumed to have succeeded
+ */
+ TInt Reset();
+
+private:
+ /*
+ @return TInt KErrNone in case everything was Ok.
+ */
+ static TInt TimeOutCallBack( TAny* aMiniBrowser);
+ /*
+ Called by TimeOutCallBack
+ */
+ void DoTimeOutCallBackL();
+
+ /*!
+ Appends aData to iResponseData. If aData does not fit in, iResponseData
+ is reallocated.
+ */
+ void AppendResponseDataL( const TDesC8& aData );
+
+ /*!
+ Deletes and allocates an empty buffer for iResponseData and iReportUrl.
+ This is called from DoHttpGetL to prevent using same response data and
+ report url twice.
+ */
+ void ResetResponseDataL();
+
+ /**
+ Currently not supported
+ Shows the response text (from iResponseData) in a dialog.
+ */
+// void ShowMessageDialogL( const TDesC8& aMessage );
+
+ /**
+ Parses received data and saves provisioned settings if the data is a
+ HeadWrapper document.
+ */
+ void ParseAndSaveProvisionedSettingsL();
+
+ /**
+ Saves provisioned settings.
+ */
+ void SaveProvisionedSettingsL( const TDesC8& aContent );
+
+ /*!
+ Get special user agent string for ServiceHelp silent mode.
+ */
+ HBufC8* GetUserAgentStringL();
+
+ /*!
+ Get report Url from CNHeadWrapperParser and store it into iReportUrl
+ buffer for later reference.
+ */
+ void GetReportUrlL( const CNHeadWrapperParser& aNHwrParser );
+
+private:
+ /*! Time-out timer */
+ CPeriodic* iPeriodic;
+ /*! Observer is notified when transaction was successful or failed */
+ MMiniBrowserObserver& iObserver;
+ /*! Internet access point id */
+ TInt iIapId;
+ /*! buffer for URI */
+ HBufC8* iUri;
+ /*! buffer for received data */
+ HBufC8* iResponseData;
+ /*! buffer for report/next url parameter of received HeadWrapper document */
+ HBufC8* iReportUrl;
+ /*! The content type header value of the received data */
+ TContentType iContentType;
+ /*! Http session */
+ RHTTPSession iSession;
+ /*! String pool for http session */
+ RStringPool iSessionStringPool;
+ /*! Http transaction*/
+ RHTTPTransaction iTransaction;
+ /*! The status of last provisioning, default is EStatusUnknown */
+ THttpProvStates::TProvisioningStatus iProvisioningStatus;
+ };
+
+#endif // MINI_BROWSER_H
+
+// End of File