devicediagnostics/diagplugins/diagbrowserplugin/src/diagbrowserplugin.cpp
changeset 0 3ce708148e4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devicediagnostics/diagplugins/diagbrowserplugin/src/diagbrowserplugin.cpp	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,314 @@
+/*
+* 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:  This is the implementation of the Browser Test Plugin, which
+*                tests HTTP functionality.
+*
+*/
+
+
+// System Include Files
+#include <StringLoader.h>                   // StringLoader
+#include <DiagFrameworkDebug.h>             // Debugging Macros
+#include <devdiagbrowserpluginrsc.rsg>         // Resource Definitions
+
+// User Include Files
+#include "diagbrowserplugin.h"              // CDiagBrowserPlugin
+#include "diagbrowserpluginmodel.h"         // CDiagBrowserPluginModel
+#include "diagbrowserplugin.hrh"            // UID definition
+#include "diagbrowserplugin.pan"            // Panic
+
+#include <AknDialog.h> // ADO & Platformization Changes
+#include <aknmessagequerydialog.h>  // ADO & Platformization Changes
+#include <DiagCommonDialog.h>          // for EDiagCommonDialogConfirmCancelAll
+
+// ADO & Platformization Changes
+#include <DiagFrameworkDebug.h>                     // debug macros
+#include <DiagTestExecParam.h>                      // TDiagTestExecParam
+#include <DiagEngineCommon.h>                       // MDiagEngineCommon
+
+// Local Constants
+_LIT( KDiagBrowserPluginResourceFileName, "z:devdiagbrowserpluginrsc.rsc" );
+const TUid KDiagBrowserPluginUid = { _IMPLEMENTATION_UID };
+
+
+// ============================ GLOBAL FUNCTIONS =============================
+
+// ---------------------------------------------------------------------------
+// Static two-phase constructor.
+// ---------------------------------------------------------------------------
+//
+MDiagPlugin* CDiagBrowserPlugin::NewL( TAny* aInitParams )
+    {
+    LOGSTRING2( "CDiagBrowserPlugin::NewL( 0x%x )", aInitParams )
+
+    __ASSERT_ALWAYS( aInitParams,
+                     Panic( EDiagBrowserPluginConstruction ) );
+
+    // Construct the plugin.  The base class will take ownership of the
+    // initialization parameters.
+    CDiagPluginConstructionParam* param =
+            static_cast< CDiagPluginConstructionParam* >( aInitParams );
+
+    CleanupStack::PushL( param );
+    CDiagBrowserPlugin* self = new( ELeave ) CDiagBrowserPlugin( param );
+    CleanupStack::Pop( param );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CDiagBrowserPlugin::~CDiagBrowserPlugin()
+    {
+    LOGSTRING( "CDiagBrowserPlugin::~CDiagBrowserPlugin()" )
+    delete iModel;
+    }
+
+// ---------------------------------------------------------------------------
+// The default constructor.
+// ---------------------------------------------------------------------------
+//
+CDiagBrowserPlugin::CDiagBrowserPlugin( CDiagPluginConstructionParam* aParam )
+:   CDiagTestPluginBase( aParam )
+    {
+    LOGSTRING2( "CDiagBrowserPlugin::CDiagBrowserPlugin( 0x%x )", aParam )
+
+    }
+
+// ---------------------------------------------------------------------------
+// The second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CDiagBrowserPlugin::ConstructL()
+    {
+    LOGSTRING( "CDiagBrowserPlugin::ConstructL()" )
+    BaseConstructL( KDiagBrowserPluginResourceFileName );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Returns whether the plugin should be displayed or not.
+// ---------------------------------------------------------------------------
+TBool CDiagBrowserPlugin::IsVisible() const
+    {
+    LOGSTRING( "CDiagBrowserPlugin::IsVisible()" )
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Returns the plugin's level of interactivity.
+// ---------------------------------------------------------------------------
+MDiagTestPlugin::TRunMode CDiagBrowserPlugin::RunMode() const
+    {
+    LOGSTRING( "CDiagBrowserPlugin::RunMode()" )
+    return EAutomatic;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Returns the total number of execution steps for the plugin.
+// ---------------------------------------------------------------------------
+TUint CDiagBrowserPlugin::TotalSteps() const
+    {
+    LOGSTRING( "CDiagBrowserPlugin::TotalSteps()" )
+    return CDiagBrowserPluginModel::TotalSteps();
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Returns the plugin name.
+// ---------------------------------------------------------------------------
+HBufC* CDiagBrowserPlugin::GetPluginNameL( TNameLayoutType aLayoutType ) const
+    {
+    LOGSTRING2( "CDiagBrowserPlugin::GetPluginNameL( %d )", aLayoutType )
+
+    switch ( aLayoutType )
+        {
+        case ENameLayoutHeadingPane:
+            return StringLoader::LoadL( R_DIAG_BROWSER_HEADING_PANE );
+
+        case ENameLayoutPopupInfoPane:
+            return StringLoader::LoadL( R_DIAG_BROWSER_POPUP_INFO_PANE );
+
+        case ENameLayoutTitlePane:
+            return StringLoader::LoadL( R_DIAG_BROWSER_TITLE_PANE );
+
+        case ENameLayoutListSingleGraphic:
+            return StringLoader::LoadL( R_DIAG_BROWSER_LIST_SINGLE_GRAPHIC );
+
+        case ENameLayoutListSingle:
+            return StringLoader::LoadL( R_DIAG_BROWSER_LIST_SINGLE );
+
+        default:
+            __ASSERT_DEBUG( EFalse, Panic( EDiagBrowserPluginName ) );
+            return StringLoader::LoadL( R_DIAG_BROWSER_LIST_SINGLE );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Returns the plugin's UID.
+// ---------------------------------------------------------------------------
+TUid CDiagBrowserPlugin::Uid() const
+    {
+    LOGSTRING( "CDiagBrowserPlugin::Uid()" )
+    return KDiagBrowserPluginUid;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Called from the base class to begin test execution.
+// ---------------------------------------------------------------------------
+void CDiagBrowserPlugin::DoRunTestL()
+    {
+    LOGSTRING( "CDiagBrowserPlugin::DoRunTestL()" )
+
+    __ASSERT_ALWAYS( !iModel, Panic( EDiagBrowserPluginBadState ) );
+   // ADO & Platformization Changes
+    TInt aButtonId;
+    
+    ShowMessageQueryL(R_DIAG_MESSAGEQUERY_TITLE_BROWSERTEST,aButtonId);
+      
+    if(aButtonId == EBrowserTestCancel)
+    	{
+    	CompleteTestL( CDiagResultsDatabaseItem::ESkipped );
+        return;
+    	}
+    
+    if(aButtonId == EBrowserTestSkip)
+    	{
+		TInt confirmResult = 0;
+            
+        CAknDialog* dlg = ExecutionParam().Engine().
+        CreateCommonDialogLC( EDiagCommonDialogConfirmSkipAll, NULL );
+    
+        if ( !RunWaitingDialogL( dlg, confirmResult ) )
+            {
+            return;
+            }
+        
+        if (confirmResult)
+            {
+            return;
+            }
+    	}
+    // Changes Ends
+
+    iModel = CDiagBrowserPluginModel::NewL( *this );
+    iModel->RunBrowserTestL();
+    }
+
+// ---------------------------------------------------------------------------
+// From class CDiagTestPluginBase.
+// Called when the plugin's execution is stopped.
+// ---------------------------------------------------------------------------
+//
+void CDiagBrowserPlugin::DoStopAndCleanupL()
+    {
+    LOGSTRING( "CDiagBrowserPlugin::DoStopAndCleanupL()" )
+
+    delete iModel;
+    iModel = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Active object run handler.
+// ---------------------------------------------------------------------------
+void CDiagBrowserPlugin::RunL()
+    {
+    LOGSTRING( "CDiagBrowserPlugin::RunL()" )
+
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Active object cancel.
+// ---------------------------------------------------------------------------
+void CDiagBrowserPlugin::DoCancel()
+    {
+    LOGSTRING( "CDiagBrowserPlugin::DoCancel()" )
+
+    }
+
+// ---------------------------------------------------------------------------
+// From class MDiagBrowserPluginModelObserver.
+// This function notifies that test execution has completed.
+// ---------------------------------------------------------------------------
+void CDiagBrowserPlugin::TestEndL( CDiagResultsDatabaseItem::TResult aResult )
+    {
+    LOGSTRING2( "CDiagBrowserPlugin::TestEndL( %d )", aResult )
+    CompleteTestL( aResult );
+
+    delete iModel;
+    iModel = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// From class MDiagBrowserPluginModelObserver.
+// This function notifies of test progress.
+// ---------------------------------------------------------------------------
+void CDiagBrowserPlugin::TestProgressL( TUint aCurrentStep )
+    {
+    LOGSTRING2( "CDiagBrowserPlugin::TestProgressL( %d )", aCurrentStep )
+    ReportTestProgressL( aCurrentStep );
+    }
+    
+    // ADO & Platformization Changes
+TBool CDiagBrowserPlugin::ShowMessageQueryL( TInt aResourceId, TInt &aButtonId  )
+    {
+    LOGSTRING( "CDiagAudioPlugin::ShowMessageQueryL IN" )
+    CAknMessageQueryDialog* dlg    = NULL;
+    TBool                   result = EFalse;
+
+    // Create CAknMessageQueryDialog instance
+    dlg = new ( ELeave ) CAknMessageQueryDialog();
+
+    dlg->PrepareLC( aResourceId );
+     
+    CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
+
+        switch ( aResourceId )
+            {
+            case R_DIAG_MESSAGEQUERY_TITLE_BROWSERTEST: 
+         	   {
+            	if ( SinglePluginExecution() )
+        			{
+        			cba.SetCommandSetL( R_CBA_BROWSER_SINGLE_EXECUTION );		
+        			}
+        	   else 
+        	   		{	
+                	cba.SetCommandSetL( R_CBA_BROWSER_GROUP_EXECUTION );		
+                	}
+        		}
+                break;
+
+            default:
+                break;
+            }
+        	
+    result = RunWaitingDialogL( dlg, aButtonId );
+
+    LOGSTRING3( "CDiagAudioPlugin::ShowMessageQueryL() OUT aButtonId=%d result=%d", aButtonId, result );
+    return result;
+    }
+
+// End of File