--- a/devicediagnosticsfw/diagpluginbase/src/diagsuitepluginbase.cpp Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,460 +0,0 @@
-/*
-* 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: Class definition of CDiagSuitePluginBase
-*
-*/
-
-
-// CLASS DECLARATION
-#include <DiagSuitePluginBase.h> // CDiagSuitePluginBase
-
-// SYSTEM INCLUDE FILES
-#include <ecom.h> // REComSession
-#include <coemain.h> // CCoeEnv::Static()
-#include <StringLoader.h> // StringLoader
-#include <DiagPluginConstructionParam.h> // CDiagPluginConstructionParam
-#include <DiagSuiteExecParam.h> // TDiagSuiteExecParam
-#include <DiagSuiteObserver.h> // MDiagSuiteObserver
-#include <DiagFrameworkDebug.h> // LOGSTRING
-#include <DiagPluginWaitingDialogWrapper.h> // CDiagPluginWaitingDialogWrapper
-
-// USER INCLUDE FILES
-#include "diagpluginbaseutils.h" // DiagPluginBaseUtils
-#include "diagpluginbase.pan" // Panic Codes
-
-
-// LOCAL TYPES
-/**
-* Internal private data class for CDiagSuitePluginBase
-*/
-class CDiagSuitePluginBase::TPrivateData
- {
-public:
- /**
- * C++ Constructor
- * All variables must be initialized here since this does not derive from
- * CBase.
- * Note that this class does not manage memory. Instead it is left to
- * CDiagSuitePluginBase class to allocate/free memory.
- */
- TPrivateData( CCoeEnv& aCoeEnv )
- : iDtorIdKey( TUid::Null() ),
- iWaitingDialogWrapper( NULL ),
- iChildren(),
- iPluginResourceLoader( aCoeEnv )
- {
- }
-
-public: // data
- /**
- * ECOM Destructor key.
- */
- TUid iDtorIdKey;
-
- /**
- * Wrapper class for displaying waiting dialogs.
- * Ownership: Shared. Normally, dialog will dismiss itself. However,
- * if plug-in is being deleted, it can be deleted by the plug-in as well.
- */
- CDiagPluginWaitingDialogWrapper* iWaitingDialogWrapper;
-
- /**
- * Array of children.
- */
- RPointerArray<MDiagPlugin> iChildren;
-
- /**
- * Resource loader for derived class resource.
- */
- RConeResourceLoader iPluginResourceLoader;
- };
-
-
-// ======== LOCAL FUNCTIONS ========
-// ---------------------------------------------------------------------------
-// Compares two plug-ins by order number.
-// ---------------------------------------------------------------------------
-//
-static TInt ComparePluginByOrder( const MDiagPlugin& aFirst,
- const MDiagPlugin& aSecond )
- {
- return aFirst.Order() - aSecond.Order();
- }
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CDiagSuitePluginBase::CDiagSuitePluginBase
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CDiagSuitePluginBase::CDiagSuitePluginBase(
- CDiagPluginConstructionParam* aParam )
- : CActive( EPriorityStandard ),
- iConstructionParam( aParam ),
- iCoeEnv( *CCoeEnv::Static() )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CDiagSuitePluginBase::BaseConstructL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::BaseConstructL( const TDesC& aResourceFileName )
- {
- iData = new ( ELeave ) TPrivateData( CoeEnv() );
-
- DiagPluginBaseUtils::OpenResourceFileL(
- aResourceFileName, iData->iPluginResourceLoader, CoeEnv().FsSession() );
- }
-
-
-// ---------------------------------------------------------------------------
-// CDiagSuitePluginBase::~CDiagSuitePluginBase
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CDiagSuitePluginBase::~CDiagSuitePluginBase()
- {
- if ( iData )
- {
- DismissWaitingDialog();
- iData->iChildren.Close();
-
- if ( iData->iDtorIdKey != TUid::Null() )
- {
- REComSession::DestroyedImplementation( iData->iDtorIdKey );
- }
-
- iData->iPluginResourceLoader.Close();
-
- delete iData;
- iData = NULL;
- }
-
- delete iConstructionParam;
- iConstructionParam = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// from MDiagPlugin
-// CDiagSuitePluginBase::ServiceLogicalName
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CDiagSuitePluginBase::ServiceLogicalName() const
- {
- return iConstructionParam->ServiceProvided();
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::GetLogicalDependenciesL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::GetLogicalDependenciesL(
- CPtrCArray& aArray ) const
- {
- aArray.CopyL( iConstructionParam->ServicesRequired() );
- }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::Type
-// ---------------------------------------------------------------------------
-//
-EXPORT_C MDiagPlugin::TPluginType CDiagSuitePluginBase::Type() const
- {
- return ETypeSuitePlugin;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::CreateIconL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CGulIcon* CDiagSuitePluginBase::CreateIconL() const
- {
- // Currently, GetTitleL() is not supported.
- User::Leave( KErrNotSupported );
- return NULL;
- }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagTestPlugin
-// CDiagSuitePluginBase::IsSupported
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CDiagSuitePluginBase::IsSupported() const
- {
- return ETrue;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::ParentUid
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUid CDiagSuitePluginBase::ParentUid() const
- {
- return iConstructionParam->ParentUid();
- }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::SetDtorIdKey
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::SetDtorIdKey( TUid aDtorIdKey )
- {
- LOGSTRING2( "CDiagTestPluginBase::SetDtorIdKey: New=0x%x",
- aDtorIdKey.iUid )
-
- __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) );
-
- iData->iDtorIdKey = aDtorIdKey;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::GetTitleL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CDiagSuitePluginBase::GetTitleL() const
- {
- // Currently, GetTitleL() is not supported.
- User::Leave( KErrNotSupported );
- return NULL;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::GetDescriptionL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CDiagSuitePluginBase::GetDescriptionL() const
- {
- // Currently, GetDescriptionL() is not supported.
- User::Leave( KErrNotSupported );
- return NULL;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::CustomOperationL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TAny* CDiagSuitePluginBase::CustomOperationL( TUid /*aUid*/,
- TAny* /*aParam*/ )
- {
- LOGSTRING( "CDiagTestPluginBase::CustomOperationL: KErrNotSupported" )
- User::Leave( KErrNotSupported );
- return NULL;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::GetCustomL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TAny* CDiagSuitePluginBase::GetCustomL( TUid /* aUid */,
- TAny* /*aParam*/ )
- {
- LOGSTRING( "CDiagTestPluginBase::CustomOperationL: KErrNotSupported" )
- User::Leave( KErrNotSupported );
- return NULL;
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagSuitePluginBase::Order
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint CDiagSuitePluginBase::Order() const
- {
- return iConstructionParam->Order();
- }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::GetChildrenL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::GetChildrenL( RPointerArray<MDiagPlugin>& aChildren,
- TSortOrder aOrder ) const
- {
- __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) );
- __ASSERT_ALWAYS( (aOrder == ENotSorted || aOrder == ESortByPosition),
- Panic( EDiagPluginBasePanicBadArgument ) );
-
- TInt count = iData->iChildren.Count();
- for ( TInt i = 0; i < count; i++ )
- {
- aChildren.AppendL( iData->iChildren[i] );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::AddChildL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::AddChildL( MDiagPlugin* aChild )
- {
- __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) );
-
- TLinearOrder<MDiagPlugin> order( *ComparePluginByOrder );
- User::LeaveIfError( iData->iChildren.InsertInOrderAllowRepeats( aChild, order ) );
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagTestPlugin
-// CDiagSuitePluginBase::TestSessionBeginL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::TestSessionBeginL(
- MDiagEngineCommon& /* aEngine */,
- TBool /* aSkipDependencyCheck */,
- TAny* /* aCustomParams */ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagTestPlugin
-// CDiagSuitePluginBase::TestSessionEndL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::TestSessionEndL(
- MDiagEngineCommon& /* aEngine */,
- TBool /* aSkipDependencyCheck */,
- TAny* /* aCustomParams */ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::PrepareExecutionL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::PrepareChildrenExecutionL(
- TDiagSuiteExecParam* aParam,
- TBool /* aSkipDependencyCheck */,
- TBool /* aDependencyExecution */)
- {
- CleanupStack::PushL( aParam );
- aParam->Observer().ContinueExecutionL( *this );
- CleanupStack::PopAndDestroy ( aParam );
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::FinalizeExecutionL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::FinalizeChildrenExecutionL(
- TDiagSuiteExecParam* aParam,
- TBool /* aSkipDependencyCheck */,
- TBool /* aDependencyExecution */ )
- {
- CleanupStack::PushL( aParam );
- aParam->Observer().ContinueExecutionL( *this );
- CleanupStack::PopAndDestroy ( aParam );
- }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::GetChildrenUidsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::GetChildrenUidsL( RArray<TUid>& aUids,
- TSortOrder aOrder ) const
- {
- __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) );
- __ASSERT_ALWAYS( (aOrder == ENotSorted || aOrder == ESortByPosition),
- Panic( EDiagPluginBasePanicBadArgument ) );
-
- TInt count = iData->iChildren.Count();
- for ( TInt i = 0; i < count; i++ )
- {
- aUids.AppendL( iData->iChildren[i]->Uid() );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From MDiagSuitePlugin
-// CDiagSuitePluginBase::ExecutionStopL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CDiagSuitePluginBase::ExecutionStopL( TStopReason /* aReason */ )
- {
- // Currently, GetTitleL() is not supported.
- User::Leave( KErrNotSupported );
- }
-
-
-// ---------------------------------------------------------------------------
-// CDiagSuitePluginBase::RunWaitingDialogLD
-// ---------------------------------------------------------------------------
-EXPORT_C TBool CDiagSuitePluginBase::RunWaitingDialogL( CAknDialog* aDialog,
- TInt& aDialogResponse )
- {
- __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) );
-
- // this function can display only one dialog at a time.
- __ASSERT_ALWAYS( iData->iWaitingDialogWrapper == NULL,
- Panic( EDiagPluginBasePanicDialogAlreadyUp ) );
-
- iData->iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( aDialog );
-
- TBool isUserResonse = iData->iWaitingDialogWrapper->RunLD( aDialogResponse );
-
- if ( isUserResonse )
- {
- // local variable can be accessed only if it was returned due to
- // user response.
- iData->iWaitingDialogWrapper = NULL;
- }
-
- return isUserResonse;
- }
-
-// ---------------------------------------------------------------------------
-// CDiagSuitePluginBase::DismissWaitingDialog
-// ---------------------------------------------------------------------------
-EXPORT_C void CDiagSuitePluginBase::DismissWaitingDialog()
- {
- __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) );
-
- if ( iData->iWaitingDialogWrapper )
- {
- LOGSTRING( "CDiagTestPluginBase::DismissWaitingDialog() Dialog dismissed." )
- delete iData->iWaitingDialogWrapper;
- iData->iWaitingDialogWrapper = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CDiagSuitePluginBase::CoeEnv
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCoeEnv& CDiagSuitePluginBase::CoeEnv()
- {
- return iCoeEnv;
- }
-
-// End of File
-