browserui/browser/BrowserAppSrc/BrowserLauncherService.cpp
branchRCL_3
changeset 48 8e6fa1719340
equal deleted inserted replaced
47:6385c4c93049 48:8e6fa1719340
       
     1 /*
       
     2 * Copyright (c) 2002 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: 
       
    15 *      Implementation of BrowserLauncherService
       
    16 *
       
    17 *
       
    18 */
       
    19 
       
    20 // INCLUDES
       
    21 #include "BrowserLauncherService.h"
       
    22 #include <browseroverriddensettings.h>
       
    23 #include "LauncherServerCommands.hrh"
       
    24 #include "BrowserAppDocument.h"
       
    25 #include "BrowserAppUi.h"
       
    26 #include "BrowserAsyncExit.h"
       
    27 #include "logger.h"
       
    28 #include <AiwGenericParam.h>
       
    29 #include <s32mem.h>
       
    30 #include "BrowserSpecialLoadObserver.h"
       
    31 #include <mconnection.h>
       
    32 
       
    33 // -----------------------------------------------------------------------------
       
    34 // CBrowserLauncherService::~CBrowserLauncherService()
       
    35 // -----------------------------------------------------------------------------
       
    36 //
       
    37 CBrowserLauncherService::~CBrowserLauncherService()
       
    38     {
       
    39     LOG_ENTERFN( "CBrowserLauncherService::~CBrowserLauncherService" );
       
    40     // The base class has no destructor, thus resources must be freed up here!
       
    41     delete iClientBuffer; iClientBuffer = 0;
       
    42     // Cancel outstanding asynchronous request
       
    43     if ( iMyAsyncMessage.Handle() !=0 )
       
    44         {
       
    45         iMyAsyncMessage.Complete( KErrCancel );
       
    46         }
       
    47     }
       
    48 
       
    49 // -----------------------------------------------------------------------------
       
    50 // CBrowserLauncherService::ProcessMessageSyncL()
       
    51 // -----------------------------------------------------------------------------
       
    52 //
       
    53 TInt CBrowserLauncherService::ProcessMessageSyncL( TUid /*aEmbeddingApplicationUid*/, 
       
    54 												   TBrowserOverriddenSettings /*aSettings*/, 
       
    55 												   TInt /*aFolderUid*/, 
       
    56 												   TPtrC /*aSeamlessParam*/, 
       
    57 												   TBool /*aIsContentHandlerRegistered*/ )
       
    58     {
       
    59     LOG_ENTERFN( "CBrowserLauncherService::ProcessMessageSyncL" );
       
    60     
       
    61     // Do stuff here...
       
    62     return KErrNone;
       
    63     }
       
    64 
       
    65 // -----------------------------------------------------------------------------
       
    66 // CBrowserLauncherService::ProcessMessageASyncL()
       
    67 // -----------------------------------------------------------------------------
       
    68 //
       
    69 void CBrowserLauncherService::ProcessMessageASyncL( TUid aEmbeddingApplicationUid, 
       
    70 													TBrowserOverriddenSettings aSettings, 
       
    71 													TInt aFolderUid, 
       
    72 													TPtrC aSeamlessParam, 
       
    73 													TBool aIsContentHandlerRegistered, 
       
    74 													TBool aIsOverridenSettings )
       
    75     {
       
    76     LOG_ENTERFN( "CBrowserLauncherService::ProcessMessageASyncL" );
       
    77     
       
    78     TBrowserOverriddenSettings* paSettings;
       
    79     TInt seamlessParamLength = aSeamlessParam.Length();
       
    80     HBufC8* param8 = HBufC8::NewLC( seamlessParamLength );
       
    81         
       
    82     // Set Browser`s document settings
       
    83     if ( aIsOverridenSettings )
       
    84     	{
       
    85     	paSettings = &aSettings;
       
    86     	iBrowserDocument->SetOverriddenSettings( paSettings );
       
    87     	}
       
    88     else
       
    89         {
       
    90         iBrowserDocument->SetOverriddenSettings( NULL );
       
    91         }
       
    92 		
       
    93     // Set browser document		
       
    94     iBrowserDocument->SetFolderToOpen( aFolderUid );
       
    95     iBrowserDocument->SetIsContentHandlerRegistered( aIsContentHandlerRegistered );
       
    96 
       
    97     // Initialize browser
       
    98     iBrowserAppUi->SetEmbeddingAppliacationUid( aEmbeddingApplicationUid );
       
    99     iBrowserAppUi->InitBrowserL( );
       
   100     				
       
   101     // Load the specified URL
       
   102     param8->Des().Copy( aSeamlessParam );
       
   103 
       
   104     // If no command or URL was given open the browser with the specified bookmark
       
   105     if ( seamlessParamLength )
       
   106     	{
       
   107     	iBrowserAppUi->ParseAndProcessParametersL( *param8 );			
       
   108         iBrowserAppUi->SetViewToBeActivatedIfNeededL( iBrowserAppUi->LastActiveViewId() );
       
   109     	}
       
   110     else
       
   111     	{
       
   112     	iBrowserAppUi->ParseAndProcessParametersL( *param8, EFalse );
       
   113     	
       
   114         // startup content view to initialize fep/vkb
       
   115     	iBrowserAppUi->SetLastActiveViewId( KUidBrowserContentViewId );
       
   116     	iBrowserAppUi->SetViewToBeActivatedIfNeededL( iBrowserAppUi->LastActiveViewId() );
       
   117        	iBrowserAppUi->ActivateLocalViewL( iBrowserAppUi->LastActiveViewId() );			
       
   118 
       
   119     	// Now activate bookmarks view
       
   120     	iBrowserAppUi->SetLastActiveViewId( KUidBrowserBookmarksViewId );
       
   121        	iBrowserAppUi->SetViewToBeActivatedIfNeededL( iBrowserAppUi->LastActiveViewId() );
       
   122     	}
       
   123     iBrowserAppUi->ActivateLocalViewL( iBrowserAppUi->LastActiveViewId() );
       
   124     iBrowserAppUi->HandleForegroundEventL( ETrue );
       
   125 
       
   126 	// perform special action for overridden context
       
   127 	// could later use as flag for LSK,RSK.
       
   128 	switch(aSettings.GetBrowserSetting(EBrowserOverSettingsContextId))
       
   129 		{
       
   130 			case EBrowserContextIdFeeds:
       
   131 				iBrowserAppUi->SetOverriddenLaunchContextId(EBrowserContextIdFeeds);
       
   132 				iBrowserAppUi->LaunchIntoFeedsL();	
       
   133 				break;
       
   134 			default:
       
   135 				// do nothing
       
   136 				break;
       
   137 		
       
   138 		}
       
   139 
       
   140     CleanupStack::PopAndDestroy(); // param8
       
   141     }
       
   142 
       
   143 // -----------------------------------------------------------------------------
       
   144 // CBrowserLauncherService::ProcessMessageSyncBufferL()
       
   145 // -----------------------------------------------------------------------------
       
   146 //    
       
   147 TInt CBrowserLauncherService::ProcessMessageSyncBufferL( )
       
   148     {
       
   149     LOG_ENTERFN( "CBrowserLauncherService::ProcessMessageSyncBufferL" );
       
   150     
       
   151     // Write iClientBuffer to  client`s address space.
       
   152     iMySyncMessage.WriteL( 0,iClientBuffer->Des() );    
       
   153     return KErrNone;
       
   154     }
       
   155 	
       
   156 // -----------------------------------------------------------------------------
       
   157 // CBrowserLauncherService::ProcessBoolsL()
       
   158 // -----------------------------------------------------------------------------
       
   159 //    
       
   160 void CBrowserLauncherService::ProcessBoolsL
       
   161     ( TBool aClientWantsToContinue, TBool aWasContentHandled )
       
   162     {
       
   163     LOG_ENTERFN( "CBrowserLauncherService::ProcessBoolsL" );
       
   164     
       
   165     iBrowserAppUi->SetContentHandlingResult( aClientWantsToContinue, aWasContentHandled );
       
   166     }
       
   167 
       
   168 // -----------------------------------------------------------------------------
       
   169 // CBrowserLauncherService::DoBrowserExit()
       
   170 // -----------------------------------------------------------------------------
       
   171 //    
       
   172 void CBrowserLauncherService::DoBrowserExit( )
       
   173     {
       
   174     LOG_ENTERFN( "CBrowserLauncherService::DoBrowserExitL" );
       
   175     
       
   176     if ( iBrowserAppUi )
       
   177         {
       
   178         if ( !iBrowserAppUi->ExitInProgress() )
       
   179             {
       
   180             if (iBrowserAppUi->SpecialLoadObserver().IsConnectionStarted()) // If Connection request is in processing
       
   181 			    {  
       
   182 			    iBrowserAppUi->Connection().Disconnect();                                             
       
   183 			    }
       
   184 	        else
       
   185 			    {
       
   186 			    iBrowserAppUi->iBrowserAsyncExit->Start();
       
   187 			    }   
       
   188             }        
       
   189         iBrowserAppUi->SetBrowserLauncherService( NULL );
       
   190         }
       
   191     }
       
   192         
       
   193 // -----------------------------------------------------------------------------
       
   194 // CBrowserLauncherService::DownloadFinished()
       
   195 // -----------------------------------------------------------------------------
       
   196 //
       
   197 void CBrowserLauncherService::DownloadFinishedL( TInt aReason, const CAiwGenericParamList& aParamList )
       
   198     {
       
   199     LOG_ENTERFN( "CBrowserLauncherService::DownloadFinishedL" );
       
   200     
       
   201     // This function is called by the Browser. If download is finished 
       
   202     // write the result to the clients buffer.
       
   203 
       
   204     // Get the size of the parameter list`s externalized size.
       
   205     TInt parameterListExternalizedSize = aParamList.Size();
       
   206 
       
   207     // Create the buffer to hold the externalized data.
       
   208     HBufC8* newClientBuffer = HBufC8::NewL( parameterListExternalizedSize );
       
   209     delete iClientBuffer; // delete the old buffer
       
   210     iClientBuffer = newClientBuffer;
       
   211 
       
   212     // Create Stream object, and write stream to descriptor iClientBuffer.
       
   213     TPtr8 piClientBuffer = iClientBuffer->Des();
       
   214     RDesWriteStream writeStream( piClientBuffer );
       
   215 
       
   216     // Externalize parameter list into descriptor iClientBuffer.	
       
   217     aParamList.ExternalizeL( writeStream );
       
   218     BROWSER_LOG( ( _L( " ExternalizeL OK" ) ) );
       
   219 
       
   220     // Close stream object.
       
   221     writeStream.CommitL();
       
   222     BROWSER_LOG( ( _L( " CommitL OK" ) ) );
       
   223     writeStream.Close();
       
   224     BROWSER_LOG( ( _L( " Close OK" ) ) );
       
   225 
       
   226     // Complete the client with the created buffer`s size.
       
   227     if ( aReason == KErrNone )
       
   228         {
       
   229         TPckg<TInt> bufferSize( iClientBuffer->Length() );
       
   230 	    TRAPD(err, iMyAsyncMessage.WriteL( 1, bufferSize ));	
       
   231 	    LOG_WRITE_FORMAT(" WriteL erro code : %d", err );
       
   232 	    User::LeaveIfError(err);
       
   233         iMyAsyncMessage.Complete( KErrNone );
       
   234         }
       
   235     else
       
   236         {
       
   237         iMyAsyncMessage.Complete( aReason );
       
   238         }
       
   239     }
       
   240 
       
   241 // -----------------------------------------------------------------------------
       
   242 // CBrowserLauncherService::ConstructL()
       
   243 // -----------------------------------------------------------------------------
       
   244 //
       
   245 void CBrowserLauncherService::ConstructL()
       
   246     {
       
   247     LOG_ENTERFN( "CBrowserLauncherService::ConstructL" );
       
   248     iBrowserAppUi->SetBrowserLauncherService( this );
       
   249     }
       
   250 
       
   251 // End of File