browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp
branchRCL_3
changeset 48 8e6fa1719340
equal deleted inserted replaced
47:6385c4c93049 48:8e6fa1719340
       
     1 /*
       
     2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Handle special load events such as network connection,
       
    15 *                deal with non-http or non-html requests
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 #include "BrowserLoadObserver.h"
       
    23 #include "ApiProvider.h"
       
    24 #include "Display.h"
       
    25 #include "BrowserContentView.h"
       
    26 #include "CommonConstants.h"
       
    27 #include "BrowserAppUi.h"
       
    28 #include "logger.h"
       
    29 #include "BrowserWindow.h"
       
    30 #include "BrowserWindowManager.h"
       
    31 #include "BrowserDialogsProviderProxy.h"
       
    32 
       
    33 #include <FeatMgr.h>
       
    34 #include <mconnection.h>
       
    35 #include <browserdialogsprovider.h>
       
    36 
       
    37 #ifdef I__LOG_EVENT_TIME
       
    38     // defines a local timer with name 'localTime'
       
    39     #define START_TIMER( localTime )  TTime localTime;  localTime.HomeTime();
       
    40     
       
    41     // count the elapsed time based on timer 'localTime'
       
    42     // and increment number of timers called ( numOfTimer )
       
    43     #define STOP_TIMER( localTime, numOfTimer ) \
       
    44         TTime locTime__a;  locTime__a.HomeTime(); \
       
    45         TInt64 updateTime = locTime__a.MicroSecondsFrom( localTime ).Int64(); \
       
    46         LOG_WRITE_FORMAT( "Update time: %d", updateTime ); \
       
    47         ++numOfTimer; \
       
    48         CBrowserLoadObserver::iTotalUpdateTime += updateTime;
       
    49 #else  // I__LOG_EVENT_TIME
       
    50     // empty macros
       
    51     #define START_TIMER( a )
       
    52     #define STOP_TIMER( a, b )
       
    53 #endif  // I__LOG_EVENT_TIME
       
    54 
       
    55 // ---------------------------------------------------------
       
    56 // CBrowserLoadObserver::NewL()
       
    57 // ---------------------------------------------------------
       
    58 //
       
    59 CBrowserLoadObserver* CBrowserLoadObserver::NewL(
       
    60         MApiProvider& aApiProvider,
       
    61         CBrowserContentView& aContentView,
       
    62         CBrowserWindow& aWindow )
       
    63     {
       
    64     CBrowserLoadObserver* self = 
       
    65         new (ELeave) CBrowserLoadObserver( aApiProvider, aContentView, aWindow );
       
    66     CleanupStack::PushL( self );
       
    67     self->ConstructL( );
       
    68     CleanupStack::Pop();    // self
       
    69     return self;
       
    70     }
       
    71 
       
    72 // ---------------------------------------------------------
       
    73 // CBrowserLoadObserver::~CBrowserLoadObserver()
       
    74 // ---------------------------------------------------------
       
    75 //
       
    76 CBrowserLoadObserver::~CBrowserLoadObserver()
       
    77     {
       
    78     	// iApiProvider, iContentView, iWindow not owned by CBRowserLoadObserver.
       
    79 		// invalidate pointer for a cleaner/clearer destruction
       
    80         iApiProvider = NULL;
       
    81         iContentView = NULL;
       
    82 		iWindow = NULL;
       
    83     }
       
    84 
       
    85 // ----------------------------------------------------------------------------
       
    86 // CBrowserLoadObserver::HandleBrowserLoadEventL()
       
    87 // ----------------------------------------------------------------------------
       
    88 //
       
    89 void CBrowserLoadObserver::HandleBrowserLoadEventL(
       
    90         TBrCtlDefs::TBrCtlLoadEvent aLoadEvent,
       
    91         TUint aSize,
       
    92         TUint16 aTransactionId)
       
    93     {
       
    94 LOG_ENTERFN("CBrowserLoadObserver::HandleBrowserLoadEventL");
       
    95 LOG_WRITE_FORMAT(" LoadEvent: %d", aLoadEvent );
       
    96 LOG_WRITE_FORMAT("      Size: %d", aSize );
       
    97 LOG_WRITE_FORMAT("      TrId: %d", aTransactionId );
       
    98 LOG_WRITE_FORMAT(" LoadState: %d", iLoadState );
       
    99 LOG_WRITE_FORMAT("  LoadType: %d", iLoadUrlType );
       
   100 	if( aLoadEvent == TBrCtlDefs::EEventNewContentDisplayed )
       
   101 		{
       
   102 		iWindow->ResetPageOverviewLocalSettingL();
       
   103 		iWindow->SetImagesLoaded(EFalse);		
       
   104         } 
       
   105 	HandleLoadEventOtherL( aLoadEvent, aSize, aTransactionId );
       
   106     }
       
   107 
       
   108 // ----------------------------------------------------------------------------
       
   109 // CBrowserLoadObserver::HandleLoadEventOtherL()
       
   110 // ----------------------------------------------------------------------------
       
   111 //
       
   112 void CBrowserLoadObserver::HandleLoadEventOtherL(
       
   113         TBrCtlDefs::TBrCtlLoadEvent aLoadEvent,
       
   114         TUint aSize,
       
   115         TUint16 aTransactionId )
       
   116     {
       
   117 #define STATECHECK( a ) { if( (iLoadState & a) == 0 ) break; }
       
   118     
       
   119     TInt err( KErrNone );
       
   120     switch( aLoadEvent )
       
   121         {
       
   122         case TBrCtlDefs::EEventLoadError:
       
   123             {
       
   124             if(LoadStatus( ELoadStatusSecurePage ))
       
   125                 {
       
   126                 ClearStatus( ELoadStatusSecurePage );
       
   127                 ClearStatus( ELoadStatusAllItemIsSecure );
       
   128                 SetStatus ( ELoadStatusSecurePageVisited );
       
   129                 UpdateSecureIndicatorL();
       
   130                 }
       
   131             ClearStatus();
       
   132             SetStatus( ELoadStatusMainError );
       
   133             break;
       
   134             }
       
   135         case TBrCtlDefs::EEventEnteringSecurePage:
       
   136             {
       
   137             SetStatus( ELoadStatusSecurePage );
       
   138             SetStatus( ELoadStatusAllItemIsSecure );
       
   139             UpdateSecureIndicatorL();
       
   140             break;
       
   141             }
       
   142         case TBrCtlDefs::EEventSomeItemsNotSecure:
       
   143             {
       
   144             ClearStatus( ELoadStatusAllItemIsSecure );
       
   145             UpdateSecureIndicatorL();
       
   146             break;
       
   147             }
       
   148         case TBrCtlDefs::EEventSecureItemInNonSecurePage:
       
   149             {
       
   150             SetStatus( ELoadStatusSecureItemNonSecurePage );
       
   151             UpdateSecureIndicatorL();
       
   152             break;
       
   153             }
       
   154         case TBrCtlDefs::EEventExitingSecurePage:
       
   155         case TBrCtlDefs::EEventSubmittingToNonSecurePage:
       
   156             {
       
   157             ClearStatus( ELoadStatusSecurePage );
       
   158             ClearStatus( ELoadStatusAllItemIsSecure );
       
   159             SetStatus ( ELoadStatusSecurePageVisited );
       
   160             UpdateSecureIndicatorL();
       
   161             break;
       
   162             }
       
   163         case TBrCtlDefs::EEventTitleAvailable:
       
   164             {
       
   165             SetStatus( ELoadStatusTitleAvailable );
       
   166             NewTitleAvailableL();
       
   167             break;
       
   168             }
       
   169         case TBrCtlDefs::EEventNewContentStart:
       
   170             {
       
   171 #ifdef I__LOG_EVENT_TIME
       
   172             iStartDownloadTime.HomeTime();
       
   173             iTotalUpdateTime = 0;
       
   174             iNumberOfUpdates = 0;
       
   175 #endif  // I__LOG_EVENT_TIME
       
   176             StateChange( ELoadStateResponseInProgress );
       
   177             iApiProvider->SetProgressShown( ETrue );
       
   178             iApiProvider->Display().StartProgressAnimationL();
       
   179             
       
   180             // in case we're in bookmarks view and a background page load is in
       
   181             // progress, don't update the softkeys
       
   182             if( iApiProvider->IsForeGround() && InBrowserContentView() )
       
   183                 {
       
   184                 if( CBrowserAppUi::Static()->ActiveView() )
       
   185                     {
       
   186                     CBrowserAppUi::Static()->ActiveView()->UpdateCbaL();
       
   187                     }
       
   188                 }
       
   189             iApiProvider->WindowMgr().NotifyObserversL( EWindowLoadStart, iWindow->WindowId() );
       
   190             break;
       
   191             }
       
   192         case TBrCtlDefs::EEventUrlLoadingStart:
       
   193             {
       
   194             STATECHECK( ELoadStateResponseInProgress )
       
   195             iApiProvider->Display().StartProgressAnimationL();
       
   196 
       
   197             // If the load is not initiated from the bookmarks view (ie. engine initiated
       
   198             // via some timer on a page like cnn.com) then don't change view to content view
       
   199             if (iBrowserInitLoad)
       
   200                 {
       
   201                 iApiProvider->SetViewToBeActivatedIfNeededL(KUidBrowserContentViewId);
       
   202                 iBrowserInitLoad = EFalse;
       
   203                 }
       
   204 
       
   205             // add transaction to ProgressBar
       
   206             iApiProvider->Display().AddTransActIdL( aTransactionId );    
       
   207             
       
   208             // Display the status pane, while loading
       
   209             if ( InBrowserContentView() && iContentView->FullScreenMode() )
       
   210                 {
       
   211                 iContentView->ShowFsStatusPane(ETrue);
       
   212                 }
       
   213             break;
       
   214             }
       
   215         // first content chunk arrived
       
   216         case TBrCtlDefs::EEventNewUrlContentArrived:
       
   217             {
       
   218             STATECHECK( ELoadStateResponseInProgress )
       
   219             SetStatus( ELoadStatusFirstChunkArrived );
       
   220             // set MaxData for this transaction
       
   221             iApiProvider->Display().AddProgressDataL(
       
   222                 aTransactionId, 0, aSize );
       
   223             break;
       
   224             }
       
   225         // additional content chunk arrived
       
   226         case TBrCtlDefs::EEventMoreUrlContentArrived:
       
   227             {
       
   228             STATECHECK( ELoadStateResponseInProgress )
       
   229             START_TIMER( t1 );
       
   230             // set RecvdData for this transaction
       
   231             iApiProvider->Display().AddProgressDataL(
       
   232                 aTransactionId, aSize, 0 );
       
   233             if( iApiProvider->IsForeGround() )
       
   234                 {
       
   235                 iApiProvider->Display().NotifyProgress();
       
   236                 }
       
   237             STOP_TIMER( t1, iNumberOfUpdates );
       
   238             break;
       
   239             }
       
   240         // content is processed, new fetch is allowed.
       
   241         // some more event may still remain
       
   242         case TBrCtlDefs::EEventContentFinished:
       
   243             {
       
   244             StateChange( ELoadStateIdle );
       
   245             if( !ContentDisplayed() )
       
   246                 {
       
   247                 SetContentDisplayed( ETrue );
       
   248                 }
       
   249 
       
   250             if( !iApiProvider->ExitInProgress() && 
       
   251                 iApiProvider->IsForeGround() )
       
   252                 {
       
   253                 iApiProvider->Display().StopProgressAnimationL();
       
   254                 }
       
   255             User::ResetInactivityTime();
       
   256             
       
   257             if( LoadUrlType() == ELoadUrlTypeEmbeddedBrowserWithUrl &&
       
   258                 !LoadStatus( ELoadStatusFirstChunkArrived ) && 
       
   259                 !iApiProvider->ExitInProgress() )
       
   260                 {
       
   261                 // Don't do anything; let the embedder close the browser
       
   262                 }
       
   263             // No content to be shown, go back to where we came from
       
   264             else if ( !iRestoreContentFlag  )
       
   265                 {
       
   266                 CBrowserAppUi::Static()->ActivateLocalViewL( 
       
   267                                             iApiProvider->LastActiveViewId() );
       
   268                 if( iApiProvider->IsForeGround() )
       
   269                     {
       
   270                     if  ( CBrowserAppUi::Static()->ActiveView() )
       
   271                         {
       
   272                         CBrowserAppUi::Static()->ActiveView()->UpdateCbaL();
       
   273                         }
       
   274                     }
       
   275                 }                        
       
   276             else
       
   277                 {
       
   278                 ContentArrivedL();
       
   279                 
       
   280                 // in case we're in bookmarks view and a background page load is in
       
   281                 // progress, don't update the softkeys
       
   282                 if( iApiProvider->IsForeGround() && InBrowserContentView() )
       
   283                     {
       
   284                     if  ( CBrowserAppUi::Static()->ActiveView() )
       
   285                         {
       
   286                         CBrowserAppUi::Static()->ActiveView()->UpdateCbaL();
       
   287                         }
       
   288                     }
       
   289                 }
       
   290 #ifdef I__LOG_EVENT_TIME
       
   291             TTime endDownloadTime;
       
   292             endDownloadTime.HomeTime();
       
   293             TInt64 dlTime = endDownloadTime.MicroSecondsFrom(iStartDownloadTime).Int64();
       
   294             LOG_WRITE_FORMAT( "Total download time: %d", dlTime );
       
   295             LOG_WRITE_FORMAT( "Total update time: %d", iTotalUpdateTime );
       
   296             LOG_WRITE_FORMAT( "Total number of updates: %d", iNumberOfUpdates );
       
   297             if( iNumberOfUpdates )
       
   298                 {
       
   299                 LOG_WRITE_FORMAT( "Average update time: %d", 
       
   300                     iTotalUpdateTime / iNumberOfUpdates );
       
   301                 }
       
   302             if( dlTime )
       
   303                 {
       
   304                 LOG_WRITE_FORMAT( "Total update time (%% of download time): %d",
       
   305                     iTotalUpdateTime / (dlTime / 100) );
       
   306                 }
       
   307 #endif  // I__LOG_EVENT_TIME
       
   308             break;
       
   309             }
       
   310         // first chunk displayed, no parameter
       
   311         case TBrCtlDefs::EEventNewContentDisplayed:
       
   312             {
       
   313             iApiProvider->WindowMgr().SetContentExist( ETrue );
       
   314             SetStatus( ELoadStatusFirstChunkDisplayed );
       
   315             SetRestoreContentFlag( ETrue );
       
   316             ContentArrivedL();
       
   317             if( !ContentDisplayed() )
       
   318                 {
       
   319                 SetContentDisplayed( ETrue );
       
   320                 }
       
   321             break;
       
   322             }
       
   323         // additional chunk displayed, no parameter
       
   324         case TBrCtlDefs::EEventMoreContentDisplayed:
       
   325             {
       
   326             SetStatus( ELoadStatusContentDisplayed );
       
   327             SetRestoreContentFlag( ETrue );
       
   328             ContentArrivedL();
       
   329             break;
       
   330             }
       
   331         // last chunk arrived
       
   332         case TBrCtlDefs::EEventUrlLoadingFinished:
       
   333             {
       
   334             iApiProvider->Display().TransActIdComplete( aTransactionId );
       
   335 			SetRestoreContentFlag( ETrue );
       
   336             ContentArrivedL();
       
   337 			TRAP( err, iApiProvider->LogAccessToRecentUrlL( iWindow->BrCtlInterface() ) );            
       
   338             break;
       
   339             }
       
   340         case TBrCtlDefs::EEventLoadFinished:
       
   341             {
       
   342             if( !iApiProvider->ExitInProgress() &&
       
   343                 iApiProvider->IsForeGround() )
       
   344                 {
       
   345                 iApiProvider->Display().StopProgressAnimationL();
       
   346 
       
   347                 // Turn off status pane, SK, and Cba 
       
   348                 // If in content view, set to fullscreen after download complete
       
   349                 if ( InBrowserContentView() && iContentView->FullScreenMode() )
       
   350                     {
       
   351                     iContentView->ShowFsStatusPane(EFalse);
       
   352                     }
       
   353                 }
       
   354             iApiProvider->WindowMgr().NotifyObserversL( EWindowLoadStop, iWindow->WindowId() );
       
   355             break;
       
   356             }
       
   357         case TBrCtlDefs::EEventAuthenticationFailed:
       
   358             {
       
   359             // don't add url to Adaptive Bookmarks
       
   360             ClearStatus( ELoadStatusFirstChunkArrived );
       
   361             break;
       
   362             }
       
   363         // Large file upload events
       
   364 		case TBrCtlDefs::EEventUploadStart:
       
   365 			{
       
   366 			iMaxUploadContent = aSize;
       
   367             iWindow->DialogsProviderProxy().UploadProgressNoteL( 
       
   368                 iMaxUploadContent, 0, EFalse, this );
       
   369 			break;
       
   370 			}
       
   371 		case TBrCtlDefs::EEventUploadIncrement:
       
   372 			{
       
   373             iWindow->DialogsProviderProxy().UploadProgressNoteL( 
       
   374                 iMaxUploadContent, aSize, EFalse, this );
       
   375 			break;
       
   376          	}
       
   377 		case TBrCtlDefs::EEventUploadFinished:
       
   378 			{
       
   379             iWindow->DialogsProviderProxy().UploadProgressNoteL( 
       
   380                 iMaxUploadContent, aSize, ETrue, this ); 
       
   381 			break;         
       
   382 			}
       
   383         default:
       
   384             break;
       
   385         }
       
   386 #undef STATECHECK
       
   387     }
       
   388 
       
   389 // ----------------------------------------------------------------------------
       
   390 // CBrowserLoadObserver::CBrowserLoadObserver()
       
   391 // ----------------------------------------------------------------------------
       
   392 //
       
   393 CBrowserLoadObserver::CBrowserLoadObserver(
       
   394         MApiProvider& aApiProvider,
       
   395         CBrowserContentView& aContentView,
       
   396         CBrowserWindow& aWindow ) :
       
   397     iApiProvider( &aApiProvider ),
       
   398     iContentView( &aContentView ),
       
   399     iWindow( &aWindow ),
       
   400     iLoadState( ELoadStateIdle ),
       
   401     iLoadUrlType( ELoadUrlTypeOther ),
       
   402     iStatus( 0 )
       
   403     {
       
   404     }
       
   405 
       
   406 // ----------------------------------------------------------------------------
       
   407 // CBrowserLoadObserver::ConstructL()
       
   408 // ----------------------------------------------------------------------------
       
   409 //
       
   410 void CBrowserLoadObserver::ConstructL()
       
   411     {
       
   412     }
       
   413 
       
   414 // ----------------------------------------------------------------------------
       
   415 // CBrowserLoadObserver::DoStartLoad()
       
   416 // ----------------------------------------------------------------------------
       
   417 //
       
   418 void CBrowserLoadObserver::DoStartLoad(
       
   419         TBrowserLoadUrlType aLoadUrlType )
       
   420     {
       
   421 /*
       
   422 LOG_WRITE("-------------------")
       
   423 LOG_WRITE_FORMAT(" UrlType: %d ", aLoadUrlType )
       
   424 */
       
   425     // __ASSERT_DEBUG instead of condition?
       
   426     if( iLoadState == ELoadStateIdle )
       
   427         {                
       
   428         if (LoadStatus(ELoadStatusSecurePageVisited))
       
   429             {
       
   430             ClearStatus();  
       
   431             SetStatus(ELoadStatusSecurePageVisited);  
       
   432             }
       
   433         else 
       
   434             {
       
   435             ClearStatus();            
       
   436             }        
       
   437         
       
   438         iLoadUrlType = aLoadUrlType;
       
   439         iRestoreContentFlag = EFalse;
       
   440         }
       
   441         
       
   442     iBrowserInitLoad = ETrue;
       
   443     }
       
   444 
       
   445 // ----------------------------------------------------------------------------
       
   446 // CBrowserLoadObserver::DoEndLoad()
       
   447 // ----------------------------------------------------------------------------
       
   448 //
       
   449 void CBrowserLoadObserver::DoEndLoad(
       
   450         TBool aIsUserInitiated )
       
   451     {
       
   452 // LOG_WRITE( "Cancelling.")
       
   453     if( aIsUserInitiated)
       
   454         {
       
   455         // wait for the remaining load events
       
   456         StateChange( ELoadStateLoadDone );
       
   457         }
       
   458     else  // don't wait for anything
       
   459         {
       
   460         StateChange( ELoadStateIdle );
       
   461         }
       
   462 
       
   463     // first arrives ContentFinished and then UrlLoadingFinished!
       
   464     // what to do with status?
       
   465     // updatesoftkeys()  done in appui
       
   466 
       
   467     CBrowserViewBase* view = CBrowserAppUi::Static()->ActiveView();
       
   468     if( view ) // just to be sure
       
   469         {
       
   470         TVwsViewId activeViewId = view->ViewId();
       
   471         if( activeViewId.iViewUid == KUidBrowserBookmarksViewId)
       
   472             {
       
   473             SetRestoreContentFlag( EFalse );
       
   474             }
       
   475         }
       
   476     }
       
   477 
       
   478 // ----------------------------------------------------------------------------
       
   479 // CBrowserLoadObserver::NewTitleAvailableL()
       
   480 // ----------------------------------------------------------------------------
       
   481 //
       
   482 void CBrowserLoadObserver::NewTitleAvailableL()
       
   483     {
       
   484     if( iWindow->IsWindowActive() )
       
   485         {
       
   486         CBrowserViewBase* view = CBrowserAppUi::Static()->ActiveView();        
       
   487          if( view ) // just to be sure
       
   488               {
       
   489               TVwsViewId activeViewId = view->ViewId();
       
   490               if( activeViewId.iViewUid == KUidBrowserContentViewId )
       
   491                   {
       
   492                   iContentView->UpdateTitleL( *iApiProvider );
       
   493                   }
       
   494               }
       
   495         }
       
   496     SetRestoreContentFlag( ETrue );
       
   497     }
       
   498     
       
   499 // ----------------------------------------------------------------------------
       
   500 // CBrowserLoadObserver::InBrowserContentView()
       
   501 // ----------------------------------------------------------------------------
       
   502 //
       
   503 TBool CBrowserLoadObserver::InBrowserContentView()
       
   504     {
       
   505     CBrowserViewBase* view = CBrowserAppUi::Static()->ActiveView();        
       
   506     if( view ) // just to be sure
       
   507         {
       
   508         TVwsViewId activeViewId = view->ViewId();
       
   509         return ( activeViewId.iViewUid == KUidBrowserContentViewId );
       
   510         }
       
   511         
       
   512     return EFalse;
       
   513     }
       
   514 
       
   515 
       
   516 // ----------------------------------------------------------------------------
       
   517 // CBrowserLoadObserver::ContentArrivedL()
       
   518 // ----------------------------------------------------------------------------
       
   519 //
       
   520 void CBrowserLoadObserver::ContentArrivedL()
       
   521     {
       
   522     if( iApiProvider->Connection().Connected()
       
   523         && iApiProvider->Preferences().HttpSecurityWarningsStatSupressed() )
       
   524         {
       
   525         TInt secureUpdate = EAknIndicatorStateOff;
       
   526         if( LoadStatus( ELoadStatusSecurePage ) )
       
   527             {
       
   528             if( LoadStatus( ELoadStatusAllItemIsSecure ) )
       
   529                 {
       
   530                 secureUpdate = EAknIndicatorStateOn;
       
   531                 }
       
   532             }
       
   533         iApiProvider->Display().UpdateSecureIndicatorL( secureUpdate );
       
   534         }
       
   535     }
       
   536 
       
   537 //-----------------------------------------------------------------------------
       
   538 // CBrowserLoadObserver::ReportDialogEvent
       
   539 //-----------------------------------------------------------------------------
       
   540 // Handles dialog provider events
       
   541 void CBrowserLoadObserver::ReportDialogEventL(
       
   542         TInt aType,
       
   543         TInt aFlags )
       
   544     {
       
   545     switch( aType )
       
   546         {
       
   547         case MBrowserDialogsProviderObserver::ENotifyError:
       
   548             // aFlags contains error code
       
   549             {
       
   550             // If card not in deck error, go to first card of deck
       
   551             SetRestoreContentFlag( aFlags == KBrsrWmlbrowserCardNotInDeck );
       
   552             break;
       
   553             }
       
   554         case MBrowserDialogsProviderObserver::ENotifyHttpError:
       
   555             // aFlags contains error code
       
   556             {
       
   557             SetRestoreContentFlag( EFalse );
       
   558             break;
       
   559             }
       
   560         case MBrowserDialogsProviderObserver::EUserAuthentication:
       
   561             {
       
   562             SetRestoreContentFlag( aFlags ); // False == Cancelled
       
   563             break;
       
   564             }
       
   565         case MBrowserDialogsProviderObserver::EConfirm:
       
   566             // aFlags contains Cancel status
       
   567             {
       
   568             // if confirmation query was cancelled, step back to idle
       
   569             if( !aFlags )
       
   570                 {
       
   571                 DoEndLoad( EFalse );
       
   572                 }
       
   573             SetRestoreContentFlag( !aFlags );
       
   574             break;
       
   575             }
       
   576         case MBrowserDialogsProviderObserver::EUploadProgress:
       
   577             {
       
   578             // Cancel fetching - dialog is cancelled
       
   579             if ( aFlags == KErrCancel )
       
   580                 {
       
   581                 iWindow->BrCtlInterface().HandleCommandL( 
       
   582                     (TInt)TBrCtlDefs::ECommandCancelFetch +
       
   583                     (TInt)TBrCtlDefs::ECommandIdBase );
       
   584                 }
       
   585             break;
       
   586             }
       
   587         default:
       
   588             break;
       
   589         }
       
   590     }
       
   591 
       
   592 //-----------------------------------------------------------------------------
       
   593 // CBrowserLoadObserver::UpdateSecureIndicatorL
       
   594 //-----------------------------------------------------------------------------
       
   595 //
       
   596 void CBrowserLoadObserver::UpdateSecureIndicatorL()
       
   597     {
       
   598     TBool status = LoadStatus( ELoadStatusAllItemIsSecure );
       
   599     iApiProvider->Display().UpdateSecureIndicatorL( 
       
   600         status &&
       
   601         !iApiProvider->Preferences().HttpSecurityWarningsStatSupressed() );
       
   602     }
       
   603 
       
   604 //-----------------------------------------------------------------------------
       
   605 // CBrowserLoadObserver::LoadUrlType
       
   606 //-----------------------------------------------------------------------------
       
   607 //
       
   608 CBrowserLoadObserver::TBrowserLoadUrlType CBrowserLoadObserver::LoadUrlType() const
       
   609     {
       
   610     return iLoadUrlType;
       
   611     }
       
   612 
       
   613 //-----------------------------------------------------------------------------
       
   614 // CBrowserLoadObserver::LoadState
       
   615 //-----------------------------------------------------------------------------
       
   616 //
       
   617 CBrowserLoadObserver::TBrowserLoadState CBrowserLoadObserver::LoadState() const
       
   618     {
       
   619     return iLoadState;
       
   620     }
       
   621 //-----------------------------------------------------------------------------
       
   622 // CBrowserLoadObserver::StateChange
       
   623 //-----------------------------------------------------------------------------
       
   624 //
       
   625 void CBrowserLoadObserver::StateChange( TBrowserLoadState aNextState )
       
   626     {
       
   627     if( ELoadStateIdle == iLoadState &&
       
   628         iLoadState != aNextState )
       
   629        {
       
   630           iNewContentDisplayed = EFalse;
       
   631           iApiProvider->WindowMgr().NotifyObserversL( EWindowCntDisplayed, iWindow->WindowId() );
       
   632        }
       
   633     iLoadState = aNextState;
       
   634     }
       
   635 
       
   636 //-----------------------------------------------------------------------------
       
   637 // CBrowserLoadObserver::SetContentDisplayed
       
   638 //-----------------------------------------------------------------------------
       
   639 //
       
   640 
       
   641 void CBrowserLoadObserver::SetContentDisplayed( TBool aValue )
       
   642     { 
       
   643     iNewContentDisplayed = aValue;
       
   644     TRAP_IGNORE( iApiProvider->WindowMgr().NotifyObserversL( EWindowCntDisplayed, iWindow->WindowId()));
       
   645     }
       
   646 
       
   647 
       
   648 // End of file