remotemgmt_plat/diagnostics_plugin_api/inc/diagtestplugin.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:27:42 +0100
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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:  Test Plugin Abstract Interface
*
*/


#ifndef DIAGTESTPLUGIN_H
#define DIAGTESTPLUGIN_H

// INCLUDES
#include    <DiagPlugin.h>              // MDiagPlugin


// FORWARD DECLARATION
class CDiagPluginExecPlan;
class MDiagTestObserver;
class MDiagEngineCommon;
class CDiagPluginPool;
class TDiagTestExecParam;
class CDiagResultsDatabaseItem;
class MDiagResultDetail;

/**
* Diagnostics test plug-in abstract interface.
*
* @since S60 v5.0
**/
class MDiagTestPlugin: public MDiagPlugin
    {
public: 

    /**
    * Run mode defines what kind of behaviour is expected from this plug-in.
    **/
    enum TRunMode
        {
        EInteractiveView,       // plugin with a view
        EInteractiveDialog,     // interactive, but with dialogs
        EAutomatic              // automatic tests
        };

    /**
    * Reason for execution stop.
    **/
    enum TStopReason
        {
        ESkip,
        ECancelAll,
        EWatchdog
        };

    /**
    * Execute a diagnostics test. This is an asynchronous method. The plug-in
    * must call MDiagTestObserver:TestExecutionCompletedL when test has finished.
    *
    * @param aExecParams   Parameters for running the test.
    * @param aSkipDependencyCheck - If ETrue, plug-in should execute even if 
    *   dependencies are not executed.
    * @param aDependencyExecution - If ETrue, this is being executed to 
    *   satisfy dependency.
    * @param aCustomParams Custom parameters for plug-ins. 
    *   These should be used if TDiagTestExecParam is not enough. 
    *   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. Ownership is not transferred since
    *   client does not always know the type of pointer.
    **/
    virtual void RunTestL( TDiagTestExecParam* aExecParam,
                           TBool aSkipDependencyCheck,
                           TBool aDependencyExecution,
                           TAny* aCustomParams ) = 0;

    /**
    * Describes the run mode of the test plug-in.
    *
    * @return Run mode.
    * @see TDiagRunMode.
    **/
    virtual TRunMode RunMode() const = 0;

    /**
    * Cancels testing. Cancellation is expected to be synchronous.
    * Test plug-in must return the result immediately, and it must not call
    * TestExecutionCompletedL(). Ownership of the CDiagResultsDatabaseItem is 
    * transferred to the caller.
    *
    * @param aReason - Reason why ExecutionStopL() is being called.
    * @return Returns result object.  Test must not call TestExecutionCompletedL.
    **/
    virtual CDiagResultsDatabaseItem* ExecutionStopL( TStopReason aReason ) = 0;

    /**
    * Suspend test.  If test cannot be suspended, it will leave with
    * KErrNotSupported.
    **/
    virtual void SuspendL() = 0;

    /**
    * Resume test. If test cannot be resumed, it will leave with 
    * KErrNotSupported.
    **/
    virtual void ResumeL() = 0;

    /**
    * Get the number of steps that is needed to execute tests. 
    * This can be used to calculate progress information. 
    *
    * @return The number of steps.
    **/
    virtual TUint TotalSteps() const = 0;

    /**
    * Create detailed information object from test result.
    * Ownership is transferred to caller.
    *
    * @param aTestResult - Base test result.
    * @return Instance of MDiagResultDetail* that can provide detailed 
    *   information about the last test.
    **/
    virtual MDiagResultDetail* CreateDetailL( 
                        const CDiagResultsDatabaseItem& aResult ) const = 0;
    };

#endif // DIAGTESTPLUGIN_H

// End of File