appfw/apparchitecture/apserv/apsserv.h
changeset 0 2e3d3ce01487
child 29 6a787171e1de
equal deleted inserted replaced
-1:000000000000 0:2e3d3ce01487
       
     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 "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // apsserv.h
       
    15 //
       
    16 
       
    17 #ifndef __APSSERV_H__
       
    18 #define __APSSERV_H__
       
    19 
       
    20 #include "../aplist/aplapplist.h" 	// class MApaAppListObserver
       
    21 #include <e32base.h>
       
    22 #include <f32file.h>
       
    23 #include <apmfndr.h>
       
    24 #include <aprulebased.h>
       
    25 #include <w32std.h>
       
    26 #include <apgaplst.h>
       
    27 
       
    28 class CCustomAppInfoData;
       
    29 class CApaAppList;
       
    30 class CApaFsMonitor;
       
    31 class CTypeStoreManager;
       
    32 class CApaEComMonitor;
       
    33 class CBaBackupSessionWrapper;
       
    34 class CApsRecognitionCache;
       
    35 class CRecognitionResult;
       
    36 class CApaAppInstallationMonitor;
       
    37 
       
    38 
       
    39 /**
       
    40 KAppListServerName 
       
    41 @internalAll
       
    42 */
       
    43 _LIT(KAppListServerName,"!AppListServer");
       
    44 
       
    45 
       
    46 /**
       
    47 CApaAppArcServer 
       
    48 @internalAll 
       
    49 */
       
    50 class CApaAppArcServer : public CPolicyServer, public MApaAppListObserver, public MBackupOperationObserver
       
    51 	{
       
    52 public:
       
    53 	IMPORT_C static CApaAppArcServer* NewL();
       
    54 	IMPORT_C static CApaAppArcServer* Self();
       
    55 
       
    56 	inline RWsSession& WsSession();
       
    57 	
       
    58 	inline const CApaFsMonitor& AppFsMonitor() const {return *iAppFsMonitor;}
       
    59 	
       
    60 	inline CApaScanningRuleBasedPlugIns* RuleBasedPlugIns();
       
    61 		
       
    62 	// Application list stuff
       
    63 	inline CApaAppList& AppList();
       
    64 	void UpdateApps();
       
    65 	IMPORT_C TCallBack RescanCallBack();
       
    66 	
       
    67 	void RegisterNonNativeApplicationTypeL(TUid aApplicationType, const TDesC& aNativeExecutable);
       
    68 	void DeregisterNonNativeApplicationTypeL(TUid aApplicationType);
       
    69 	TPtrC NativeExecutableL(TUid aNonNativeApplicationType) const;
       
    70 	
       
    71 	IMPORT_C void HandleInstallationStartEvent();
       
    72 	IMPORT_C void HandleInstallationEndEventL();
       
    73 	
       
    74 	// MIME-type recognition
       
    75 	inline CApaDataRecognizer* MimeTypeRecognizer();
       
    76 	CRecognitionResult* RecognizeDataAsCRecognitionResultL(RFile& aFile, TInt aPreferredBufSize);
       
    77 	TDataRecognitionResult RecognizeDataL(const TDesC& aName, const TDesC8& aBuffer);
       
    78 	TDataRecognitionResult RecognizeDataL(RFile& aFile, TInt aPreferredBufSize);
       
    79 	TBool RecognizeDataL(const TDesC& aName, const TDesC8& aBuffer, const TDataType& aDataType);
       
    80 	TBool RecognizeDataL(RFile& aFile, TInt aPreferredBufSize, const TDataType& aDataType);
       
    81 	TInt DataRecognizerPreferredBufSizeL();
       
    82 	void DataTypeL(CDataTypeArray& aArray);
       
    83 	
       
    84 	void GetAppForMimeType(const TDataType& aDataType, TUid& aUid) const;
       
    85 	void GetAppForMimeType(const TDataType& aDataType, TUid aServiceUid, TUid& aUid) const;
       
    86 	TBool InsertAndStoreIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
       
    87 	void InsertAndStoreDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TUid aServiceUid);
       
    88 	void DeleteAndStoreDataMappingL(const TDataType& aDataType, TUid aServiceUid);
       
    89 
       
    90 	
       
    91     
       
    92 #ifdef _DEBUG
       
    93 	void FlushRecognitionCache();
       
    94 	void SetLoadRecognizersOnDemandL(TBool aLoadRecognizersOnDemand);
       
    95 	void PerformOutstandingRecognizerUnloading();
       
    96 #endif //_DEBUG
       
    97 public: // from MApaAppListObserver
       
    98 	void NotifyUpdate(TInt aReason);
       
    99 	void InitialListPopulationComplete();
       
   100 public: // from MBackupOperationObserver
       
   101 	void HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes);
       
   102 public:	//
       
   103 	IMPORT_C ~CApaAppArcServer();
       
   104 	TBool NonNativeRecovery() const;
       
   105 	void SetNonNativeRecovery(TBool aValue);
       
   106 	TBool LoadMbmIconsOnDemand() const;
       
   107 	void UpdateAppsByForceRegistration();
       
   108 private:
       
   109 	CApaAppArcServer(TInt aPriority);
       
   110 	void ConstructL();
       
   111 	virtual CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
       
   112 	static TInt AppFsNotifyWithForcedRegistrationsResetCallBack(TAny* aPtr);
       
   113 	static TInt AppFsNotifyCallBack(TAny* aPtr);
       
   114 	static TInt PlugInNotifyCallBack(TAny* aPtr);
       
   115 	static TInt TypeStoreNotifyCallback(TAny* aPtr);
       
   116 	void UpdatePlugIns();
       
   117 	void UpdateTypeStore();
       
   118 	void DoUpdateTypeStoreL();
       
   119 	void InternalizeNonNativeApplicationTypeArrayL();
       
   120 	void ExternalizeNonNativeApplicationTypeArrayL(TInt aIndexToIgnore=-1) const;
       
   121 	static void DeleteLastNonNativeApplicationType(TAny* aThis);
       
   122 	void NotifyScanComplete();
       
   123 	void DeleteCustomAppInfoList();
       
   124 	void LoadRecognizersLC();
       
   125 	void LoadRecognizersL();
       
   126 	static void RecognizerCleanup(TAny* aAny);
       
   127 	TInt UnloadRecognizers();
       
   128 	static TInt DoUnloadRecognizersCallback(TAny* aAny);
       
   129 	TInt DoUnloadRecognizers();
       
   130 	TBool CachedRecognitionResult(const TParseBase& aParser, TDataRecognitionResult& aResult) const;
       
   131 	CRecognitionResult* CachedRecognitionResult(const RFile& aFile, const TParseBase& aParser) const;
       
   132 	void CacheRecognitionResultL(const TParseBase& aParser, const TDataRecognitionResult& aResult);
       
   133 	void CacheRecognitionResultL(const RFile& aFile, const TParseBase& aParser, const TDataRecognitionResult& aResult);
       
   134 	void ConstructPathsToMonitorL();
       
   135 private:
       
   136 	enum
       
   137 		{
       
   138 		EOwnsFileRecognizer=0x01,
       
   139 		EOwnsAppList=0x02
       
   140 		};
       
   141 
       
   142 	enum TForceRegistrationStatus
       
   143 	    {
       
   144 	    EForceRegistrationNone=0x00,
       
   145 	    EForceRegistrationRequested=0x01,
       
   146 	    EForceRegistrationAppListChanged=0x02
       
   147 	    };
       
   148 	
       
   149 	struct SNonNativeApplicationType
       
   150 		{
       
   151 		TUid iTypeUid;
       
   152 		HBufC* iNativeExecutable;
       
   153 		};
       
   154 private:
       
   155 	RFs iFs;
       
   156 	TInt iRecognizerUsageCount;
       
   157 	CApaAppList* iAppList;
       
   158 	CPeriodic* iRecognizerUnloadTimer;
       
   159 	CApaScanningDataRecognizer* iMimeTypeRecognizer;
       
   160 	CApaFsMonitor* iAppFsMonitor;
       
   161 	CApaFsMonitor* iTypeStoreMonitor;
       
   162 	CTypeStoreManager* iMimeTypeToAppMappingsManager;
       
   163 	TTime iTypeStoreModified;
       
   164 	CBaBackupSessionWrapper* iBaBackupSessionWrapper;
       
   165 	CApaEComMonitor* iRecEcomMonitor;
       
   166 	CApsRecognitionCache* iRecognitionCache;
       
   167 	CApaScanningRuleBasedPlugIns* iRuleBasedPlugIns;
       
   168 	RWsSession iWsSession;
       
   169 	RArray<SNonNativeApplicationType> iNonNativeApplicationTypeArray;
       
   170 	/**
       
   171 	This is ETrue if there was a power failure during the non-native applications list
       
   172 	update. It means that there is a list fo updated apps that needs to be rolled back.
       
   173 	*/
       
   174 	TBool iNonNativeRecovery;
       
   175 
       
   176 	TBool iLoadRecognizersOnDemand;
       
   177 	CApaAppInstallationMonitor* iAppInstallationMonitor; //CApaAppInstallationMonitor monitors installation and uninstallation of applications.
       
   178 	TBool iLoadMbmIconsOnDemand;
       
   179 	RBuf iNonNativeApplicationTypeRegistry;
       
   180 	TInt iForceRegistrationStatus;
       
   181 	};
       
   182 
       
   183 
       
   184 /**
       
   185 The TApaAppViewIconSizeData class encapsulates the attributes that specify how to identify an icon for a particular
       
   186 application and view in a certain size.
       
   187 
       
   188 @internalComponent
       
   189 */
       
   190 class TApaAppViewIconSizeData
       
   191 	{
       
   192 public:
       
   193 	inline TApaAppViewIconSizeData();
       
   194 	inline TApaAppViewIconSizeData(TUid aAppUid,TUid aViewUid, const TSize& aSize);
       
   195 public:
       
   196 	TUid iAppUid;
       
   197 	TUid iViewUid;
       
   198 	TSize iSize;
       
   199 	};
       
   200 
       
   201 typedef TPckgBuf<TApaAppViewIconSizeData> TApaAppViewIconSizeDataBuf;
       
   202 
       
   203 //
       
   204 // inlines
       
   205 //
       
   206 
       
   207 inline TApaAppViewIconSizeData::TApaAppViewIconSizeData()
       
   208 	: iAppUid(KNullUid), iViewUid(KNullUid), iSize(TSize(0,0))
       
   209 	{}
       
   210 
       
   211 inline TApaAppViewIconSizeData::TApaAppViewIconSizeData(TUid aAppUid,TUid aViewUid, const TSize& aSize)
       
   212 	: iAppUid(aAppUid), iViewUid(aViewUid), iSize(aSize)
       
   213 	{}
       
   214 
       
   215 inline CApaAppList& CApaAppArcServer::AppList()
       
   216 	{ return *iAppList; }
       
   217 
       
   218 inline CApaDataRecognizer* CApaAppArcServer::MimeTypeRecognizer()
       
   219 	{ return iMimeTypeRecognizer; }
       
   220 
       
   221 inline CApaScanningRuleBasedPlugIns* CApaAppArcServer::RuleBasedPlugIns()
       
   222 	{ return iRuleBasedPlugIns; }
       
   223 
       
   224 inline RWsSession& CApaAppArcServer::WsSession()
       
   225 		{ return iWsSession; } //lint !e1536 Exposing low access member
       
   226 
       
   227 
       
   228 	
       
   229 #endif // __APSSERV_H__
       
   230 
       
   231 
       
   232