--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/devicediagnosticsfw/diagpluginbase/inc/diagsuitepluginbase.h Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,325 @@
+/*
+* Copyright (c) 2007 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: Diagnostics Suite Plug-in Base class
+*
+*/
+
+
+#ifndef DIAGSUITEPLUGINBASE_H
+#define DIAGSUITEPLUGINBASE_H
+
+// INCLUDES
+#include <e32cmn.h> // TUid
+#include <DiagSuitePlugin.h> // MDiagSuitePlugin
+#include <ConeResLoader.h> // RConeResourceLoader
+
+// FORWARD DECLARATIONSn
+class CDiagPluginConstructionParam;
+class CAknDialog;
+
+/**
+* Diagnostics Framework Suite Plugin Base Class
+*
+* This base class provides common implementation of Suite Plugin.
+*
+* @since S60 v5.0
+*/
+class CDiagSuitePluginBase : public CActive,
+ public MDiagSuitePlugin
+ {
+public:
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CDiagSuitePluginBase();
+
+protected: // new API for derived class.
+ /**
+ * C++ constructor
+ *
+ * @param aConstructionParam Construction parameters.
+ */
+ IMPORT_C CDiagSuitePluginBase( CDiagPluginConstructionParam* aParam );
+
+ /**
+ * Base class constructor
+ * This initializes CDiagSuitePluginBase class. Derived class must call this
+ * method in its ConstructL() method.
+ *
+ * @param aResourceFileName Drive and name of resource file in format
+ * <path>:<rsc_file_name>
+ */
+ IMPORT_C void BaseConstructL( const TDesC& aResourceFileName );
+
+ /**
+ * Run a dialog that waits for response. It is highly recommended that
+ * all plug-ins use this function to display dialogs since it can detect
+ * deletion of dialogs.
+ *
+ * The difference from normal dialog RunLD is that this function returns
+ * ETrue if dialog exited due to user response and
+ * EFalse if it was by other means, such as object deletion or
+ * by DismissWaitingDialog() method.
+ *
+ * !!!! NOTE THAT PLUG-IN MUST RETURN IMMEDIATELY WITHOUT ACCESSING !!!!
+ * !!!! LOCAL VARIABLE OR LOCAL FUNCITONS WHEN THIS FUNCTION RETURNS !!!!
+ * !!!! EFalse VALUE BECAUSE "THIS" POINTER MAY BE FREED ALREADY. !!!!
+ *
+ * The normal dialog response is returned via aDialogResponse reference.
+ * This function can only display one dialog at a time. Calling it again
+ * while it has not been returned will cause panic.
+ *
+ * @param aDialog - Pointer to dialog to run. If the dialog does not have
+ * EEikDialogFlagWait flag set, it will panic with EDiagPluginBasePanicBadArgument
+ * @param aDialogResponse - Response from the dialog.
+ * For detailed values @see avkon.hrh "CBA constants". E.g. EAknSoftkeyYes
+ * The only exception is that if cancel is pressed, it will be 0.
+ * @return ETrue if dialog is exiting due to user response.
+ * Efalse if dialog is dismissed withou user input.
+ * If EFalse is returned, plug-in MUST NOT act on the response.
+ * Also, since plug-in may have been deleted,
+ */
+ IMPORT_C TBool RunWaitingDialogL( CAknDialog* aDialog, TInt& aDialogResponse );
+
+ /**
+ * Dismiss the waiting dialog. This will cause the RunDialogLD() function to return with
+ * aIsUserResponse = Efalse. If nothing is being displayed, this function
+ * does nothing.
+ */
+ IMPORT_C void DismissWaitingDialog();
+
+ /**
+ * CCoeEnv
+ * @return Reference to CCoeEnv.
+ */
+ IMPORT_C CCoeEnv& CoeEnv();
+
+public: // from MDiagPlugin
+ /**
+ * Get the name of the service that the plug-in provides.
+ *
+ * @return The name of the service.
+ **/
+ IMPORT_C virtual const TDesC& ServiceLogicalName() const;
+
+ /**
+ * Get logical dependencies. One plug-in can have multiple dependencies
+ * to other plug-ins.
+ *
+ * @param aArray An array of logical names.
+ * @see ServiceLogicalName.
+ **/
+ IMPORT_C virtual void GetLogicalDependenciesL( CPtrCArray& aArray ) const;
+
+ /**
+ * Return the type of the plug-in.
+ *
+ * @return The type.
+ * @see TPluginType.
+ **/
+ IMPORT_C virtual TPluginType Type() const;
+
+ /**
+ * Create an icon that represents the plug-in.
+ *
+ * @return An icon.
+ **/
+ IMPORT_C virtual CGulIcon* CreateIconL() const;
+
+ /**
+ * Get the order number that this plug-in should appear in its parent list.
+ *
+ * @return TUint order number.
+ **/
+ IMPORT_C virtual TUint Order() const;
+
+ /**
+ * @see MDiagPlugin::IsSupported
+ **/
+ IMPORT_C virtual TBool IsSupported() const;
+
+ /**
+ * Get UID of the parent.
+ *
+ * @return The parent UID.
+ **/
+ IMPORT_C virtual TUid ParentUid() const;
+
+ /**
+ * @see MDiagPlugin::SetDTorIdKey()
+ */
+ IMPORT_C virtual void SetDtorIdKey( TUid aDtorIdKey );
+
+ /**
+ * Get title of the plugin. Default implementation in CDiagSuitePluginBase
+ * will leave with KErrNotSupported. If plug-in has a title, plug-ins
+ * must override this method.
+ * @see MDiagPlugin::GetTitleL()
+ */
+ IMPORT_C virtual HBufC* GetTitleL() const;
+
+ /**
+ * Get description of the plugin. Default implementation in
+ * CDiagSuitePluginBase will leave with KErrNotSupported. If plug-in
+ * has a description, plug-ins must override this method.
+ * @see MDiagPlugin::GetDescriptionL()
+ */
+ IMPORT_C virtual HBufC* GetDescriptionL() const;
+
+ /**
+ * Reserved for future use/plugin's custom functionality.
+ *
+ * @param aUid Unique identifier of the operation.
+ * @param aParam Custom parameter.
+ * @return TAny pointer. Custom data.
+ */
+ IMPORT_C virtual TAny* CustomOperationL( TUid aUid, TAny* aParam );
+
+ /**
+ * Reserved for future use/plugin's custom functionality.
+ *
+ * @param aUid Unique identifier of the property
+ * @param aParam Custom parameter.
+ * @return TAny pointer. Custom data.
+ */
+ IMPORT_C virtual TAny* GetCustomL( TUid aUid, TAny* aParam );
+
+ /**
+ * Initialization Step. This method is called before any plugin are executed.
+ * This can be used to clean up any left over data from previous execution
+ * sessions. All plug-ins in execution plan will have a chance to clean
+ * up before any plug-ins are run. This is a synchrouns method.
+ *
+ * @param aEngine - Reference to engine.
+ * @param aSkipDependencyCheck - If ETrue, plug-in will be executed
+ * even if dependencies are not executed.
+ * @param aCustomParams Custom parameters for plug-ins.
+ * It can used to pass arbitrary data from application to the plug-ins.
+ * Owership is not transferred and plug-in must not delete
+ * this parameter.
+ **/
+ IMPORT_C virtual void TestSessionBeginL( MDiagEngineCommon& aEngine,
+ TBool aSkipDependencyCheck,
+ TAny* aCustomParams );
+
+ /**
+ * Cleanup Step. This method is called after all plug-ins in the
+ * execution plan is completed to clean up any left over data from
+ * current sesison. This can be used to clean up any data that
+ * provides dependent service created for its dependencies.
+ * This is a synchrouns method.
+ *
+ * @param aEngine - Reference to engine.
+ * @param aSkipDependencyCheck - If ETrue, plug-in as executed
+ * even if dependencies are not executed.
+ * @param aCustomParams Custom parameters for plug-ins.
+ * It can used to pass arbitrary data from application to the plug-ins.
+ * Owership is not transferred and plug-in must not delete
+ * this parameter.
+ **/
+ IMPORT_C virtual void TestSessionEndL( MDiagEngineCommon& aEngine,
+ TBool aSkipDependencyCheck,
+ TAny* aCustomParams );
+
+
+public: // from MDiagSuitePlugin
+
+ /**
+ * Get children of this plug-in. The pointer array is guaranteed to
+ * be sorted defined by TSortOrder.
+ *
+ * @param aChildren Children are appended into this array.
+ * @param aOrder Sorting algorithm.
+ **/
+ IMPORT_C virtual void GetChildrenL( RPointerArray<MDiagPlugin>& aChildren,
+ TSortOrder aOrder ) const;
+
+ /**
+ * Add one child. Child can be either a test suite or a test plug-in.
+ *
+ * @param aChild - Child to be added. However, ownership is not
+ * transferred here.
+ **/
+ IMPORT_C virtual void AddChildL( MDiagPlugin* aChild );
+
+ /**
+ * Get the Uids. The uid is used for database access.
+ * Test suites return a list of their childrens' uids.
+ *
+ * @param aUids An UID array.
+ * @param aOrder Sorting algorithm.
+ **/
+ IMPORT_C virtual void GetChildrenUidsL( RArray<TUid>& aUids,
+ TSortOrder aOrder ) const;
+
+ /**
+ * Called before one of its test plug-in is executed. Note that it will
+ * not be called if two of its children plug-ins are executed in
+ * sequence.
+ *
+ * @param aSkipDependencyCheck - If ETrue dependency is disabled
+ * for this test session.
+ * @param aDependencyExecution - If ETrue, this suite is being
+ * executed to satisfy dependency.
+ **/
+ IMPORT_C virtual void PrepareChildrenExecutionL( TDiagSuiteExecParam* aParam,
+ TBool aSkipDependencyCheck,
+ TBool aDependencyExecution );
+
+ /**
+ * Called before test execution switches to another test suite.
+ *
+ * @param aExecParams Parameters for suite post execution
+ * @param aSkipDependencyCheck - If ETrue dependency is disabled
+ * for this test session.
+ * @param aDependencyExecution - If ETrue, this suite is being
+ * executed to satisfy dependency.
+ **/
+ IMPORT_C virtual void FinalizeChildrenExecutionL( TDiagSuiteExecParam* aParam,
+ TBool aSkipDependencyCheck,
+ TBool aDependencyExecution );
+
+ /**
+ * Cancels pre/post execution. Cancellation is expected to be synchronous.
+ * Suite plug-in must not call ContinueExecutionL().
+ *
+ * @param aReason - Reason why ExecutionStopL() is being called.
+ **/
+ IMPORT_C virtual void ExecutionStopL( TStopReason aReason );
+
+private: // Private Data Types
+ class TPrivateData;
+
+private: // Private data
+ /**
+ * Plug-in constructor parameter.
+ * Ownership: this
+ */
+ CDiagPluginConstructionParam* iConstructionParam;
+
+ /**
+ * CCoeEnv. This is needed for handling resources.
+ */
+ CCoeEnv& iCoeEnv;
+
+ /**
+ * Plug-in base's private data
+ */
+ TPrivateData* iData;
+ };
+
+#endif // DIAGSUITEPLUGINBASE_H
+
+// End of File
+