diff -r 000000000000 -r ff3b6d0fd310 satengine/SatServer/Commands/LaunchBrowserCmd/inc/CLaunchBrowserHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satengine/SatServer/Commands/LaunchBrowserCmd/inc/CLaunchBrowserHandler.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,381 @@ +/* +* Copyright (c) 2002-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: LaunchBrowser command handler +* +*/ + + +#ifndef CLAUNCHBROWSERHANDLER_H +#define CLAUNCHBROWSERHANDLER_H + +#include +#include +#include // WsSession +#include // TApaTask +#include // KWmlcHandler + +#include "CSatCommandHandler.h" +#include "SatSTypes.h" // TSatQuery + +class MSatUtils; +class RCmManager; +class RCmConnectionMethod; + +/** + * Command handler for LaunchBrowser command. + * + * @lib LaunchBrowserCmd.lib + * @since S60 v3.0 + */ +class CLaunchBrowserHandler : public CSatCommandHandler + { + +public: + + static CLaunchBrowserHandler* NewL( MSatUtils* aUtils ); + + virtual ~CLaunchBrowserHandler(); + +// from base class MSatCommand + + /** + * From MSatCommand. + * Response from the client. + * + */ + void ClientResponse(); + +// from base class CSatCommandHandler + + /** + * From CSatCommandHandler. + * Event notification. + * + * @param aEvent An event that is occured. + */ + void Event( TInt aEvent ); + +protected: + +// from base class CActive + + /** + * From CActive. + * Cancels the usat request. + * + */ + void DoCancel(); + +// from base class CSatCommandHandler + + /** + * From CSatCommandHandler. + * Requests the command notification. + * + * @param aStatus Request status + */ + void IssueUSATRequest( TRequestStatus& aStatus ); + + /** + * From CSatCommandHandler. + * Precheck before executing the command. + * + * @return TBool indicating command is currently allowed. + */ + TBool CommandAllowed(); + + /** + * From CSatCommandHandler. + * Need for ui session. + * + * @return TBool indicating need of ui session. + */ + TBool NeedUiSession(); + + /** + * From CSatCommandHandler. + * Called when USAT API notifies that command. + * + */ + void HandleCommand(); + + /** + * From CSatCommandHandler. + * Indicates the failure of launching ui client. + * + */ + void UiLaunchFailed(); + +private: + + CLaunchBrowserHandler(); + + void ConstructL(); + + /** + * Checks if Browser application is launched. + * + * @return The result of the operation. + */ + TBool BrowserExists(); + + /** + * Closes the Browser application if it is active. + * + * @return The result of the operation. + */ + void CloseBrowser(); + + /** + * Launches The Browser with URL. + * + * @param aParam, Reference to the parameter for the Browser + * application. + * @param aAccessPointUid, Reference to the accesspoint uid. + */ + void LaunchWithUrlL( + const TDesC& aParam, + const TUid& aAccessPointUid ); + + /** + * Handle the Launch Browser command. + * + */ + void LaunchBrowserL(); + + /** + * Starts timer. Function returns as the given time has elapsed or + * timer is cancelled. + * + * @param aDelay Delay from the function call to complete function in + * microseconds + * @param aInterval Interval to complete wait after aDelay, zero by + * default + */ + void After( + const TTimeIntervalMicroSeconds32& aDelay, + const TTimeIntervalMicroSeconds32& aInterval = 0 ); + + /** + * Called after given delay in After function. + * Causes the After function to complete + * + * @param aPtr Pointer to itself since this is static function + * @return whether to call function again after an interval + */ + static TInt DelayCallBack( TAny* aPtr ); + + /** + * Create a new APN with given parameters using Access Point engine. + * + * @param aApName APN name. + * @param aProxyServerAddr Proxy/Gateway server address. + * @param aProxyPortNumber Proxy server port number. + * @param aIPvType Gateway address IP type. + * + * @return the ID for the new APN + */ + TUint32 CreateAccessPointL( const TDesC16& aApName, + const TDesC16& aProxyServerAddr, + const TUint32 aProxyPortNumber, + const RPacketContext::TProtocolType& aIPvType ); + + /** + * Select an Access Point by the given gateway address. Create one if + * there is not a corresponding AP. + * + * @return IAP id from GCF connection method. + */ + TUint32 GetAccessPointByGatewayAddressL(); + + /** + * Get an Access Point by default. + * + * @return IAP id from default connection method. + */ + TUint32 GetAccessPointByDefaultL(); + + /** + * Get default Url by access point id. + * + * @param aApId Input IAP id by given connection method. + * @return Default Url by given connection method. + */ + HBufC* GetDefaultUrlByAccessPointLC( TUint32 aApId ); + + /** + * A gateway address is required to be a IP address in + * connection method, so it is necessary to check + * the validity of the gateway address to avioding leave in + * APE. + * + * @param aAddress A gateway address. + * @return EIPv4 if the gateway address is a valid IPv4 address. + * EIPv6 if the gateway address is a valid IPv6 address. + * otherwise return 0 to indicate a invalid IP address. + */ + TInt ValidateGatewayAddress( const TDesC16& aAddress ); + + /** + * Check the validity of a IPv4 address. + * + * @param aAddress A IPv4 address. + * @return ETrue if the address is a valid IPv4 address. + */ + TBool ValidateIPv4Address( const TDesC16& aAddress ); + + /** + * Check the validity of a IPv6 address. + * + * @param aAddress A IPv6 address. + * @return ETrue if the address is a valid IPv6 address. + */ + TBool ValidateIPv6Address( const TDesC16& aAddress ); + + /** + * Convert a descriptor to a integer. + * + * @param aAddress A descriptor. + * @return Integer value. + */ + TInt ConvertDesToInt( const TDesC16& aValue ); + + /** + * Check the validity of a descriptor in hex. + * + * @param aAddress A descriptor. + * @return ETrue if each character in the descriptor is a valid + * hexadecimal. + */ + TBool ValidateHexadecimal( const TDesC16& aHex ); + + /** + * Separate the port number from a address if it is existing. For example, + * 210.13.246.172:8080. + * + * @param aAddress A address. + * @param aPureAddr The pure address without any additional info. + * @param aPortNumber The port number. + * @return None. + */ + void SeparatePortNumberFromAddress( const TDesC16& aAddress, + TDes16& aPureAddr, TUint32& aPortNumber ); + + /** + * Fulfill connecion method with default params. + * + * @param aCmManager Connection method manager. + * @param aCm Output reference to RCmConnectionMethod. + * @return None + */ + void FulfillConnnectionMethodL( RCmManager& aCmManager, + RCmConnectionMethod& aCm ); + + /** + * Check the validity of offered bearer type + * + * @param aCm reference to RCmConnectionMethod. + * @param aIsValid Output KErrNone if connection method is valid. + * @return None + */ + void ValidateBearerTypeL( RCmConnectionMethod& aCm, TInt& aIsValid ); + + /** + * Get default connection method. + * + * @param aCmManager Input Connection method manager. + * @param aDefCm Output reference to RCmConnectionMethod. + * @param aIsValid Output KErrNone if found + * @return None + */ + void GetDefConnMethodL( RCmManager& aCmManager, + RCmConnectionMethod& aDefCm, + TInt& aIsValid ); + +private: // data + + /** + * LaunchBrowser command data. + */ + RSat::TLaunchBrowserV2 iLaunchBrowserData; + + /** + * LaunchBrowser command package. + */ + RSat::TLaunchBrowserV2Pckg iLaunchBrowserPckg; + + /** + * Response from client + */ + RSat::TLaunchBrowserRspV2 iLaunchBrowserRsp; + + /** + * Response package. + */ + RSat::TLaunchBrowserRspV2Pckg iLaunchBrowserRspPckg; + + /** + * Query command data + */ + TSatQueryV1 iQueryData; + + /** + * Query package + */ + TSatQueryV1Pckg iQueryPckg; + + /** + * Query response + */ + TSatQueryRspV1 iQueryRsp; + + /** + * Query response package + */ + TSatQueryRspV1Pckg iQueryRspPckg; + + /** + * Window server session + */ + RWsSession iWsSession; + + /** + * Application UID of the Browser. + */ + TUid iUidWmlBrowser; + + /** + * Indicates does this command need UI session ot not + */ + TBool iNeedUiSession; + + /** + * Blocker for After + */ + CActiveSchedulerWait iAfterWait; + + /** + * Timer used in After + */ + CPeriodic* iAfterTimer; + + /** + * Flag to signal that command has icon data + * To be removed when icons are allowed in this command + */ + TBool iIconCommand; + }; + +#endif // CLAUNCHBROWSERHANDLER_H +