--- a/browserui/browser/Launcher2/src/BrowserLauncher.cpp Thu Aug 19 09:57:56 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,563 +0,0 @@
-/*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: BrowserLauncher
-*
-*/
-
-// INCLUDE FILES
-#include <browserlauncher.h>
-#include "BrowserLauncherExtension.h"
-#include "logger.h"
-#include "BrowserUiPrivateCRKeys.h"
-#include <browseroverriddensettings.h>
-#include "Browser.hrh"
-
-#include <favouriteslimits.h> // Context Id:s
-#include <eikappui.h>
-#include <eikapp.h>
-#include <eikenv.h>
-#include <centralrepository.h>
-#include <favouritesdb.h>
-#include <SysUtil.h>
-
-// CONSTANTS
-const TInt KBrowserAppUid = 0x10008D39;
-const TInt KBrowserSeamlessParamLength = 20;
-_LIT( KBookmarkStarterString, "1 " );
-const TInt KMinimumCDriveDiskSpace = 512 * 1024;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::CBrowserLauncher
-// -----------------------------------------------------------------------------
-//
-CBrowserLauncher::CBrowserLauncher()
- {
- iBrowserUid = TUid::Uid( KBrowserAppUid );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CBrowserLauncher::ConstructL()
- {
- LOG_CREATE;
- LOG_ENTERFN( "CBrowserLauncher::ConstructL" );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::NewLC
-// -----------------------------------------------------------------------------
-//
-EXPORT_C
-CBrowserLauncher* CBrowserLauncher::NewLC()
- {
- LOG_ENTERFN( "CBrowserLauncher::NewLC" );
- CBrowserLauncher* self = new(ELeave) CBrowserLauncher();
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::NewL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C
-CBrowserLauncher* CBrowserLauncher::NewL()
- {
- LOG_ENTERFN( "CBrowserLauncher::NewL" );
- CBrowserLauncher* self = NewLC();
- CleanupStack::Pop();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::NewLC
-// -----------------------------------------------------------------------------
-//
-EXPORT_C
-CBrowserLauncher* CBrowserLauncher::NewLC( TInt /*aOverrideBrowserUid*/ )
- {
- LOG_ENTERFN( "CBrowserLauncher::NewLC(TInt aOverrideBrowserUid) IS DEPRECATED" );
- CBrowserLauncher* self = new(ELeave) CBrowserLauncher();
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::NewL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C
-CBrowserLauncher* CBrowserLauncher::NewL( TInt /*aOverrideBrowserUid*/ )
- {
- LOG_ENTERFN( "CBrowserLauncher::NewL(TInt aOverrideBrowserUid) IS DEPRECATED" );
- CBrowserLauncher* self = NewLC();
- CleanupStack::Pop();
- return self;
- }
-
-// Destructor
-EXPORT_C
-CBrowserLauncher::~CBrowserLauncher()
- {
- LOG_ENTERFN( "CBrowserLauncher::~CBrowserLauncher" );
- Cancel();
- }
-
-// ----------------------------------------------------------------------------
-// CBrowserLauncher::LaunchBrowserEmbeddedL
-// ----------------------------------------------------------------------------
-//
-EXPORT_C
-void CBrowserLauncher::LaunchBrowserEmbeddedL
- ( const TDesC& aParams,
- MDownloadedContentHandler* aContentHandler,
- MAknServerAppExitObserver* aExitObserver,
- TBrowserOverriddenSettings* aSettings )
- {
- LaunchBrowserEmbeddedL
- ( aParams,
- /*aContextId*/KErrNotFound,
- aContentHandler,
- aExitObserver,
- aSettings );
- }
-
-// ----------------------------------------------------------------------------
-// CBrowserLauncher::LaunchBrowserEmbeddedL
-// ----------------------------------------------------------------------------
-//
-EXPORT_C
-void CBrowserLauncher::LaunchBrowserEmbeddedL
- ( TInt aContextId,
- MDownloadedContentHandler* aContentHandler,
- MAknServerAppExitObserver* aExitObserver,
- TBrowserOverriddenSettings* aSettings )
- {
- LaunchBrowserEmbeddedL
- ( /*aParams*/KNullDesC,
- aContextId,
- aContentHandler,
- aExitObserver,
- aSettings );
- }
-
-// ----------------------------------------------------------------------------
-// CBrowserLauncher::LaunchBrowserSyncEmbeddedL
-// ----------------------------------------------------------------------------
-//
-EXPORT_C
-TInt CBrowserLauncher::LaunchBrowserSyncEmbeddedL
- ( const TDesC& aParams,
- MDownloadedContentHandler* aContentHandler,
- TBrowserOverriddenSettings* aSettings )
- {
- LaunchBrowserEmbeddedL
- ( aParams,
- /*aContextId*/KErrNotFound,
- aContentHandler,
- /*aExitObserver*/0,
- aSettings );
-
- return (iExtension->WaitBrowserToFinish());
- }
-
-// ----------------------------------------------------------------------------
-// CBrowserLauncher::LaunchBrowserSyncEmbeddedL
-// ----------------------------------------------------------------------------
-//
-EXPORT_C
-TInt CBrowserLauncher::LaunchBrowserSyncEmbeddedL
- ( TInt aContextId,
- MDownloadedContentHandler* aContentHandler,
- TBrowserOverriddenSettings* aSettings )
- {
- LaunchBrowserEmbeddedL
- ( /*aParams*/KNullDesC,
- aContextId,
- aContentHandler,
- /*aExitObserver*/0,
- aSettings );
-
- return (iExtension->WaitBrowserToFinish());
- }
-
-// ----------------------------------------------------------------------------
-// CBrowserLauncher::Cancel
-// ----------------------------------------------------------------------------
-//
-EXPORT_C
-void CBrowserLauncher::Cancel()
- {
- // Terminate the Browser
- delete iExtension;
- iExtension = 0;
- iFavouritesSess.Close();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::LaunchBrowserEmbeddedL
-// If aParams is not empty, then it is used, otherwise aContextId is used.
-// -----------------------------------------------------------------------------
-//
-void CBrowserLauncher::LaunchBrowserEmbeddedL
- ( const TDesC& aParams,
- TInt aContextId,
- MDownloadedContentHandler* aContentHandler,
- MAknServerAppExitObserver* aExitObserver,
- TBrowserOverriddenSettings* aSettings )
- {
- LOG_ENTERFN( "CBrowserLauncher::LaunchBrowserEmbeddedL" );
-
- LOG_WRITE_FORMAT(" aParams: [%S]", &aParams);
- LOG_WRITE_FORMAT(" aContextId: %d", aContextId);
- LOG_WRITE_FORMAT(" aContentHandler: 0x%x", aContentHandler);
- LOG_WRITE_FORMAT(" aExitObserver: 0x%x", aExitObserver);
- LOG_WRITE_FORMAT(" aSettings: 0x%x", aSettings);
-
- // Check for ciritical disk space if starts as embeded
- RFs fs;
- User::LeaveIfError(fs.Connect());
- TInt drive( EDriveC );
- TBool isSpace( EFalse );
- TInt err( KErrNone );
- TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL(&fs, KMinimumCDriveDiskSpace, drive ));
- fs.Close();
- if (!isSpace)
- User::Leave(KErrDiskFull);
-
-
- TInt folderUid = 0;
- TInt folderPreferredUid = 0;
-
- // keep a local ptr to aSettings
- TBrowserOverriddenSettings* aOverrideSettings = aSettings;
-
- TUid embeddingAppUid = CEikonEnv::Static()->EikAppUi()->Application()->AppDllUid();
- LOG_WRITE_FORMAT(" embeddingAppUid: 0x%x", embeddingAppUid);
-
- iExtension = CBrowserLauncherExtension::NewL( *this );
- User::LeaveIfError( iFavouritesSess.Connect() );
-
- if ( 0 == aParams.Length() )
- {
- // SPECIAL folder UID handling
- folderUid = KFavouritesNullUid;
- TUint specialContextId = EBrowserContextIdNormal;
-
- switch(aContextId)
- {
- case KFavouritesFeedsContextId:
- // For feeds, leave uid to Root as it is here.
- // Upon launch, browser will then switch into the Feeds view
- // upon opening.
- specialContextId = EBrowserContextIdFeeds;
- folderUid = KFavouritesRootUid;
- folderPreferredUid = KFavouritesNullUid;
- break;
- default:
- break;
- }
-
- // If we have now just set the folderUid, then
- // we need to tell browser of the context id if it's not done already
- if(folderUid != KFavouritesNullUid)
- {
- // if we're already given override settings and the specialContextId
- // is not already given, set it now
- if(aOverrideSettings)
- {
- if(aOverrideSettings->GetBrowserSetting(EBrowserOverSettingsContextId) != EBrowserContextIdUndefined)
- {
- aOverrideSettings->SetBrowserSetting(EBrowserOverSettingsContextId, specialContextId);
- }
- }
- else
- {
- aOverrideSettings = new (ELeave) TBrowserOverriddenSettings;
- CleanupStack::PushL( aOverrideSettings );
- aOverrideSettings->SetBrowserSetting(EBrowserOverSettingsContextId, specialContextId);
- }
- }
- if(folderUid == KFavouritesNullUid)
- {
- // Resolve folder uid
- folderUid = FolderByContextIdL( aContextId );
- if ( folderUid == KFavouritesNullUid )
- {
- folderUid = KFavouritesRootUid;
- }
- folderPreferredUid = BookmarksIdByFolderIdL( folderUid );
- }
- }
- LOG_WRITE_FORMAT("folderPreferredUid = 0x%x", folderPreferredUid );
-
- // Initialize client and connect to Browser application.
- iExtension->iLauncherClientService.InitializeL( iBrowserUid, *iExtension );
-
- LOG_WRITE("After iLauncherClientService.InitializeL ");
-
- // Start listening to Browser application.
- iExtension->iLauncherClientService.ListenL( );
- LOG_WRITE("After iLauncherClientService.ListenL ");
-
- // Set handler of finished download.
- iExtension->iDownloadedContentHandler = aContentHandler;
- // Set handler of server exit.
- iExtension->iBrowserLauncherClientExitObserver = aExitObserver;
-
- HBufC* seamlessParam = 0;
- if ( !aParams.Length() && folderPreferredUid && EnhancedSeamlessLinkLocalFeaturesSupportedL() )
- {
- seamlessParam = HBufC::NewLC( KBrowserSeamlessParamLength );
- seamlessParam->Des().Copy( KBookmarkStarterString );
- seamlessParam->Des().AppendNum( folderPreferredUid );
- }
-
- // Pack aSettings,folderUid,aParams into a descriptor, and send the
- // data to Browser application.
- // Note: if seamlessParam is not empty, it must be used instead of aParams!
- HBufC8* bufferToSend = 0;
- if ( seamlessParam )
- {
- // Create descriptor with seamless seamlessParam
- bufferToSend = TLauncherPackageUtils::PackLauncherDataL( embeddingAppUid, aOverrideSettings, folderUid, *seamlessParam, aContentHandler!=0 );
- }
- else
- {
- // Create descriptor with seamless aParams
- bufferToSend = TLauncherPackageUtils::PackLauncherDataL( embeddingAppUid, aOverrideSettings, folderUid, aParams, aContentHandler!=0 );
- }
- // Remember for this buffer in the Extension, because re-initialization.
- iExtension->SetPackedLauncherData( bufferToSend );
-
- // dbg
- // iExtension->iLauncherClientService.SendCommand( EServerExit );
- // iExtension->iLauncherClientService.SendSync( *bufferToSend );
- // dbg
-
- // Send parameters to Browser application.
- iExtension->iLauncherClientService.SendAsync( *bufferToSend, iExtension->iBufferSizeP );
-
- if ( seamlessParam )
- {
- CleanupStack::PopAndDestroy( seamlessParam ); // seamlessParam
- }
-
- // Cleanup overridden settings. If it was passed in as NULL, and the local
- // version is not, it means we allocated locally for it. Cleanup
- if(!aSettings && aOverrideSettings)
- {
- CleanupStack::PopAndDestroy(1); //aOverrideSettings
- }
- LOG_WRITE("LaunchBrowserEmbeddedL End ");
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::FolderByContextIdL
-// -----------------------------------------------------------------------------
-//
-TInt CBrowserLauncher::FolderByContextIdL( TUint32 aContextId )
- {
- LOG_ENTERFN( "CBrowserLauncher::FolderByContextIdL" );
-
- TInt folder = KFavouritesNullUid;
- if ( aContextId != (TUint32)KFavouritesNullContextId )
- {
- CArrayFix<TInt>* uids = new (ELeave) CArrayFixFlat<TInt>( 1 );
- CleanupStack::PushL( uids );
-
- RFavouritesDb db;
- User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
- CleanupClosePushL<RFavouritesDb>( db );
- User::LeaveIfError( db.GetUids( *uids, KFavouritesNullUid,
- CFavouritesItem::EFolder, NULL, aContextId ) );
-
- if( uids->Count() > 0 )
- {
- folder = uids->At( 0 );
- }
- CleanupStack::PopAndDestroy( 2 ); // db, uids
- }
-
- return folder;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::BookmarksIdByFolderIdL
-// -----------------------------------------------------------------------------
-//
-TInt CBrowserLauncher::BookmarksIdByFolderIdL( TUint32 aFolderId )
- {
- TInt bookmarkId = KFavouritesNullUid;
- if ( aFolderId != (TUint32)NULL )
- {
-
- RFavouritesDb db;
- User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
- CleanupClosePushL<RFavouritesDb>( db );
- User::LeaveIfError( db.PreferredUid( aFolderId , bookmarkId ) );
-
- CleanupStack::PopAndDestroy( ); // db
- }
- return bookmarkId;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserLauncher::EnhancedSeamlessLinkLocalFeaturesSupportedL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserLauncher::EnhancedSeamlessLinkLocalFeaturesSupportedL()
- {
- TBool supported = EFalse;
- TInt featureBitmask;
-
- CRepository* repository = CRepository::NewL( KCRUidBrowserUiLV );
- //Read local features bitmask
- if ( repository->Get( KBrowserUiCommonFlags, featureBitmask ) != KErrNone )
- {
- featureBitmask = 0;
- }
- if ( featureBitmask /*& KBrowserUiPreferredBookmarks*/ )
- {
- supported = ETrue;
- }
- delete repository;
-
- return supported;
- }
-
-// ---------------------------------------------------------
-// TLauncherPackageUtils::PackLauncherDataL()
-// ---------------------------------------------------------
-//
-HBufC8* TLauncherPackageUtils::PackLauncherDataL( const TUid aEmbeddingAppUid,
- const TBrowserOverriddenSettings* aSettings,
- TInt folderUid,
- const TDesC& seamlessParam,
- TBool aIsContentHandlerRegistered )
- {
- TBool isOverriddenSettings( EFalse );
-
- // Check if the overridden settings was set
- if ( aSettings )
- {
- isOverriddenSettings = ETrue;
- }
-
- // Create the package
- TPckgC<TUid> embeddingAppUidPckg( aEmbeddingAppUid );
- TPckgC<TBool> isOverriddenSettingsPckg( isOverriddenSettings );
- TPckgC<TBrowserOverriddenSettings>* pSettingsPckg( 0 );
- if ( aSettings )
- {
- // Put Overridden settings in package if it is not NULL
- pSettingsPckg = new (ELeave) TPckgC<TBrowserOverriddenSettings>( *aSettings );
- CleanupStack::PushL( pSettingsPckg );
- }
- TPckgC<TInt> folderUidPckg( folderUid );
- TPtrC8 seamlessParamPtr( (const TUint8*)seamlessParam.Ptr(), seamlessParam.Size() );
- TPckgC<TBool> isContentHandlerRegistered( aIsContentHandlerRegistered );
-
- // Get the size of all packages
- TInt totalSize;
- if ( aSettings )
- {
- totalSize = embeddingAppUidPckg.Size() +
- isOverriddenSettingsPckg.Size() +
- (*pSettingsPckg).Size() +
- folderUidPckg.Size() +
- seamlessParamPtr.Size() +
- isContentHandlerRegistered.Size();
- }
- else
- {
- totalSize = embeddingAppUidPckg.Size() +
- isOverriddenSettingsPckg.Size() +
- folderUidPckg.Size() +
- seamlessParamPtr.Size() +
- isContentHandlerRegistered.Size();
- }
-
- // Allocate buffer for packages
- HBufC8* buff = HBufC8::NewL( totalSize );
-
- // Pack the packages to buffer
- buff->Des().Copy( embeddingAppUidPckg );
- buff->Des().Append( isOverriddenSettingsPckg );
- if ( aSettings )
- {
- buff->Des().Append( *pSettingsPckg );
- }
- buff->Des().Append( folderUidPckg );
- buff->Des().Append( isContentHandlerRegistered );
- buff->Des().Append( seamlessParamPtr );
-
- if ( aSettings )
- {
- CleanupStack::PopAndDestroy( ); // pSettingsPckg
- }
- return buff;
- }
-
-// ---------------------------------------------------------
-// TLauncherPackageUtils::PackLauncherDataL()
-// ---------------------------------------------------------
-//
-void TLauncherPackageUtils::UnPackLauncherDataL( TUid& aEmbeddingAppUid, TBrowserOverriddenSettings* aSettings, TInt& aFolderUid, TPtrC& aSeamlessParam, const TDesC8& aData, TBool& aIsContentHandlerRegistered, TBool& aIsOverriddenSettings )
- {
- TInt pos( 0 );
-
- // Get the first parameter aEmbeddingAppUid from IPC data
- TPckg<TUid> embeddingAppUid( aEmbeddingAppUid );
- embeddingAppUid.Copy( aData.Mid( pos, embeddingAppUid.Size() ) );
- pos += embeddingAppUid.Size();
-
- // Get the parameter isOverriddenSettings from IPC data
- TPckg<TBool> isOveriddenSettings( aIsOverriddenSettings );
- isOveriddenSettings.Copy( aData.Mid( pos, isOveriddenSettings.Size() ) );
- pos += isOveriddenSettings.Size();
-
- if ( aIsOverriddenSettings )
- {
- // Unpack the overridden settings
- TPckg<TBrowserOverriddenSettings> settingsPckg( *aSettings );
- settingsPckg.Copy( aData.Mid( pos, settingsPckg.Size() ) );
- pos += settingsPckg.Size();
- }
- else
- {
- // No overridden setings were put in IPC data
- aSettings = NULL;
- }
-
- // Get second parameters from IPC data
- TPckg<TInt> folderUidPckg( aFolderUid );
- folderUidPckg.Copy( aData.Mid( pos, folderUidPckg.Size() ) );
- pos += folderUidPckg.Size();
-
- // Get third parameters from IPC data
- TPckg<TBool> isContentHandlerRegistered( aIsContentHandlerRegistered );
- isContentHandlerRegistered.Copy( aData.Mid( pos, isContentHandlerRegistered.Size() ) );
- pos += isContentHandlerRegistered.Size();
-
- TPtrC8 remaining = aData.Mid( pos );
- aSeamlessParam.Set( (const TUint16*)remaining.Ptr(), remaining.Size()/2 );
- }
-// End of file