devicediagnostics/diagplugins/diagbrowserplugin/src/diagbrowserpluginmodel.cpp
changeset 18 7d11f9a6646f
parent 4 75a71fdb4c92
child 21 c707676bf59f
--- a/devicediagnostics/diagplugins/diagbrowserplugin/src/diagbrowserpluginmodel.cpp	Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,846 +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:  This is the model class for the Browser Test Plugin, which
-*                tests HTTP functionality.
-*
-*/
-
-
-// System Include Files
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <logfilterandeventconstants.hrh>
-#endif
-#include <centralrepository.h>              // CRepository
-#include <cmmanager.h>                      // RCmManager
-#include <cmdestination.h>                  // RCmDestination
-#include <cmconnectionmethod.h>             // RCmConnectionMethod
-#include <cmpluginpacketdatadef.h>          // Connection Manager Defs
-#include <cmconnectionmethoddef.h>          // Connection Manager Defs
-#include <es_sock.h>                        // RSocketServ, RConnection
-#include <stringpool.h>                     // RStringPool
-#include <httpstringconstants.h>            // HTTP Strings
-#include <http/rhttpconnectioninfo.h>       // RHTTPConnectionInfo
-#include <http/rhttpsession.h>              // RHTTPSession
-#include <http/rhttptransaction.h>          // RHTTPTransaction
-#include <http/thttpevent.h>                // THTTPEvent
-#include <uri8.h>                           // TUriParser8
-#include <logwrap.h>                        // CLogEvent
-#include <logcli.h>                         // CLogFilter
-#include <DiagResultsDatabaseItem.h>        // CDiagResultsDatabaseItem
-#include <DiagFrameworkDebug.h>             // Debugging Macros
-#include <diaglogeventeraser.h>             // CDiagLogEventEraser
-#include <commdb.h>
-// User Include Files
-#include "diagbrowserpluginmodel.h"         // CDiagBrowserPluginModel
-#include "diagbrowserpluginmodelobserver.h" // CDiagBrowserPluginModelObserver
-#include "diagbrowserpluginprivatecrkeys.h" // CenRep keys
-#include "diagbrowserplugin.pan"            // Panic
-#include "diagbrowserplugin.hrh"
-
-#include <devdiagbrowserpluginrsc.rsg>  
-// Local Constants
-const TInt KConnArrayGranularity =          ( 3 );
-const TInt KMicroSecondsInMilliseconds =    ( 1000 );
-const TInt KHttpResponseCodeOk =            ( 200 );
-#ifdef __WINS__
-const TInt KEmulatorDynamicIpApId =         ( 11 );
-#endif // __WINS__
-
-
-// ============================ GLOBAL FUNCTIONS =============================
-
-// ---------------------------------------------------------------------------
-// Static two-phase constructor.
-// ---------------------------------------------------------------------------
-//
-CDiagBrowserPluginModel* CDiagBrowserPluginModel::NewL(
-    MDiagBrowserPluginModelObserver& aObserver )
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::NewL()" )
-
-    CDiagBrowserPluginModel* self = new( ELeave ) CDiagBrowserPluginModel(
-        aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CDiagBrowserPluginModel::~CDiagBrowserPluginModel()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::~CDiagBrowserPluginModel()" )
-
-    // Stop any outstanding requests.
-    Cancel();
-
-    // Free memory reserved by the model.
-    delete iTimer;
-    delete iLogEraser;
-	delete iWaitDialog;
-    // Close any open sessions.
-    iHttpTransaction.Close();
-    iHttpSession.Close();
-    iConnection.Close();
-    iSocketServ.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// Initiates the browser test.
-// ---------------------------------------------------------------------------
-//
-void CDiagBrowserPluginModel::RunBrowserTestL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::RunBrowserTestL()" )
-
-    // Mark the start time for removing the logs.
-    iStartTime.UniversalTime();
-    iRetryCount = 0;
-    iTimerCalled = 0;
-    // Read Central Repository keys.
-    if ( !ReadCenRepKeysL() )
-        {
-        HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-        return;
-        }
-
-    /* Read APN data.
-    GetConnectionMethodL( iPrimaryConnection );
-    GetConnectionMethodL( iSecondaryConnection );*/
-    //iTimeoutValue = 30000;
-    // Open the connection.
-    if ( !OpenAndStartConnectionL() )
-        {
-        HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-        return;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the total number of execution steps.
-// ---------------------------------------------------------------------------
-TUint CDiagBrowserPluginModel::TotalSteps()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::TotalSteps()" )
-    return EDiagBrowserStateMax;
-    }
-
-// ---------------------------------------------------------------------------
-// The default constructor.
-// ---------------------------------------------------------------------------
-//
-CDiagBrowserPluginModel::CDiagBrowserPluginModel(
-    MDiagBrowserPluginModelObserver& aObserver )
-:   CActive( EPriorityStandard ),
-    iObserver( aObserver )
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::CDiagBrowserPluginModel()" )
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// The second phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CDiagBrowserPluginModel::ConstructL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::ConstructL()" )
-
-    // Open the connection to the Socket Server.
-    User::LeaveIfError( iSocketServ.Connect() );
-    User::LeaveIfError( iConnection.Open( iSocketServ ) );
-    idialogOn = EFalse; idialogDismissed = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// Reads and stores the browser test's Central Repository Keys.
-// ---------------------------------------------------------------------------
-//
-TBool CDiagBrowserPluginModel::ReadCenRepKeysL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::ReadCenRepKeysL()" )
-
-    // Create a Central Repository object.
-    CRepository* repository = CRepository::NewLC(
-        KCRUidDiagBrowserTestPlugin );
-
-    // Get the data.
-   /* if ( repository->Get( KDiagBrowserApnPrimary,
-                          iPrimaryConnection.iApn ) != KErrNone ||
-         repository->Get( KDiagBrowserApnSecondary,
-                          iSecondaryConnection.iApn ) != KErrNone ||
-         repository->Get( KDiagBrowserProxyAddress,
-                          iProxyAddress ) != KErrNone ||
-         repository->Get( KDiagBrowserProxyPort,
-                          iProxyPort ) != KErrNone ||*/
-         if( repository->Get( KDiagBrowserResponseTimeout,
-                          iTimeoutValue ) != KErrNone ||
-        repository->Get( KDiagBrowserUri,
-                          iUri ) != KErrNone )
-        {
-        LOGSTRING( "CDiagBrowserPluginModel::ReadCenRepKeysL() - CenRep read"
-                   L" failed." )
-
-        CleanupStack::PopAndDestroy( repository );
-        return EFalse;
-        }
-
-   /* LOGSTRING3(
-        "CDiagBrowserPluginModel::ReadCenRepKeysL() - Primary APN '%S'"
-        L" Secondary APN '%S'",
-        &iPrimaryConnection.iApn,
-        &iSecondaryConnection.iApn )
-
-    LOGSTRING3(
-        "CDiagBrowserPluginModel::ReadCenRepKeysL() - Proxy '%S:%d'",
-        &iProxyAddress,
-        iProxyPort )*/
-
-    LOGSTRING3(
-        "CDiagBrowserPluginModel::ReadCenRepKeysL() - Timeout %d, Uri '%S'",
-        iTimeoutValue,
-        &iUri )
-
-    CleanupStack::PopAndDestroy( repository );
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// Finds the connection method that corresponds to the data supplied in the
-// argument.
-// ---------------------------------------------------------------------------
-//
-void CDiagBrowserPluginModel::GetConnectionMethodL(
-    TBrowserConnectionMethodData& aData )
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::GetConnectionMethodL()" )
-
-    // Look for matching connection methods.
-    RCmManager connManager;
-    connManager.OpenLC();
-
-    // Get a list of all the destinations.
-    RArray< TUint32 > connArray = RArray< TUint32 >( KConnArrayGranularity );
-    CleanupClosePushL( connArray );
-    connManager.AllDestinationsL( connArray );
-    
-    // Look through all the destinations' connection methods and see if any of
-    // them match the CenRep data.
-    for ( TInt i = 0; i < connArray.Count() && !aData.iIsValid ; i++ )
-        {
-        RCmDestination destination = connManager.DestinationL(
-            connArray[ i ] );
-        CleanupClosePushL( destination );
-
-        LOGSTRING4( "CDiagBrowserPluginModel::GetConnectionMethodL() -"
-                    L" Destination %d / %d, %d method(s)",
-                    i + 1,
-                    connArray.Count(),
-                    destination.ConnectionMethodCount() )
-
-        // Don't use any hidden destinations, because they are not visible to
-        // the user.
-        if ( destination.IsHidden() )
-            {
-            LOGSTRING( "CDiagBrowserPluginModel::GetConnectionMethodL() -"
-                       L" Skipping hidden destination" )
-            CleanupStack::PopAndDestroy(); // destination
-            continue;
-            }
-        for ( TInt j = 0;
-              j < destination.ConnectionMethodCount() && !aData.iIsValid;
-              j++ )
-            {
-            RCmConnectionMethod method = destination.ConnectionMethodL( j );
-            CleanupClosePushL( method );
-            
-            // This call is trapped because not all connection methods support
-            // the data we're querying, and the leave should not be propagated
-            // up because that would not be a reason for test failure.
-            TRAP_IGNORE( CheckConnectionMatchL( method, aData ) )
-            CleanupStack::PopAndDestroy(); // method
-            }
-
-        CleanupStack::PopAndDestroy(); // destination
-        }
-
-    // Get a list of all the uncategorized connection methods.
-    connArray.Reset();
-    connManager.ConnectionMethodL( connArray );
-    LOGSTRING2( "CDiagBrowserPluginModel::GetConnectionMethodL() -"
-                L" Checking %d uncategorized method(s)",
-                connArray.Count() )
-
-    // Look through all the uncategorized connection methods and see if any
-    // of them match match the CenRep data.
-    for ( TInt i = 0; i < connArray.Count() && !aData.iIsValid; i++ )
-        {
-        RCmConnectionMethod method = connManager.ConnectionMethodL(
-            connArray[ i ] );
-        CleanupClosePushL( method );
-
-        // This call is trapped because not all connection methods support
-        // the data we're querying, and the leave should not be propagated
-        // up because that would not be a reason for test failure.
-        TRAP_IGNORE( CheckConnectionMatchL( method, aData ) )
-        CleanupStack::PopAndDestroy(); // method
-        }
-
-    CleanupStack::PopAndDestroy(); // connArray
-    CleanupStack::PopAndDestroy(); // connManager
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if the connection method matches the data supplied in the argument.
-// ---------------------------------------------------------------------------
-//
-void CDiagBrowserPluginModel::CheckConnectionMatchL(
-    const RCmConnectionMethod& aMethod,
-    TBrowserConnectionMethodData& aData ) const
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::CheckConnectionMatchL()" )
-
-    HBufC* name = aMethod.GetStringAttributeL(
-        CMManager::ECmName );
-    CleanupStack::PushL( name );
-
-#ifdef __WINS__
-    HBufC* apn = HBufC::NewL( 1 );
-#else
-    HBufC* apn = aMethod.GetStringAttributeL(
-        CMManager::EPacketDataAPName );
-#endif // __WINS__
-    CleanupStack::PushL( apn );
-
-    TInt type = aMethod.GetIntAttributeL(
-        CMManager::ECmBearerType );
-
-    TBool hidden = aMethod.GetBoolAttributeL(
-        CMManager::ECmHidden );
-
-    HBufC* proxy = aMethod.GetStringAttributeL(
-        CMManager::ECmProxyServerName );
-    CleanupStack::PushL( proxy );
-
-    TInt port = aMethod.GetIntAttributeL(
-        CMManager::ECmProxyPortNumber );
-
-    TUint apId = aMethod.GetIntAttributeL(
-        CMManager::ECmIapId );
-
-    LOGSTRING4(
-        "CDiagBrowserPluginModel::CheckConnectionMatchL() - CM"
-        L" Name '%S', Type '0x%08x', Hidden '%d'", name, type, hidden )
-
-    LOGSTRING5( "CDiagBrowserPluginModel::CheckConnectionMatchL() - CM"
-                L" APN '%S', Proxy '%S:%d', Id %d", apn, proxy, port, apId )
-
-#ifdef __WINS__
-    if ( apId == KEmulatorDynamicIpApId )
-#else
-    if ( apn->Compare( aData.iApn ) == 0 &&
-         proxy->Compare( iProxyAddress ) == 0 &&
-         port == iProxyPort &&
-         type == KUidPacketDataBearerType &&
-         !hidden )
-#endif // __WINS__
-        {
-        aData.iApId = apId;
-        aData.iMethodName.Copy( *name );
-        aData.iIsValid = ETrue;
-
-        LOGSTRING2( "CDiagBrowserPluginModel::CheckConnectionMatchL() - Found"
-                    L" AP with id %d.", aData.iApId )
-        }
-
-    CleanupStack::PopAndDestroy( proxy );
-    CleanupStack::PopAndDestroy( apn );
-    CleanupStack::PopAndDestroy( name );
-    }
-
-// ---------------------------------------------------------------------------
-// Starts or resets the connection timeout timer.
-// ---------------------------------------------------------------------------
-//
-void CDiagBrowserPluginModel::StartConnectionTimerL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::StartConnectionTimerL()" )
-
-    // Create the timer, or cancel an existing timer.
-    if ( !iTimer )
-        {
-        iTimer = CPeriodic::NewL( EPriorityHigh );
-        }
-    else
-        {
-        iTimer->Cancel();
-        }
-
-    // Start the timer.
-    iTimer->Start(
-        TTimeIntervalMicroSeconds32(
-            iTimeoutValue * KMicroSecondsInMilliseconds ),
-        TTimeIntervalMicroSeconds32( 0 ),
-        TCallBack( TimerExpired, this ) );
-    iTimerCalled++;
-    }
-
-// ---------------------------------------------------------------------------
-// Updates the plugin's state and reports progress to the observer.
-// ---------------------------------------------------------------------------
-//
-void CDiagBrowserPluginModel::SetStateL( TDiagBrowserState aTargetState )
-    {
-    LOGSTRING3( "CDiagBrowserPluginModel::SetStateL( %d ) - iState %d",
-                aTargetState,
-                iState )
-
-    // Check for bad state transitions.
-    switch ( aTargetState )
-        {
-        case EDiagBrowserStateConnectingBearer:
-            __ASSERT_ALWAYS( iState == EDiagBrowserStateInitial,
-                             Panic( EDiagBrowserPluginBadState ) );
-            break;
-
-        case EDiagBrowserStateConnectingServer:
-            __ASSERT_ALWAYS( iState == EDiagBrowserStateConnectingBearer,
-                             Panic( EDiagBrowserPluginBadState ) );
-            break;
-
-        case EDiagBrowserStateErasingLog:
-            __ASSERT_ALWAYS( iState != EDiagBrowserStateInitial,
-                             Panic( EDiagBrowserPluginBadState ) );
-            break;
-
-        default:
-            Panic( EDiagBrowserPluginBadState );
-        }
-
-    // Update the state.  Send progress to the observer.
-    iState = aTargetState;
-    iObserver.TestProgressL( aTargetState );
-    }
-
-// ---------------------------------------------------------------------------
-// Callback function for handling timer events.
-// ---------------------------------------------------------------------------
-//
-TInt CDiagBrowserPluginModel::TimerExpired( TAny* aPtr )
-    {
-    LOGSTRING2( "CDiagBrowserPluginModel::TimerExpired( 0x%x )", aPtr )
-
-    __ASSERT_ALWAYS( aPtr, Panic( EDiagBrowserPluginInternal ) );
-
-    CDiagBrowserPluginModel* myThis =
-        static_cast< CDiagBrowserPluginModel* >( aPtr );
-
-    // Stop the timer to prevent further undesired callbacks.
-    myThis->iTimer->Cancel();
-    myThis->TimerCleanUp();
-    // Try to continue test execution by retrying the secondary connection.
-    //TRAPD( error, myThis->RetryConnectionL() );
-    return KErrNone;
-    }
-void CDiagBrowserPluginModel::TimerCleanUp()
-{
-	    
-	if (iState == EDiagBrowserStateConnectingBearer)
-	{
-		if(iTimerCalled<=1)
-		StartConnectionTimerL();
-		else
-		iConnection.Stop( RConnection::EStopAuthoritative );
-	}
-	else if (iState == EDiagBrowserStateConnectingServer)
-	iHttpTransaction.Cancel();
-	
-}
-// ---------------------------------------------------------------------------
-// Opens the network connection.  This may be called multiple times if a
-// retry is necessary.
-// ---------------------------------------------------------------------------
-TBool CDiagBrowserPluginModel::OpenAndStartConnectionL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::OpenAndStartConnectionL()" )
-
-    // Check if there is a valid connection to use.
-    /*if ( !iPrimaryConnection.iIsValid && !iSecondaryConnection.iIsValid )
-        {
-        LOGSTRING( "CDiagBrowserPluginModel::OpenAndStartConnectionL() - No"
-                   L" valid connections." )
-        return EFalse;
-        }
-        */
-
-    // Reset the connection.
-    iHttpTransaction.Close();
-    iHttpSession.Close();
-    iConnection.Stop();
-    iState = EDiagBrowserStateInitial;
-	
-    iConnectionPrefs.SetDialogPreference(ECommDbDialogPrefPrompt);//ECommDbDialogPrefDoNotPrompt ECommDbDialogPrefPrompt
-    LOGSTRING("SetDialogPreference( ECommDbDialogPrefPrompt)");
-    iConnectionPrefs.SetDirection( ECommDbConnectionDirectionOutgoing );
-    //iConnectionPrefs.SetIapId( iapID );
-    //iConnectionPrefs.SetBearerSet(ECommDbBearerGPRS);
-    iConnection.Start( iConnectionPrefs, iStatus );
-    SetActive();
-	ShowProgressNoteL();
-    // Start the timer and set the state to notify progress.
-    StartConnectionTimerL();
-    SetStateL( EDiagBrowserStateConnectingBearer );
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// Handles ending the test by deleting the logs, if necessary, and informing
-// the observer.
-// ---------------------------------------------------------------------------
-void CDiagBrowserPluginModel::HandleTestEndL(
-    CDiagResultsDatabaseItem::TResult aResult )
-    {
-    LOGSTRING2( "CDiagBrowserPluginModel::HandleTestEndL( %d )", aResult )
-
-    // Store the result, to return when log deletion completes.
-    iResult = aResult;
-
-    // Delete the logs, if necessary.
-    if ( iState != EDiagBrowserStateInitial )
-        {
-        if ( !iLogEraser )
-            {
-            iLogEraser = CDiagLogEventEraser::NewL( *this );
-            }
-
-        // Set the filter for log erasing.
-        TUid eventType;
-        TTime now;
-        eventType.iUid = KLogPacketDataEventType;
-        now.UniversalTime();
-
-        CLogFilter& filter = iLogEraser->Filter();
-        filter.SetEventType( eventType );
-        filter.SetStartTime( iStartTime );
-        filter.SetEndTime( now );
-
-        // Erase the logs from the test, asynchronously.
-        SetStateL( EDiagBrowserStateErasingLog );
-        iLogEraser->StartAsyncEraseLogsL();
-        }
-    else
-        {
-        iObserver.TestEndL( iResult );
-        }
-	
-        
-    // clear the dialogue only if dialog is running.    
-    if(idialogOn)    
-    iWaitDialog->ProcessFinishedL();
-    }
-// ----------------------------------------------------------------------------
-// CDiagDataNetworkTestPDPEngine::ShowVibrationNoteL
-//
-// Progress Note
-// ----------------------------------------------------------------------------
-
-void CDiagBrowserPluginModel::ShowProgressNoteL()
-    {
-    if ( iWaitDialog )
-        {
-        delete iWaitDialog;
-        iWaitDialog = NULL;
-        }
-    
-                        
-    // WAIT NOTE DIALOG
-   iWaitDialog = new (ELeave) CAknWaitDialog(
-								(REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), 
-								ETrue);
-    
-	iWaitDialog->PrepareLC(R_BROWSER_PLUGIN_WAIT_NOTE);
-	iWaitDialog->SetCallback(this);
-	iWaitDialog->RunLD();
-	idialogOn = ETrue;
-	LOGSTRING("CDiagBrowserPluginModel::ShowProgressNoteL()");
-
-    }
-
-//*********************************************************
-// CallBack from AKnWaitDialog when Cancel is pressed
-//*********************************************************
-
-void CDiagBrowserPluginModel::DialogDismissedL( TInt aButtonId )
-	{
-		 LOGSTRING2("CDiagBrowserPluginModel::DialogDismissedL() = %d",aButtonId);
-		 
-		 if (aButtonId == EBrowserTestCancel && idialogOn) 
-		 {
-		 // cancel the tests based on which point the dialog is dismissed
-		 LOGSTRING2("CDiagBrowserPluginModel::DialogDismissed @ iState= %d",iState);
-		 if (iState == EDiagBrowserStateConnectingBearer)
-	     iConnection.Stop( RConnection::EStopAuthoritative );
-		 else if (iState == EDiagBrowserStateConnectingServer)
-		 iHttpTransaction.Cancel();
-	     iWaitDialog = NULL;
-	     idialogOn = EFalse;
-	     idialogDismissed = ETrue;      
-		 }
-	}    
-// ---------------------------------------------------------------------------
-// Attempts to continue test execution by retrying with the secondary
-// connection.
-// ---------------------------------------------------------------------------
-void CDiagBrowserPluginModel::RetryConnectionL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::RetryConnectionL()" );
-    
-    if (iRetryCount < 1 && !idialogDismissed)
-    {
-           if ( OpenAndStartConnectionL() )
-           {
-           iRetryCount++;
-           return;
-           }         
-    }
-    HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-    }
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Active object run handler.
-// ---------------------------------------------------------------------------
-void CDiagBrowserPluginModel::RunL()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::RunL()" )
-
-    __ASSERT_ALWAYS( iState == EDiagBrowserStateConnectingBearer,
-                     Panic( EDiagBrowserPluginBadState ) );
-
-    // Stop the timer.
-    if ( iTimer )
-        {
-        iTimer->Cancel();
-        }
-
-	if (iStatus == KErrConnectionTerminated )
-	{
-		HandleTestEndL( CDiagResultsDatabaseItem::ESkipped );
-		return;
-	}
-    // Check if the connection succeeded.
-    if ( iStatus != KErrNone )
-        {
-        LOGSTRING2(
-            "CDiagBrowserPluginModel::RunL() - connection failed. Error %d",
-            iStatus.Int() )
-        LOGSTRING( "retry if possible()" );
-        // Retry, if possible.
-        //RetryConnectionL();
-        HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-        return;
-        }
-
-    // Open the HTTP Session.
-    iHttpSession.OpenL();
-
-    // Associate the HTTP session with the open connection.
-    RStringPool pool = iHttpSession.StringPool();
-    RHTTPConnectionInfo connInfo = iHttpSession.ConnectionInfo();
-    connInfo.SetPropertyL( pool.StringF( HTTP::EHttpSocketServ,
-                                         RHTTPSession::GetTable() ),
-                           THTTPHdrVal( iSocketServ.Handle() ) );
-    TInt connectionPtr = reinterpret_cast< TInt >( &iConnection );
-    connInfo.SetPropertyL( pool.StringF( HTTP::EHttpSocketConnection,
-                                         RHTTPSession::GetTable() ),
-                           THTTPHdrVal( connectionPtr ) );
-
-    // Copy the URI to an 8-bit descriptor.  Directly getting an 8-bit
-    // descriptor from Central Repository does not seem to work properly.
-    TBuf8< KMaxStringLength > uri8;
-    uri8.Copy( iUri );
-
-    TUriParser8 uriParser;
-    if ( uriParser.Parse( uri8 ) != KErrNone )
-        {
-        LOGSTRING2(
-            "CDiagBrowserPluginModel::RunL() - parsing the uri '%S' failed.",
-            &iUri )
-        HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-        return;
-        }
-
-    // Create an HTTP transaction, setting the model as the callback object.
-    iHttpTransaction = iHttpSession.OpenTransactionL( uriParser, *this );
-    iHttpTransaction.SubmitL();
-    LOGSTRING2( "CDiagBrowserPluginModel::RunL() - HTTP transaction submitted"
-                L" for '%S'",
-                &iUri )
-
-    // Start the timer and set the state to notify progress.
-    StartConnectionTimerL();
-    SetStateL( EDiagBrowserStateConnectingServer );
-    }
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Handles leaves in the active object's RunL function.
-// ---------------------------------------------------------------------------
-TInt CDiagBrowserPluginModel::RunError( TInt aError )
-    {
-    LOGSTRING2( "CDiagBrowserPluginModel::RunError( %d )", aError )
-
-    // Try to continue test execution by retrying the secondary connection.
-    //TRAPD( error, RetryConnectionL() );
-    //return error;
-    HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Active object cancel.
-// ---------------------------------------------------------------------------
-void CDiagBrowserPluginModel::DoCancel()
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::DoCancel()" )
-
-    // Does not have an asynchronous cancel, but this functions as Cancel.
-    iConnection.Stop( RConnection::EStopAuthoritative );
-    }
-
-// ---------------------------------------------------------------------------
-// From class MHTTPTransactionCallback.
-// Called when an event occurs on an HTTP transaction.
-// ---------------------------------------------------------------------------
-void CDiagBrowserPluginModel::MHFRunL( RHTTPTransaction aTransaction,
-                                  const THTTPEvent& aEvent )
-    {
-    LOGSTRING2( "CDiagBrowserPluginModel::MHFRunL() - aEvent.iStatus %d",
-                aEvent.iStatus )
-
-    __ASSERT_ALWAYS( iState == EDiagBrowserStateConnectingServer,
-                     Panic( EDiagBrowserPluginBadState ) );
-    __ASSERT_ALWAYS( aTransaction.Id() == iHttpTransaction.Id(),
-                     Panic( EDiagBrowserPluginTransaction ) );
-
-    // Failed status.
-    if ( aEvent == THTTPEvent::EFailed )
-        {
-        LOGSTRING( "CDiagBrowserPluginModel::MHFRunL() - Response failed." )
-        //RetryConnectionL();
-        //return;
-        HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-        }
-
-    // Skip non-success / non-failure statuses.
-    if ( aEvent != THTTPEvent::EGotResponseHeaders &&
-         aEvent != THTTPEvent::EGotResponseBodyData &&
-         aEvent != THTTPEvent::EResponseComplete &&
-         aEvent != THTTPEvent::ESucceeded &&
-         aEvent != THTTPEvent::ERequestComplete )
-        {
-        LOGSTRING( "CDiagBrowserPluginModel::MHFRunL() - Unused event." )
-        return;
-        }
-
-    // Stop the request, so we don't get any further callbacks.
-    iHttpTransaction.Cancel();
-
-    // Get the HTTP response code and check it.
-    RHTTPResponse response = aTransaction.Response();
-    if ( response.StatusCode() != KHttpResponseCodeOk )
-        {
-        LOGSTRING2( "CDiagBrowserPluginModel::MHFRunL() - status code is %d",
-                    response.StatusCode() )
-        HandleTestEndL( CDiagResultsDatabaseItem::EFailed );
-        }
-    else
-        {
-        LOGSTRING(
-            "CDiagBrowserPluginModel::MHFRunL() - connection succeeded" )
-        HandleTestEndL( CDiagResultsDatabaseItem::ESuccess );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class MHTTPTransactionCallback.
-// Called when an error occurs on an HTTP transaction.
-// ---------------------------------------------------------------------------
-TInt CDiagBrowserPluginModel::MHFRunError( TInt aError,
-                                      RHTTPTransaction aTransaction,
-                                      const THTTPEvent& /* aEvent */ )
-    {
-    LOGSTRING2( "CDiagBrowserPluginModel::MHFRunError( %d )", aError )
-
-    __ASSERT_ALWAYS( iState == EDiagBrowserStateConnectingServer,
-                     Panic( EDiagBrowserPluginBadState ) );
-    __ASSERT_ALWAYS( aTransaction.Id() == iHttpTransaction.Id(),
-                     Panic( EDiagBrowserPluginTransaction ) );
-
-    // Try to continue test execution by retrying the secondary connection.
-    TRAPD( error, RetryConnectionL() );
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDiagLogEventEraserObserver.
-// This function checks if the log event needs to be deleted.
-// ---------------------------------------------------------------------------
-TBool CDiagBrowserPluginModel::IsEventToBeDeleted( const CLogEvent& aEvent )
-    {
-    LOGSTRING( "CDiagBrowserPluginModel::IsEventToBeDeleted()" )
-
-    if ( ( iPrimaryConnection.iUsed && aEvent.RemoteParty().Compare(
-            iPrimaryConnection.iMethodName ) == 0 ) ||
-         ( iSecondaryConnection.iUsed && aEvent.RemoteParty().Compare(
-            iSecondaryConnection.iMethodName ) == 0 ) )
-        {
-        // The name matches, so delete the log entry.
-        return ETrue;
-        }
-
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDiagLogEventEraserObserver.
-// This function notifies that the erase operation is complete.
-// ---------------------------------------------------------------------------
-void CDiagBrowserPluginModel::CompleteEventEraseL( TInt aError )
-    {
-    LOGSTRING2(
-        "CDiagBrowserPluginModel::CompleteEventEraseL( %d )", aError )
-
-    __ASSERT_ALWAYS( iState == EDiagBrowserStateErasingLog,
-                     Panic( EDiagBrowserPluginBadState ) );
-
-    // The error code is ignored, because it's not part of the criteria for
-    // the test to pass.  We are deleting logs asynchronously, so the browser
-    // portion of the test has already stored a result in iResult.
-    iState = EDiagBrowserStateInitial;
-    
-    // dialog dismissed with Cancel
-    
-    if (idialogDismissed)
-    iResult = CDiagResultsDatabaseItem::ESkipped;
-    
-    LOGSTRING2( "CDiagBrowserPluginModel::dialogDismissed = %d)", idialogDismissed)
-    iObserver.TestEndL( iResult );
-    }
-
-// End of File