browserui/browser/Launcher2/src/BrowserLauncher.cpp
changeset 0 84ad3b177aa3
child 24 868cceedabd3
equal deleted inserted replaced
-1:000000000000 0:84ad3b177aa3
       
     1 /*
       
     2 * Copyright (c) 2002-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:  BrowserLauncher
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include "BrowserLauncher.h"
       
    22 #include "BrowserLauncherExtension.h"
       
    23 #include "logger.h"
       
    24 #include "BrowserUiPrivateCRKeys.h"
       
    25 #include "BrowserOverriddenSettings.h"
       
    26 #include "Browser.hrh"
       
    27 
       
    28 #include <FavouritesLimits.h> // Context Id:s
       
    29 #include <eikappui.h>
       
    30 #include <eikapp.h>
       
    31 #include <eikenv.h>
       
    32 #include <centralrepository.h>
       
    33 #include <FavouritesDb.h>
       
    34 
       
    35 // CONSTANTS
       
    36 const TInt KBrowserAppUid = 0x10008D39;
       
    37 const TInt KBrowserSeamlessParamLength = 20;
       
    38 _LIT( KBookmarkStarterString, "1 " );
       
    39 
       
    40 // ============================ MEMBER FUNCTIONS ===============================
       
    41 
       
    42 // -----------------------------------------------------------------------------
       
    43 // CBrowserLauncher::CBrowserLauncher
       
    44 // -----------------------------------------------------------------------------
       
    45 //
       
    46 CBrowserLauncher::CBrowserLauncher()
       
    47     {
       
    48     iBrowserUid = TUid::Uid( KBrowserAppUid );
       
    49     }
       
    50     
       
    51 // -----------------------------------------------------------------------------
       
    52 // CBrowserLauncher::ConstructL
       
    53 // -----------------------------------------------------------------------------
       
    54 //
       
    55 void CBrowserLauncher::ConstructL()
       
    56     {
       
    57     LOG_CREATE;
       
    58     LOG_ENTERFN( "CBrowserLauncher::ConstructL" );
       
    59     }
       
    60 
       
    61 // -----------------------------------------------------------------------------
       
    62 // CBrowserLauncher::NewLC
       
    63 // -----------------------------------------------------------------------------
       
    64 //
       
    65 EXPORT_C 
       
    66 CBrowserLauncher* CBrowserLauncher::NewLC()
       
    67     {
       
    68     LOG_ENTERFN( "CBrowserLauncher::NewLC" );
       
    69     CBrowserLauncher* self = new(ELeave) CBrowserLauncher();
       
    70     CleanupStack::PushL(self);
       
    71     self->ConstructL();
       
    72     return self;
       
    73     }
       
    74 
       
    75 // -----------------------------------------------------------------------------
       
    76 // CBrowserLauncher::NewL
       
    77 // -----------------------------------------------------------------------------
       
    78 //
       
    79 EXPORT_C 
       
    80 CBrowserLauncher* CBrowserLauncher::NewL()
       
    81     {
       
    82     LOG_ENTERFN( "CBrowserLauncher::NewL" );
       
    83     CBrowserLauncher* self = NewLC();
       
    84     CleanupStack::Pop();
       
    85     return self;
       
    86     }
       
    87 
       
    88 // -----------------------------------------------------------------------------
       
    89 // CBrowserLauncher::NewLC
       
    90 // -----------------------------------------------------------------------------
       
    91 //
       
    92 EXPORT_C 
       
    93 CBrowserLauncher* CBrowserLauncher::NewLC( TInt /*aOverrideBrowserUid*/ )
       
    94     {
       
    95     LOG_ENTERFN( "CBrowserLauncher::NewLC(TInt aOverrideBrowserUid) IS DEPRECATED" );
       
    96     CBrowserLauncher* self = new(ELeave) CBrowserLauncher();
       
    97     CleanupStack::PushL(self);
       
    98     self->ConstructL();
       
    99     return self;	
       
   100 	}
       
   101 	
       
   102 // -----------------------------------------------------------------------------
       
   103 // CBrowserLauncher::NewL
       
   104 // -----------------------------------------------------------------------------
       
   105 //
       
   106 EXPORT_C
       
   107 CBrowserLauncher* CBrowserLauncher::NewL( TInt /*aOverrideBrowserUid*/ )
       
   108     {
       
   109     LOG_ENTERFN( "CBrowserLauncher::NewL(TInt aOverrideBrowserUid) IS DEPRECATED" );
       
   110     CBrowserLauncher* self = NewLC();
       
   111     CleanupStack::Pop();
       
   112     return self;	
       
   113     }
       
   114 	
       
   115 // Destructor
       
   116 EXPORT_C 
       
   117 CBrowserLauncher::~CBrowserLauncher()
       
   118     {
       
   119     LOG_ENTERFN( "CBrowserLauncher::~CBrowserLauncher" );
       
   120     Cancel();
       
   121     }
       
   122 
       
   123 // ----------------------------------------------------------------------------
       
   124 // CBrowserLauncher::LaunchBrowserEmbeddedL
       
   125 // ----------------------------------------------------------------------------
       
   126 //
       
   127 EXPORT_C 
       
   128 void CBrowserLauncher::LaunchBrowserEmbeddedL
       
   129                       ( const TDesC& aParams, 
       
   130                         MDownloadedContentHandler* aContentHandler, 
       
   131                         MAknServerAppExitObserver* aExitObserver, 
       
   132                         TBrowserOverriddenSettings* aSettings )
       
   133     {
       
   134     LaunchBrowserEmbeddedL
       
   135                       ( aParams, 
       
   136                         /*aContextId*/KErrNotFound, 
       
   137                         aContentHandler, 
       
   138                         aExitObserver, 
       
   139                         aSettings );
       
   140     }
       
   141 
       
   142 // ----------------------------------------------------------------------------
       
   143 // CBrowserLauncher::LaunchBrowserEmbeddedL
       
   144 // ----------------------------------------------------------------------------
       
   145 //
       
   146 EXPORT_C 
       
   147 void CBrowserLauncher::LaunchBrowserEmbeddedL
       
   148                       ( TInt aContextId, 
       
   149                         MDownloadedContentHandler* aContentHandler, 
       
   150                         MAknServerAppExitObserver* aExitObserver, 
       
   151                         TBrowserOverriddenSettings* aSettings )
       
   152     {
       
   153     LaunchBrowserEmbeddedL
       
   154                       ( /*aParams*/KNullDesC, 
       
   155                         aContextId, 
       
   156                         aContentHandler, 
       
   157                         aExitObserver, 
       
   158                         aSettings );
       
   159     }
       
   160 
       
   161 // ----------------------------------------------------------------------------
       
   162 // CBrowserLauncher::LaunchBrowserSyncEmbeddedL
       
   163 // ----------------------------------------------------------------------------
       
   164 //
       
   165 EXPORT_C 
       
   166 TInt CBrowserLauncher::LaunchBrowserSyncEmbeddedL
       
   167                       ( const TDesC& aParams, 
       
   168                         MDownloadedContentHandler* aContentHandler, 
       
   169                         TBrowserOverriddenSettings* aSettings )
       
   170     {
       
   171     LaunchBrowserEmbeddedL
       
   172                       ( aParams, 
       
   173                         /*aContextId*/KErrNotFound, 
       
   174                         aContentHandler, 
       
   175                         /*aExitObserver*/0, 
       
   176                         aSettings );
       
   177 
       
   178     return (iExtension->WaitBrowserToFinish());
       
   179     }
       
   180 
       
   181 // ----------------------------------------------------------------------------
       
   182 // CBrowserLauncher::LaunchBrowserSyncEmbeddedL
       
   183 // ----------------------------------------------------------------------------
       
   184 //
       
   185 EXPORT_C 
       
   186 TInt CBrowserLauncher::LaunchBrowserSyncEmbeddedL
       
   187                       ( TInt aContextId, 
       
   188                         MDownloadedContentHandler* aContentHandler, 
       
   189                         TBrowserOverriddenSettings* aSettings )
       
   190     {
       
   191     LaunchBrowserEmbeddedL
       
   192                       ( /*aParams*/KNullDesC, 
       
   193                         aContextId, 
       
   194                         aContentHandler, 
       
   195                         /*aExitObserver*/0, 
       
   196                         aSettings );
       
   197 
       
   198     return (iExtension->WaitBrowserToFinish());
       
   199     }
       
   200 
       
   201 // ----------------------------------------------------------------------------
       
   202 // CBrowserLauncher::Cancel
       
   203 // ----------------------------------------------------------------------------
       
   204 //
       
   205 EXPORT_C 
       
   206 void CBrowserLauncher::Cancel()
       
   207     {
       
   208     // Terminate the Browser
       
   209     delete iExtension;
       
   210     iExtension = 0;
       
   211     iFavouritesSess.Close();    
       
   212     }
       
   213 
       
   214 // -----------------------------------------------------------------------------
       
   215 // CBrowserLauncher::LaunchBrowserEmbeddedL
       
   216 // If aParams is not empty, then it is used, otherwise aContextId is used.
       
   217 // -----------------------------------------------------------------------------
       
   218 //
       
   219 void CBrowserLauncher::LaunchBrowserEmbeddedL
       
   220                       ( const TDesC& aParams, 
       
   221                         TInt aContextId, 
       
   222                         MDownloadedContentHandler* aContentHandler, 
       
   223                         MAknServerAppExitObserver* aExitObserver, 
       
   224                         TBrowserOverriddenSettings* aSettings )
       
   225     {
       
   226     LOG_ENTERFN( "CBrowserLauncher::LaunchBrowserEmbeddedL" );
       
   227     
       
   228     LOG_WRITE_FORMAT(" aParams: [%S]", &aParams);
       
   229     LOG_WRITE_FORMAT(" aContextId: %d", aContextId);
       
   230     LOG_WRITE_FORMAT(" aContentHandler: 0x%x", aContentHandler);
       
   231     LOG_WRITE_FORMAT(" aExitObserver: 0x%x", aExitObserver);
       
   232     LOG_WRITE_FORMAT(" aSettings: 0x%x", aSettings);
       
   233 
       
   234     TInt folderUid = 0;
       
   235     TInt folderPreferredUid = 0;
       
   236     
       
   237     // keep a local ptr to aSettings
       
   238     TBrowserOverriddenSettings* aOverrideSettings = aSettings;
       
   239     
       
   240     TUid embeddingAppUid = CEikonEnv::Static()->EikAppUi()->Application()->AppDllUid();
       
   241     LOG_WRITE_FORMAT(" embeddingAppUid: 0x%x", embeddingAppUid);
       
   242     
       
   243     iExtension = CBrowserLauncherExtension::NewL( *this );
       
   244     User::LeaveIfError( iFavouritesSess.Connect() );    
       
   245 	
       
   246     if ( 0 == aParams.Length() )
       
   247         {       
       
   248         // SPECIAL folder UID handling
       
   249         folderUid = KFavouritesNullUid;
       
   250         TUint specialContextId = EBrowserContextIdNormal;
       
   251         
       
   252         switch(aContextId)
       
   253         	{
       
   254         		case KFavouritesFeedsContextId:
       
   255   					// For feeds, leave uid to Root as it is here.
       
   256   					// Upon launch, browser will then switch into the Feeds view
       
   257         			// upon opening.
       
   258         			specialContextId = EBrowserContextIdFeeds;
       
   259         			folderUid = KFavouritesRootUid;
       
   260         			folderPreferredUid = KFavouritesNullUid;
       
   261         			break;
       
   262         		default:
       
   263         			break;
       
   264         	}
       
   265         	
       
   266         // If we have now just set the folderUid, then
       
   267         // we need to tell browser of the context id if it's not done already
       
   268         if(folderUid != KFavouritesNullUid)
       
   269         	{
       
   270        		// if we're already given override settings and the specialContextId
       
   271        		// is not already given, set it now
       
   272        		if(aOverrideSettings)
       
   273        			{
       
   274        			if(aOverrideSettings->GetBrowserSetting(EBrowserOverSettingsContextId) != EBrowserContextIdUndefined)
       
   275        				{
       
   276        				aOverrideSettings->SetBrowserSetting(EBrowserOverSettingsContextId, specialContextId);
       
   277    					}
       
   278        			}
       
   279    			else
       
   280    				{
       
   281    					aOverrideSettings = new (ELeave) TBrowserOverriddenSettings;
       
   282    					CleanupStack::PushL( aOverrideSettings );
       
   283    					aOverrideSettings->SetBrowserSetting(EBrowserOverSettingsContextId, specialContextId);					
       
   284        			}
       
   285         	}      	
       
   286         if(folderUid == KFavouritesNullUid)
       
   287         	{        
       
   288 	        // Resolve folder uid
       
   289 	        folderUid = FolderByContextIdL( aContextId );
       
   290 	        if ( folderUid == KFavouritesNullUid )
       
   291 	            {
       
   292 	                folderUid = KFavouritesRootUid;
       
   293 	            }
       
   294 	        folderPreferredUid = BookmarksIdByFolderIdL( folderUid );
       
   295 	        }
       
   296         }
       
   297 	LOG_WRITE_FORMAT("folderPreferredUid = 0x%x", folderPreferredUid );
       
   298 	
       
   299 	// Initialize client and connect to Browser application.
       
   300     iExtension->iLauncherClientService.InitializeL( iBrowserUid, *iExtension );
       
   301     
       
   302   	LOG_WRITE("After iLauncherClientService.InitializeL ");
       
   303     
       
   304     // Start listening to Browser application.
       
   305     iExtension->iLauncherClientService.ListenL( );
       
   306     LOG_WRITE("After iLauncherClientService.ListenL ");
       
   307     
       
   308     // Set handler of finished download.
       
   309     iExtension->iDownloadedContentHandler = aContentHandler;
       
   310     // Set handler of server exit.
       
   311     iExtension->iBrowserLauncherClientExitObserver = aExitObserver;
       
   312 
       
   313     HBufC* seamlessParam = 0;
       
   314     if ( !aParams.Length()  && folderPreferredUid  && EnhancedSeamlessLinkLocalFeaturesSupportedL() )
       
   315         {
       
   316         seamlessParam = HBufC::NewLC( KBrowserSeamlessParamLength );
       
   317         seamlessParam->Des().Copy( KBookmarkStarterString );
       
   318         seamlessParam->Des().AppendNum( folderPreferredUid );
       
   319         }
       
   320 
       
   321     // Pack aSettings,folderUid,aParams into a descriptor, and send the
       
   322     // data to Browser application.
       
   323     // Note: if seamlessParam is not empty, it must be used instead of aParams!
       
   324     HBufC8* bufferToSend = 0;    
       
   325     if ( seamlessParam )
       
   326         {
       
   327 		// Create descriptor with seamless seamlessParam
       
   328         bufferToSend = TLauncherPackageUtils::PackLauncherDataL( embeddingAppUid, aOverrideSettings, folderUid, *seamlessParam, aContentHandler!=0 );
       
   329         }
       
   330     else
       
   331         {
       
   332 		// Create descriptor with seamless aParams
       
   333         bufferToSend = TLauncherPackageUtils::PackLauncherDataL( embeddingAppUid, aOverrideSettings, folderUid, aParams, aContentHandler!=0 );
       
   334         }
       
   335     // Remember for this buffer in the Extension, because re-initialization.
       
   336     iExtension->SetPackedLauncherData( bufferToSend );
       
   337     
       
   338     // dbg
       
   339     // iExtension->iLauncherClientService.SendCommand( EServerExit );
       
   340     // iExtension->iLauncherClientService.SendSync( *bufferToSend );
       
   341     // dbg
       
   342     
       
   343     // Send parameters to Browser application.
       
   344     iExtension->iLauncherClientService.SendAsync( *bufferToSend, iExtension->iBufferSizeP );
       
   345     
       
   346     if ( seamlessParam )
       
   347         {
       
   348         CleanupStack::PopAndDestroy( seamlessParam ); // seamlessParam
       
   349         }
       
   350 
       
   351 	// Cleanup overridden settings. If it was passed in as NULL, and the local
       
   352 	// version is not, it means we allocated locally for it. Cleanup
       
   353 	if(!aSettings && aOverrideSettings)
       
   354 		{
       
   355 			CleanupStack::PopAndDestroy(1); //aOverrideSettings
       
   356 		}
       
   357     LOG_WRITE("LaunchBrowserEmbeddedL End ");
       
   358     }
       
   359 
       
   360 // -----------------------------------------------------------------------------
       
   361 // CBrowserLauncher::FolderByContextIdL
       
   362 // -----------------------------------------------------------------------------
       
   363 //
       
   364 TInt CBrowserLauncher::FolderByContextIdL( TUint32 aContextId )
       
   365     {
       
   366     LOG_ENTERFN( "CBrowserLauncher::FolderByContextIdL" );
       
   367 
       
   368     TInt folder = KFavouritesNullUid;
       
   369     if ( aContextId != (TUint32)KFavouritesNullContextId )
       
   370         {
       
   371         CArrayFix<TInt>* uids = new (ELeave) CArrayFixFlat<TInt>( 1 );
       
   372         CleanupStack::PushL( uids );
       
   373 
       
   374         RFavouritesDb db;
       
   375         User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
       
   376         CleanupClosePushL<RFavouritesDb>( db );
       
   377         User::LeaveIfError( db.GetUids( *uids, KFavouritesNullUid,
       
   378             CFavouritesItem::EFolder, NULL, aContextId ) );
       
   379 
       
   380         if( uids->Count() > 0 )
       
   381             {
       
   382             folder = uids->At( 0 );
       
   383             }
       
   384         CleanupStack::PopAndDestroy( 2 );   // db, uids
       
   385     }
       
   386 
       
   387     return folder;
       
   388     }
       
   389 
       
   390 // -----------------------------------------------------------------------------
       
   391 // CBrowserLauncher::BookmarksIdByFolderIdL
       
   392 // -----------------------------------------------------------------------------
       
   393 //
       
   394 TInt CBrowserLauncher::BookmarksIdByFolderIdL( TUint32 aFolderId )
       
   395     {
       
   396     TInt bookmarkId = KFavouritesNullUid;
       
   397     if ( aFolderId != (TUint32)NULL )
       
   398         {
       
   399 
       
   400         RFavouritesDb db;
       
   401         User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
       
   402         CleanupClosePushL<RFavouritesDb>( db );
       
   403         User::LeaveIfError( db.PreferredUid( aFolderId , bookmarkId ) );
       
   404 
       
   405         CleanupStack::PopAndDestroy( );   // db
       
   406         }
       
   407     return bookmarkId;
       
   408     }
       
   409 
       
   410 // -----------------------------------------------------------------------------
       
   411 // CBrowserLauncher::EnhancedSeamlessLinkLocalFeaturesSupportedL
       
   412 // -----------------------------------------------------------------------------
       
   413 //
       
   414 TBool CBrowserLauncher::EnhancedSeamlessLinkLocalFeaturesSupportedL()
       
   415     {
       
   416     TBool supported = EFalse;
       
   417     TInt featureBitmask;
       
   418 
       
   419     CRepository* repository = CRepository::NewL( KCRUidBrowserUiLV );
       
   420     //Read local features bitmask
       
   421         if ( repository->Get( KBrowserUiCommonFlags, featureBitmask ) != KErrNone )
       
   422             {
       
   423             featureBitmask = 0;
       
   424             } 
       
   425         if  ( featureBitmask /*& KBrowserUiPreferredBookmarks*/  )
       
   426             {    
       
   427             supported = ETrue;
       
   428             }
       
   429     delete repository;
       
   430 
       
   431     return supported;
       
   432     }
       
   433 
       
   434 // ---------------------------------------------------------
       
   435 // TLauncherPackageUtils::PackLauncherDataL()
       
   436 // ---------------------------------------------------------
       
   437 //
       
   438 HBufC8* TLauncherPackageUtils::PackLauncherDataL( const TUid aEmbeddingAppUid, 
       
   439 												  const TBrowserOverriddenSettings* aSettings, 
       
   440 												  TInt folderUid, 
       
   441 												  const TDesC& seamlessParam, 
       
   442 												  TBool aIsContentHandlerRegistered )
       
   443     {
       
   444     TBool isOverriddenSettings( EFalse );
       
   445     
       
   446     // Check if the overridden settings was set
       
   447     if ( aSettings )
       
   448     	{
       
   449     	isOverriddenSettings = ETrue;
       
   450     	}
       
   451     	
       
   452 	// Create the package
       
   453 	TPckgC<TUid> embeddingAppUidPckg( aEmbeddingAppUid );
       
   454     TPckgC<TBool> isOverriddenSettingsPckg( isOverriddenSettings );    
       
   455     TPckgC<TBrowserOverriddenSettings>* pSettingsPckg( 0 );    
       
   456     if ( aSettings )
       
   457     	{
       
   458     	// Put Overridden settings in package if it is not NULL
       
   459     	pSettingsPckg = new (ELeave) TPckgC<TBrowserOverriddenSettings>( *aSettings );
       
   460     	CleanupStack::PushL( pSettingsPckg );
       
   461     	}   
       
   462     TPckgC<TInt> folderUidPckg( folderUid );
       
   463     TPtrC8 seamlessParamPtr( (const TUint8*)seamlessParam.Ptr(), seamlessParam.Size() );
       
   464     TPckgC<TBool> isContentHandlerRegistered( aIsContentHandlerRegistered );
       
   465 
       
   466 	// Get the size of all packages
       
   467 	TInt totalSize;	
       
   468 	if ( aSettings )
       
   469 		{
       
   470 	    totalSize = embeddingAppUidPckg.Size() + 
       
   471 	    			isOverriddenSettingsPckg.Size() + 
       
   472 	    			(*pSettingsPckg).Size() + 
       
   473 	    			folderUidPckg.Size() + 
       
   474 	    			seamlessParamPtr.Size() + 
       
   475 	    			isContentHandlerRegistered.Size();
       
   476 		}
       
   477 	else
       
   478 		{
       
   479 	    totalSize = embeddingAppUidPckg.Size() + 
       
   480 	     			isOverriddenSettingsPckg.Size() + 
       
   481 	     			folderUidPckg.Size() + 
       
   482 	     			seamlessParamPtr.Size() + 
       
   483 	     			isContentHandlerRegistered.Size();
       
   484 		}
       
   485 		
       
   486 	// Allocate buffer for packages
       
   487     HBufC8* buff = HBufC8::NewL( totalSize );
       
   488     
       
   489     // Pack the packages to buffer
       
   490     buff->Des().Copy( embeddingAppUidPckg );
       
   491 	buff->Des().Append( isOverriddenSettingsPckg );
       
   492 	if ( aSettings )
       
   493 		{
       
   494 		buff->Des().Append( *pSettingsPckg );
       
   495 		}    	
       
   496     buff->Des().Append( folderUidPckg );
       
   497     buff->Des().Append( isContentHandlerRegistered );
       
   498     buff->Des().Append( seamlessParamPtr );
       
   499     
       
   500     if ( aSettings )
       
   501     	{
       
   502     	CleanupStack::PopAndDestroy( ); // pSettingsPckg
       
   503     	}    
       
   504     return buff;
       
   505     }
       
   506     
       
   507 // ---------------------------------------------------------
       
   508 // TLauncherPackageUtils::PackLauncherDataL()
       
   509 // ---------------------------------------------------------
       
   510 //
       
   511 void TLauncherPackageUtils::UnPackLauncherDataL( TUid& aEmbeddingAppUid, TBrowserOverriddenSettings* aSettings, TInt& aFolderUid, TPtrC& aSeamlessParam, const TDesC8& aData, TBool& aIsContentHandlerRegistered, TBool& aIsOverriddenSettings )
       
   512     {
       
   513     TInt pos( 0 );
       
   514 
       
   515 	// Get the first parameter aEmbeddingAppUid from IPC data
       
   516     TPckg<TUid> embeddingAppUid( aEmbeddingAppUid );
       
   517     embeddingAppUid.Copy( aData.Mid( pos, embeddingAppUid.Size() ) );    
       
   518     pos += embeddingAppUid.Size();
       
   519 
       
   520 	// Get the parameter isOverriddenSettings from IPC data
       
   521     TPckg<TBool> isOveriddenSettings( aIsOverriddenSettings );
       
   522     isOveriddenSettings.Copy( aData.Mid( pos, isOveriddenSettings.Size() ) );    
       
   523     pos += isOveriddenSettings.Size();
       
   524     
       
   525     if ( aIsOverriddenSettings )
       
   526     	{
       
   527     	// Unpack the overridden settings
       
   528 	    TPckg<TBrowserOverriddenSettings> settingsPckg( *aSettings );
       
   529 	    settingsPckg.Copy( aData.Mid( pos, settingsPckg.Size() ) );
       
   530 	    pos += settingsPckg.Size();    	
       
   531     	}
       
   532 	else
       
   533 		{
       
   534     	// No overridden setings were put in IPC data
       
   535 		aSettings = NULL;
       
   536 		}    	
       
   537 
       
   538 	// Get second parameters from IPC data
       
   539     TPckg<TInt> folderUidPckg( aFolderUid );
       
   540     folderUidPckg.Copy( aData.Mid( pos, folderUidPckg.Size() ) );
       
   541     pos += folderUidPckg.Size();
       
   542 
       
   543 	// Get third parameters from IPC data
       
   544     TPckg<TBool> isContentHandlerRegistered( aIsContentHandlerRegistered );
       
   545     isContentHandlerRegistered.Copy( aData.Mid( pos, isContentHandlerRegistered.Size() ) );    
       
   546     pos += isContentHandlerRegistered.Size();
       
   547 
       
   548     TPtrC8 remaining = aData.Mid( pos );
       
   549     aSeamlessParam.Set( (const TUint16*)remaining.Ptr(), remaining.Size()/2 );
       
   550     }
       
   551 // End of file