common/tools/ats/smoketest/localisation/apparchitecture/inc/APSSERV.H
changeset 793 0c32c669a39d
child 872 17498133d9ad
equal deleted inserted replaced
792:893b85cda81b 793:0c32c669a39d
       
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Symbian Foundation License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #if !defined(__APSSERV_H__)
       
    17 #define __APSSERV_H__
       
    18 
       
    19 #if !defined(__E32BASE_H__)
       
    20 #include <e32base.h>
       
    21 #endif
       
    22 #if !defined(__F32FILE_H__)
       
    23 #include <f32file.h>
       
    24 #endif
       
    25 #if !defined(__APMFNDR_H__)
       
    26 #include <apmfndr.h>
       
    27 #endif
       
    28 #if !defined(__APRULEBASED_H__)
       
    29 #include <aprulebased.h>
       
    30 #endif
       
    31 #if !defined(__W32STD_H__)
       
    32 #include <w32std.h>
       
    33 #endif
       
    34 
       
    35 
       
    36 #include <apgaplst.h>
       
    37 
       
    38 // classes defined
       
    39 class CApaAppListServer;
       
    40 class CCustomAppInfoData;
       
    41 //
       
    42 // classes referenced
       
    43 class CApaCommandLine;
       
    44 class CApaAppList;
       
    45 class CApaAppData;
       
    46 class CApaFileRecognizer;
       
    47 class CApaAppRegFinder;
       
    48 class CApaScanningFileRecognizer;
       
    49 class CApaFsMonitor;
       
    50 class CTypeStoreManager;
       
    51 class MApaAppStarter;
       
    52 class CApaEComMonitor;
       
    53 class CBaBackupSessionWrapper;
       
    54 class CApsRecognitionCache;
       
    55 class CRecognitionResult;
       
    56 class CApaAppUnInstallMonitor;
       
    57 class CApaIconCaptionOverrides;
       
    58 class CApaIconCaptionCenrepObserver;
       
    59 //
       
    60 
       
    61 // server name
       
    62 
       
    63 /**
       
    64 KAppListServerName 
       
    65 @internalAll
       
    66 */
       
    67 _LIT(KAppListServerName,"!AppListServer");
       
    68 
       
    69 class CApaAppListServer : public CPolicyServer, public MApaAppListObserver, public MBackupOperationObserver
       
    70 /**
       
    71 CApaAppListServer 
       
    72 @internalAll 
       
    73 */
       
    74 	{
       
    75 public:
       
    76 	inline static CApaAppListServer* NewL(MApaAppStarter& aAppStarter) {return NewL(&aAppStarter);}
       
    77 	IMPORT_C static CApaAppListServer* NewL(MApaAppStarter* aAppStarter);
       
    78 	IMPORT_C static CApaAppListServer* Self();
       
    79 	inline CApaAppList& AppList();
       
    80 	CApaFileRecognizer* FileRecognizer();
       
    81 	inline CApaDataRecognizer* DataRecognizer();
       
    82 	inline CApaCommandLine* AppCmdLine();
       
    83 	inline void SetAppCmdLine(CApaCommandLine* aAppCmdLine);
       
    84 	inline CApaScanningRuleBasedPlugIns* RuleBasedPlugIns();
       
    85 	inline RWsSession& WsSession();
       
    86 	void RegisterNonNativeApplicationTypeL(TUid aApplicationType, const TDesC& aNativeExecutable);
       
    87 	void DeregisterNonNativeApplicationTypeL(TUid aApplicationType);
       
    88 	TPtrC NativeExecutableL(TUid aNonNativeApplicationType) const;
       
    89 	inline const CApaFsMonitor& AppFsMonitor() const {return *iAppFsMonitor;}
       
    90 	void UpdateApps();
       
    91 	IMPORT_C TCallBack RescanCallBack();
       
    92 	CRecognitionResult* RecognizeDataAsCRecognitionResultL(RFile& aFile, TInt aPreferredBufSize);
       
    93 	TDataRecognitionResult RecognizeDataL(const TDesC& aName, const TDesC8& aBuffer);
       
    94 	TDataRecognitionResult RecognizeDataL(RFile& aFile, TInt aPreferredBufSize);
       
    95 	TBool RecognizeDataL(const TDesC& aName, const TDesC8& aBuffer, const TDataType& aDataType);
       
    96 	TBool RecognizeDataL(RFile& aFile, TInt aPreferredBufSize, const TDataType& aDataType);
       
    97 	TInt DataRecognizerPreferredBufSizeL();
       
    98 	void DataTypeL(CDataTypeArray& aArray);
       
    99 
       
   100 	
       
   101 	void GetAppByDataType(const TDataType& aDataType, TUid& aUid) const;
       
   102 	void GetAppByDataType(const TDataType& aDataType, TUid aServiceUid, TUid& aUid) const;
       
   103 	TBool InsertAndStoreIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
       
   104 	void InsertAndStoreDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TUid aServiceUid);
       
   105 	void DeleteAndStoreDataMappingL(const TDataType& aDataType, TUid aServiceUid);
       
   106 
       
   107     IMPORT_C void HandleStartUninstallEvent();
       
   108 	IMPORT_C void HandleEndUninstallEventL();
       
   109 #ifdef _DEBUG
       
   110 	void FlushRecognitionCache();
       
   111 	void SetLoadRecognizersOnDemandL(TBool aLoadRecognizersOnDemand);
       
   112 	void PerformOutstandingRecognizerUnloading();
       
   113 #endif //_DEBUG
       
   114 public: // from MApaAppListObserver
       
   115 	void NotifyUpdate(TInt aReason);
       
   116 	void InitialListPopulationComplete();
       
   117     // from MBackupOperationObserver
       
   118 	void HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes);
       
   119 	//
       
   120 	IMPORT_C ~CApaAppListServer();
       
   121 	TBool NonNativeRecovery() const;
       
   122 	void SetNonNativeRecovery(TBool aValue);
       
   123 	void AddCustomAppInfoInListL(CCustomAppInfoData* aCustomAppInfo);
       
   124 	TBool LoadMbmIconsOnDemand() const;
       
   125 	void UpdateAppListByShortCaptionL();
       
   126 private:
       
   127 	CApaAppListServer(TInt aPriority);
       
   128 	void ConstructL(MApaAppStarter* aAppStarter);
       
   129 	virtual CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
       
   130 	static TInt AppFsNotifyWithForcedRegistrationsResetCallBack(TAny* aPtr);
       
   131 	static TInt AppFsNotifyCallBack(TAny* aPtr);
       
   132 	static TInt PlugInNotifyCallBack(TAny* aPtr);
       
   133 	static TInt TypeStoreNotifyCallback(TAny* aPtr);
       
   134 	void UpdatePlugIns();
       
   135 	void UpdateTypeStore();
       
   136 	void DoUpdateTypeStoreL();
       
   137 	void InternalizeNonNativeApplicationTypeArrayL();
       
   138 	void ExternalizeNonNativeApplicationTypeArrayL(TInt aIndexToIgnore=-1) const;
       
   139 	static void DeleteLastNonNativeApplicationType(TAny* aThis);
       
   140 	void NotifyScanComplete();
       
   141 	void DeleteCustomAppInfoList();
       
   142 	void UpdateAppListByIconCaptionOverridesL();
       
   143 	void LoadRecognizersLC();
       
   144 	void LoadRecognizersL();
       
   145 	static void RecognizerCleanup(TAny* aAny);
       
   146 	TInt UnloadRecognizers();
       
   147 	static TInt DoUnloadRecognizersCallback(TAny* aAny);
       
   148 	TInt DoUnloadRecognizers();
       
   149 	TBool CachedRecognitionResult(const TParseBase& aParser, TDataRecognitionResult& aResult) const;
       
   150 	CRecognitionResult* CachedRecognitionResult(const RFile& aFile, const TParseBase& aParser) const;
       
   151 	void CacheRecognitionResultL(const TParseBase& aParser, const TDataRecognitionResult& aResult);
       
   152 	void CacheRecognitionResultL(const RFile& aFile, const TParseBase& aParser, const TDataRecognitionResult& aResult);
       
   153 	void ConstructPathsToMonitorL();
       
   154 private:
       
   155 	enum
       
   156 		{
       
   157 		EOwnsFileRecognizer=0x01,
       
   158 		EOwnsAppList=0x02
       
   159 		};
       
   160 	struct SNonNativeApplicationType
       
   161 		{
       
   162 		TUid iTypeUid;
       
   163 		HBufC* iNativeExecutable;
       
   164 		};
       
   165 private:
       
   166 	RFs iFs;
       
   167 	TInt iRecognizerUsageCount;
       
   168 	CApaAppList* iAppList;
       
   169 	CApaScanningFileRecognizer* iScanningFileRecognizer;
       
   170 	CPeriodic* iRecognizerUnloadTimer;
       
   171 	CApaScanningDataRecognizer* iDataRecognizer;
       
   172 	CApaFsMonitor* iAppFsMonitor;
       
   173 	CApaFsMonitor* iTypeStoreMonitor;
       
   174 	CTypeStoreManager* iTypeStoreManager;
       
   175 	TTime iTypeStoreModified;
       
   176 	CBaBackupSessionWrapper* iBaBackupSessionWrapper;
       
   177 	CApaEComMonitor* iRecEcomMonitor;
       
   178 	CApaCommandLine* iAppCmdLine;
       
   179 	CApsRecognitionCache* iRecognitionCache;
       
   180 	CApaScanningRuleBasedPlugIns* iRuleBasedPlugIns;
       
   181 	RWsSession iWsSession;
       
   182 	RArray<SNonNativeApplicationType> iNonNativeApplicationTypeArray;
       
   183 	/**
       
   184 	This is ETrue if there was a power failure during the non-native applications list
       
   185 	update. It means that there is a list fo updated apps that needs to be rolled back.
       
   186 	*/
       
   187 	TBool iNonNativeRecovery;
       
   188 	RPointerArray<CCustomAppInfoData> iCustomAppList;
       
   189 	TBool iLoadRecognizersOnDemand;
       
   190 	CApaAppUnInstallMonitor* iAppUnInstallMonitor;
       
   191 	TBool iLoadMbmIconsOnDemand;
       
   192 	RBuf iNonNativeApplicationTypeRegistry;
       
   193 	CApaIconCaptionOverrides* iIconCaptionOverrides;
       
   194 	CApaIconCaptionCenrepObserver* iIconCaptionObserver;
       
   195 	};
       
   196 
       
   197 /**
       
   198 The CCustomAppInfoData class encapsulate the attributes of customised application information
       
   199 which will be used to modify short caption dynamically.
       
   200 
       
   201 @internalComponent
       
   202 */
       
   203 class CCustomAppInfoData: public CBase
       
   204 	{
       
   205 public:
       
   206 	static CCustomAppInfoData* NewL(TUid aAppUid, TLanguage aLanguage, const TDesC& aShortCaption);
       
   207 	~CCustomAppInfoData();
       
   208 	inline TUid Uid() const;
       
   209 	inline TLanguage Language() const;
       
   210 	inline HBufC* ShortCaption() const;
       
   211 private:
       
   212 	CCustomAppInfoData(TUid aAppUid, TLanguage aLanguage);
       
   213 	void ConstructL(const TDesC& aShortCaption);
       
   214 private:
       
   215 	TUid iUid;
       
   216 	TLanguage iLanguage;
       
   217 	HBufC* iShortCaption;
       
   218 	};
       
   219 
       
   220 class TApaAppViewIconSizeData
       
   221 /**
       
   222 The TApaAppViewIconSizeData class encapsulates the attributes that specify how to identify an icon for a particular
       
   223 application and view in a certain size.
       
   224 
       
   225 @internalComponent
       
   226 */
       
   227 	{
       
   228 public:
       
   229 	inline TApaAppViewIconSizeData();
       
   230 	inline TApaAppViewIconSizeData(TUid aAppUid,TUid aViewUid, const TSize& aSize);
       
   231 public:
       
   232 	TUid iAppUid;
       
   233 	TUid iViewUid;
       
   234 	TSize iSize;
       
   235 	};
       
   236 
       
   237 typedef TPckgBuf<TApaAppViewIconSizeData> TApaAppViewIconSizeDataBuf;
       
   238 
       
   239 //
       
   240 // inlines
       
   241 //
       
   242 
       
   243 inline TApaAppViewIconSizeData::TApaAppViewIconSizeData()
       
   244 	: iAppUid(KNullUid), iViewUid(KNullUid), iSize(TSize(0,0))
       
   245 	{}
       
   246 
       
   247 inline TApaAppViewIconSizeData::TApaAppViewIconSizeData(TUid aAppUid,TUid aViewUid, const TSize& aSize)
       
   248 	: iAppUid(aAppUid), iViewUid(aViewUid), iSize(aSize)
       
   249 	{}
       
   250 
       
   251 inline CApaAppList& CApaAppListServer::AppList()
       
   252 	{ return *iAppList; }
       
   253 
       
   254 inline CApaDataRecognizer* CApaAppListServer::DataRecognizer()
       
   255 	{ return iDataRecognizer; }
       
   256 
       
   257 /**
       
   258 @internalComponent */
       
   259 inline CApaCommandLine* CApaAppListServer::AppCmdLine()
       
   260 	{ return iAppCmdLine;}
       
   261 
       
   262 /**
       
   263 @internalComponent */	
       
   264 inline void CApaAppListServer::SetAppCmdLine(CApaCommandLine* aAppCmdLine)
       
   265 	{ iAppCmdLine=aAppCmdLine; }
       
   266 
       
   267 inline CApaScanningRuleBasedPlugIns* CApaAppListServer::RuleBasedPlugIns()
       
   268 	{ return iRuleBasedPlugIns; }
       
   269 
       
   270 inline RWsSession& CApaAppListServer::WsSession()
       
   271 		{ return iWsSession; } //lint !e1536 Exposing low access member
       
   272 
       
   273 inline TUid CCustomAppInfoData::Uid() const
       
   274 	{ return iUid; }
       
   275 	
       
   276 inline TLanguage CCustomAppInfoData::Language() const
       
   277 	{ return iLanguage; }
       
   278 	
       
   279 inline HBufC* CCustomAppInfoData::ShortCaption() const
       
   280 	{ return iShortCaption; }
       
   281 	
       
   282 #endif