browserui/browser/BrowserAppSrc/BrowserPopupEngine.cpp
changeset 51 48e827313edd
parent 37 481242ead638
child 53 f427d27b98d8
--- a/browserui/browser/BrowserAppSrc/BrowserPopupEngine.cpp	Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,743 +0,0 @@
-/*
-* Copyright (c) 2002 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: 
-*      Implementation of popupblocking
-*
-*
-*/
-
-
-// INCLUDES
-#include <Uri16.h>
-#include "BrowserPopupEngine.h"
-#include <f32file.h>
-#include "logger.h"
-#include "BrowserUtil.h"
-
-// CONSTANTS
-_LIT( KWhiteListFileName, "bpopupwl.db" );
-_LIT( KWhiteTmpFileName, "bpopwtmp.db" );
-_LIT( KWhiteBkpFileName, "bpopbbkp.db" );
-_LIT( KEndMark, "\n" );
-const TInt KArrayGranularity = 10;
-const TInt KCacheSize = 32;//The maximum size of the memory cache
-const TInt KMaxDbSize = 16384;// (255/max length of the domain/+1/\n/)*64
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::CBrowserPopupEngine()
-// -----------------------------------------------------------------------------
-//
-CBrowserPopupEngine::CBrowserPopupEngine()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::~CBrowserPopupEngine
-// -----------------------------------------------------------------------------
-//
-CBrowserPopupEngine::~CBrowserPopupEngine()
-    {
-    iWhiteListFile.Flush();
-    iWhiteListFile.Close();
-    iFs.Close();
-    delete iCachedWhiteUrls;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::NewLC
-// -----------------------------------------------------------------------------
-//
-CBrowserPopupEngine* CBrowserPopupEngine::NewLC()
-    {
-    CBrowserPopupEngine* self = new (ELeave) CBrowserPopupEngine;
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::NewL
-// -----------------------------------------------------------------------------
-//
-CBrowserPopupEngine* CBrowserPopupEngine::NewL()
-    {
-    CBrowserPopupEngine* self = new (ELeave) CBrowserPopupEngine;
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::ConstructL()
-    {
-LOG_ENTERFN("CBrowserPopupEngine::ConstructL");
-    User::LeaveIfError(iFs.Connect());
-//open databases
-    BROWSER_LOG( ( _L( "<-Popup engine-> RFs Connected." ) ) );
-    OpenDatabaseL( &iWhiteListFile );
-    BROWSER_LOG( ( _L( "<-Popup engine-> white file opened." ) ) );
-//Create memory cache 
-    iCachedWhiteUrls = new(ELeave) CDesCArrayFlat(KArrayGranularity);
-    BROWSER_LOG( ( _L( "<-Popup engine-> Cache created." ) ) );
-    iCachedWhiteUrls->Reset();
-//Load some to memory cache
-    LoadUrlsToCacheL( &iWhiteListFile, iCachedWhiteUrls, &iWhiteCacheNo);
-    BROWSER_LOG( ( _L( "<-Popup engine-> Urls loaded to cache." ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::OpenDatabaseL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::OpenDatabaseL(RFile* aFile)
-    {
-LOG_ENTERFN("CBrowserPopupEngine::OpenDatabaseL");
-
-	__ASSERT_DEBUG( (aFile != NULL), Util::Panic( Util::EUninitializedData ));
-
-    TInt err;
-    RFile tmpFile;
-    TPtrC fileNamePtr;
-    TPtrC bkpFileNamePtr;
-    TBuf<KMaxFileName> privatePath;
-    TBuf<KMaxFileName> listFileName;
-    TBuf<KMaxFileName> bkpFileName;
-    TBuf<KMaxFileName> tmpFileName;
-    iFs.PrivatePath( privatePath );
-    listFileName.Copy( privatePath );
-    listFileName.Append( KWhiteListFileName );
-    bkpFileName.Copy( privatePath );
-    bkpFileName.Append( KWhiteBkpFileName );
-    tmpFileName.Copy( privatePath );
-    tmpFileName.Append( KWhiteTmpFileName );
-    err = aFile->Open( iFs, listFileName, EFileWrite | EFileStream | EFileShareExclusive );
-    BROWSER_LOG( ( _L( "<-Popup engine-> File open error: %d" ), err ) );
-    if ( err == KErrNotFound ) 
-        {
-        err = tmpFile.Open( iFs, bkpFileName, EFileWrite | EFileShareExclusive );
-        if( err != KErrNone )
-            {
-            err = aFile->Create( iFs, listFileName, EFileWrite | EFileShareExclusive );
-            BROWSER_LOG( ( _L( "<-Popup engine-> white file created." ) ) );
-            }
-        else 
-            {
-//check validity of tmp file if the last char is \n it is probably OK
-            if( !CheckDbValidity( &tmpFile ) )
-                {
-                User::LeaveIfError( 
-                    aFile->Create( iFs, listFileName, 
-                        EFileWrite | EFileShareExclusive ) );
-                }
-            else
-                {
-//rename tmp to origin
-                err = tmpFile.Rename( listFileName );
-                if(err == KErrNone)
-                    {
-                    tmpFile.Close();
-                    User::LeaveIfError(aFile->Open( iFs, listFileName, EFileWrite | EFileStream | EFileShareExclusive ) );
-                    }
-                else
-                    {
-                    User::LeaveIfError( 
-                        aFile->Create( iFs, listFileName, 
-                            EFileWrite | EFileShareExclusive ) );
-                    }
-                }
-            }
-        }
-    else if ( err == KErrPathNotFound )
-        {
-        User::LeaveIfError( iFs.CreatePrivatePath( EDriveC ) );
-        User::LeaveIfError(
-            aFile->Create( iFs, listFileName, EFileWrite | EFileShareExclusive ) );
-        }
-    else if((err != KErrInUse)&&( err != KErrNone ))
-        {
-        User::Leave(err);
-        }
-    else if( !CheckDbValidity( aFile ) )
-        {
-//if the file is not valid delete it and create a new one
-        aFile->Close();
-        User::LeaveIfError( iFs.Delete( listFileName ) );
-        User::LeaveIfError(
-            aFile->Create( iFs, listFileName, EFileWrite | EFileShareExclusive ) );
-        }
-//delete tmp and bkp files if they exist
-    iFs.Delete( tmpFileName );
-    iFs.Delete( bkpFileName );
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::AddUrlToWhiteListL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::AddUrlToWhiteListL(const TDesC& aUrl)
-    {
-LOG_ENTERFN("CBrowserPopupEngine::AddUrlToWhiteListL");
-    TUriParser16 urlParser;
-    BROWSER_LOG( ( _L( "<-Popup engine-> url to add to white list : %S" ), &aUrl ) );
-//check whether file allready exists in list
-    /*if( IsUrlOnWhiteListL( aUrl ) )
-        {
-        RDebug::Print(_L("<-Popup engine-> url is in white cache allready.\n"));
-        return;
-        }*/
-//get the domain from the url
-    urlParser.Parse(aUrl);
-    if( urlParser.IsSchemeValid() )
-        {
-//write domain to file
-        HandleUrlOrderChangeL( &iWhiteListFile, urlParser.Extract( EUriHost), EFalse, ETrue );
-//add domain to memory cache
-        AddUrlToCacheL( iCachedWhiteUrls, urlParser.Extract( EUriHost) );
-        }
-    else
-        {
-        User::Leave( KErrBadName );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::IsUrlOnWhiteListL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserPopupEngine::IsUrlOnWhiteListL(const TDesC& aUrl)
-    {
-LOG_ENTERFN("CBrowserPopupEngine::IsUrlOnWhiteListL");
-    TUriParser16 urlParser;
-    urlParser.Parse(aUrl);
-    if( !urlParser.IsSchemeValid() )
-        {
-        User::Leave( KErrBadName );
-        }
-//look for URL in memory cache
-    if( IsUrlInWhiteCacheL( urlParser.Extract( EUriHost) ) )
-        {
-        BROWSER_LOG( ( _L( "<-Popup engine-> url is in white cache." ) ) );
-        HandleUrlOrderChangeL( &iWhiteListFile, urlParser.Extract( EUriHost), ETrue, ETrue );
-        return ETrue;
-        }
-//look for URL in file
-    if( IsUrlInWhiteFileL( urlParser.Extract( EUriHost) ) )
-        {
-        HandleUrlOrderChangeL( &iWhiteListFile, urlParser.Extract( EUriHost), ETrue, ETrue );
-//if found and not in memory cache put it there
-        AddUrlToCacheL( iCachedWhiteUrls, urlParser.Extract( EUriHost) );
-        BROWSER_LOG( ( _L( "<-Popup engine-> url is in white file." ) ) );
-        return ETrue;
-        }
-    BROWSER_LOG( ( _L( "<-Popup engine-> url is not on white list." ) ) );
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::IsUrlInWhiteCacheL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserPopupEngine::IsUrlInWhiteCacheL(const TDesC& aUrl)
-    {
-    return IsUrlInCacheL( iCachedWhiteUrls, aUrl, iWhiteCacheNo );
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::IsUrlInWhiteFileL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserPopupEngine::IsUrlInWhiteFileL(const TDesC& aUrl)
-    {
-    return IsUrlInFileL( &iWhiteListFile , aUrl );
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::IsUrlInFileL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserPopupEngine::IsUrlInFileL(const RFile* aFile, const TDesC& aUrl)
-    {
-    
-   	__ASSERT_DEBUG( (aFile != NULL), Util::Panic( Util::EUninitializedData ));
-    
-    HBufC8* line = HBufC8::NewL( 256 );
-    CleanupStack::PushL( line );
-    HBufC8* parturl = HBufC8::NewL( 256 );
-    CleanupStack::PushL( parturl );
-    TInt match = 1;
-    TInt pos = 0;
-    TInt result;
-    TPtrC16 linePtr16;
-    HBufC8* url8 = TDesC16ToHBufC8LC( aUrl );
-    User::LeaveIfError( aFile->Seek( ESeekStart, pos ) );
-    TPtr8 linePtr = line->Des();
-    result = aFile->Read( linePtr );
-    parturl->Des().Zero();
-    while ( ( line->Des().Length() > 0 ) && ( result == KErrNone ) ) 
-        {
-        if(parturl->Des().Length() != 0 )
-            {
-            pos = linePtr.Locate( '\n' );
-            parturl->Des().Append( linePtr.Left( pos ) );
-            match = url8->Des().Compare( parturl->Des() );
-            if( match == 0 )
-                {
-                CleanupStack::PopAndDestroy( 3 );
-                return ETrue;
-                }
-            parturl->Des().Zero();
-            }
-        match = linePtr.Find( url8->Des() );
-        if( match == KErrNotFound )
-            {
-            pos = linePtr.LocateReverse( '\n' );
-            if(( linePtr.Length() != pos )&&( linePtr.Length() > 1 ))
-                {
-                parturl->Des().Append( linePtr.Mid( pos + 1, linePtr.Length() - pos - 1 ));
-                }
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy( 3 );
-            return ETrue;
-            }
-        result = aFile->Read( linePtr, 256 );
-        }
-    CleanupStack::PopAndDestroy( 3 );
-    User::LeaveIfError( result );
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::LoadUrlsToCacheL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::LoadUrlsToCacheL(const RFile* aFile, CDesCArrayFlat* aCacheArray, TInt* aLoadedUrlNo)
-    {
-LOG_ENTERFN( "PopupEngine::LoadUrlsToCacheL" );
-
-	__ASSERT_DEBUG( (aFile != NULL), Util::Panic( Util::EUninitializedData ));
-	__ASSERT_DEBUG( (aCacheArray != NULL), Util::Panic( Util::EUninitializedData ));
-	__ASSERT_DEBUG( (aLoadedUrlNo != NULL), Util::Panic( Util::EUninitializedData ));
-
-    TPtrC8 test;
-    HBufC8* line = HBufC8::NewL( 256 );
-    CleanupStack::PushL( line );
-    HBufC8* parturl = HBufC8::NewL( 256  );
-    CleanupStack::PushL( parturl );
-    TInt result;
-    TInt itemno = 0;
-    TInt offset = 0;
-    TInt prevOffset = 0;
-    TPtr8 linePtr = line->Des();
-    parturl->Des().Zero();
-    User::LeaveIfError( aFile->Seek( ESeekStart, offset ) );
-    result = aFile->Read( linePtr, 256 );
-    while ( ( line->Des().Length() > 0 ) &&( result == KErrNone ) && ( itemno < KCacheSize )) 
-        {
-        offset = linePtr.Locate('\n' );
-        if( parturl->Length() != 0 )
-            {
-            parturl->Des().Append( linePtr.Mid( prevOffset, offset ) );
-            aCacheArray->AppendL(  *TDesC8ToHBufC16LC( parturl->Des() ) );
-            CleanupStack::PopAndDestroy( );
-            prevOffset = prevOffset + offset +1;
-            itemno++;
-            if( itemno == KCacheSize )
-                {
-                break;
-                }
-            offset = ( linePtr.Right( linePtr.Length() - prevOffset ) ).Locate('\n');
-            }
-        while(( offset != KErrNotFound ) && ( itemno < KCacheSize ))
-            {
-            aCacheArray->AppendL( *TDesC8ToHBufC16LC( linePtr.Mid( prevOffset, offset ) ) );
-            CleanupStack::PopAndDestroy( );
-            prevOffset = prevOffset + offset +1;
-            itemno++;
-            offset = ( linePtr.Right( linePtr.Length() - prevOffset ) ).Locate('\n' );
-            }
-        if( prevOffset != linePtr.Length() )
-            {
-            parturl->Des().Zero();
-            parturl->Des().Append( linePtr.Right( linePtr.Length() - prevOffset ));
-            }
-        prevOffset = 0;
-        result = aFile->Read( linePtr, 256 );
-        }
-    *aLoadedUrlNo = itemno;
-    CleanupStack::PopAndDestroy( 2 );
-    User::LeaveIfError( result );
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::IsUrlInCacheL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserPopupEngine::IsUrlInCacheL( const CDesCArrayFlat* aCacheArray, const TDesC& aUrl, const TInt aLoadedurlno )
-    {
-LOG_ENTERFN("CBrowserPopupEngine::IsUrlInCacheL");
-
-	__ASSERT_DEBUG( (aCacheArray != NULL), Util::Panic( Util::EUninitializedData ));
-
-    TInt itemno=0;
-    BROWSER_LOG( ( _L( "<-Popup engine-> url to find in cache : %S" ), &aUrl ) );
-    while( ( itemno < aLoadedurlno ) && ( aUrl.Compare((*aCacheArray)[ itemno ]) != 0 ) )
-        {
-        itemno++;
-        }
-    if( itemno != aLoadedurlno )
-        {
-        BROWSER_LOG( ( _L( "<-Popup engine-> url found in cache" ) ) );
-        return ETrue;
-        }
-    BROWSER_LOG( ( _L( "<-Popup engine-> url not found in cache" ) ) );
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::AddUrlToCacheL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::AddUrlToCacheL( CDesCArrayFlat* aCacheArray, const TDesC& aUrl )
-    {
-LOG_ENTERFN("CBrowserPopupEngine::AddUrlToCacheL");
-
-	__ASSERT_DEBUG( (aCacheArray != NULL), Util::Panic( Util::EUninitializedData ));
-
-    if( iWhiteCacheNo < KCacheSize )
-        {
-        aCacheArray->AppendL( aUrl );
-        iWhiteCacheNo++;
-        BROWSER_LOG( ( _L( "<-Popup engine-> url added to cache : %S" ), &aUrl ) );
-        }
-    else
-        {
-        BROWSER_LOG( ( _L( "<-Popup engine-> url not added to cache : %S" ), &aUrl ) );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::TDesC16ToTPtrC8
-// -----------------------------------------------------------------------------
-//
-TPtrC8 CBrowserPopupEngine::TDesC16ToTPtrC8(const TDesC16 &aString)
-    {
-    TPtrC8 ptr8(reinterpret_cast<const TUint8*>(aString.Ptr()),(aString.Length()*2));
-    return ptr8;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::TDesC8ToTPtrC16
-// -----------------------------------------------------------------------------
-//
-TPtrC16 CBrowserPopupEngine::TDesC8ToTPtrC16(const TDesC8 &aString)
-    {
-    TPtrC16 ptr16(reinterpret_cast<const TUint16*>(aString.Ptr()),(aString.Length()/2));
-    return ptr16;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::HandleUrlOrderChange
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::HandleUrlOrderChangeL(RFile* aFile, const TDesC& aUrl, const TBool aExists,const TBool aToAdd )
-    {
-LOG_ENTERFN("CBrowserPopupEngine::HandleUrlOrderChangeL");
-
-	__ASSERT_DEBUG( (aFile != NULL), Util::Panic( Util::EUninitializedData ));
-
-    RFile tmpFile;
-    TInt err, match;
-    HBufC8* line = HBufC8::NewL( 256 );
-    CleanupStack::PushL( line );
-    HBufC8* parturl = HBufC8::NewL( 256 );
-    CleanupStack::PushL( parturl );
-    HBufC8* url8;
-    parturl->Des().Zero();
-    TPtr8 linePtr = line->Des();
-    TPtrC8 linePtrOffset;
-    TPtrC8 tmpPtr;
-    TInt result;
-    TInt pos = 0;
-    TInt offset;
-    TInt writtenSize = 0;
-    TBuf<KMaxFileName> privatePath;
-    TBuf<KMaxFileName> listFileName;
-    TBuf<KMaxFileName> bkpFileName;
-    TBuf<KMaxFileName> tmpFileName;
-//set the filenames
-    iFs.PrivatePath( privatePath );
-    listFileName.Copy( privatePath );
-    listFileName.Append( KWhiteListFileName );
-    bkpFileName.Copy( privatePath );
-    bkpFileName.Append( KWhiteBkpFileName );
-    tmpFileName.Copy( privatePath );
-    tmpFileName.Append( KWhiteTmpFileName );
-//create a tmp file
-    err = tmpFile.Create( iFs, tmpFileName, EFileWrite | EFileShareExclusive );
-    if( err != KErrNone )
-        {
-        RDebug::Print(_L("Creation of tmp file failed.\n"));
-        BROWSER_LOG( ( _L( "<-Popup engine-> Creation of tmp file failed." ) ) ); 
-        User::LeaveIfError( err );
-        }
-//convert url to 8bit
-    url8 = TDesC16ToHBufC8LC( aUrl );
-//add url to tmp file
-    if( aToAdd )
-        {
-//by url removal it is not needed to write the url
-        tmpFile.Seek( ESeekStart, pos );
-        tmpFile.Write( url8->Des() );
-        tmpFile.Write( *TDesC16ToHBufC8LC( KEndMark )  );
-        CleanupStack::PopAndDestroy();
-        tmpFile.Flush();
-        writtenSize = url8->Des().Size() + 1;
-        }
-//write all urls to tmp file except the if needed
-    parturl->Des().Zero();
-    User::LeaveIfError( aFile->Seek( ESeekStart, pos ) );
-    result = aFile->Read( linePtr, 256 );
-    linePtr.Set(line->Des());
-    writtenSize += linePtr.Length();
-    if ( aExists )
-       {
-       while ( ( line->Des().Length() > 0 ) &&( result == KErrNone ))
-            {
-            offset=0;
-//if there was a part of an url check it too
-            if( parturl->Length() != 0 )
-                {
-                offset = linePtr.Locate('\n' );
-                parturl->Des().Append( linePtr.Left( offset ) );
-                match = url8->Des().Compare( parturl->Des() );
-                if( match != 0 )
-                    {
-                    tmpFile.Write( parturl->Des() );
-                    tmpFile.Write( *TDesC16ToHBufC8LC( KEndMark )  );
-                    CleanupStack::PopAndDestroy();
-                    }
-                offset++;
-                parturl->Des().Zero();
-                }
-//find the new url in the old file
-            linePtrOffset.Set( linePtr.Right( linePtr.Length() - offset ));
-            match = linePtrOffset.Find( url8->Des()  );
-            if( match == KErrNotFound )
-                {
-                pos =  linePtrOffset.LocateReverse('\n' );
-//store the remaining part of the last url
-                if( pos != KErrNotFound )
-                    {
-                    if( pos == linePtrOffset.Length() -1 )
-                        {
-                        tmpFile.Write( linePtrOffset );
-                        }
-                    else
-                        {
-                        parturl->Des( ).Append( linePtrOffset.Mid( pos + 1, linePtrOffset.Length() - pos - 1 ));
-                        tmpFile.Write( linePtrOffset.Left( pos+1 ));
-                        }
-                    }
-                else if( linePtrOffset.Length() > 0 )
-                    {
-                    parturl->Des( ).Append( linePtrOffset );
-                    }
-                }
-            else
-                {
-                if( match == 0)
-                    {
-                    tmpFile.Write( linePtrOffset.Right( linePtrOffset.Length() - url8->Des().Length() - 1 ) );
-                    }
-                else
-                    {
-                    pos =  linePtrOffset.LocateReverse('\n' );
-                    tmpFile.Write( linePtrOffset, match );
-                    if( pos < linePtrOffset.Length() - 1  )
-                        {
-                        if( pos == linePtrOffset.Length() - url8->Des().Length() - 1 )
-                            {
-                            parturl->Des( ).Append( linePtrOffset.Right( url8->Des().Length() ) );
-                            }
-                        else//add to offset
-                            {
-                            tmpFile.Write( linePtrOffset.Right( linePtrOffset.Length() - match - url8->Des().Length() - 1 ) );
-                            }
-                        }
-                    }
-                }
-            result = aFile->Read( linePtr, 256 );
-            linePtr.Set(line->Des());
-            }
-       }
-    else
-        {
-//copy the whole file
-        while ( ( line->Des().Length() > 0 ) &&( result == KErrNone ))
-            {
-            result = tmpFile.Write( linePtr );
-            if ( result == KErrNone )
-                {
-                result = aFile->Read( linePtr, 256 );
-                linePtr.Set( line->Des() );
-                writtenSize += linePtr.Length();
-                if( writtenSize > KMaxDbSize )
-                    {
-                    offset = linePtr.Length();
-                    while( writtenSize > KMaxDbSize )
-                        {
-                        offset = linePtr.Left( offset ).LocateReverse('\n' );
-                        writtenSize -= linePtr.Length() - offset ;
-                        }
-                    tmpFile.Write( linePtr, offset );
-                    tmpFile.Write( *TDesC16ToHBufC8LC( KEndMark )  );
-                    CleanupStack::PopAndDestroy();
-                    break;
-                    }
-                }
-            }
-        }
-    tmpFile.Flush();
-//rename original file to bkp
-    User::LeaveIfError( aFile->Rename( bkpFileName ) );
-    aFile->Close();
-//rename temp file to original
-    User::LeaveIfError( tmpFile.Rename( listFileName ) );
-    tmpFile.Close();
-    User::LeaveIfError( aFile->Open( iFs, listFileName, EFileWrite | EFileStream | EFileShareExclusive ) );
-//delete bkp file
-    User::LeaveIfError( iFs.Delete( bkpFileName ) );
-    CleanupStack::PopAndDestroy( 3 );
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::RemoveUrlFromWhiteListL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::RemoveUrlFromWhiteListL(const TDesC& aUrl)
-    {
-LOG_ENTERFN("CBrowserPopupEngine::RemoveUrlFromWhiteListL");
-    TUriParser16 urlParser;
-    urlParser.Parse(aUrl);
-    if( !urlParser.IsSchemeValid() )
-        {
-        BROWSER_LOG( ( _L( "<-Popup engine-> Url is not valid." ) ) );
-        User::Leave( KErrBadName );
-        }
-    HandleUrlOrderChangeL( &iWhiteListFile, urlParser.Extract( EUriHost), ETrue, EFalse );
-    BROWSER_LOG( ( _L( "<-Popup engine-> Url removed from database." ) ) );
-    if( iWhiteCacheNo > 0)
-        {
-        RemoveUrlFromCacheL( iCachedWhiteUrls, urlParser.Extract( EUriHost), iWhiteCacheNo );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::RemoveUrlFromCacheL
-// -----------------------------------------------------------------------------
-//
-void CBrowserPopupEngine::RemoveUrlFromCacheL( CDesCArrayFlat* aCacheArray, const TDesC& aUrl, TInt &aCacheNo )
-    {
-LOG_ENTERFN("CBrowserPopupEngine::RemoveUrlFromCacheL");
-
-	__ASSERT_DEBUG( (aCacheArray != NULL), Util::Panic( Util::EUninitializedData ));
-
-    TInt pos;
-    TInt ret;
-    ret = aCacheArray->Find( aUrl, pos );
-    if( ret == 0 )
-        {
-        aCacheArray->Delete( pos );
-        aCacheArray->Compress();
-        aCacheNo--;
-        BROWSER_LOG( ( _L( "<-Popup engine-> Url is found in cache and removed." ) ) );
-        }
-    else
-        {
-        BROWSER_LOG( ( _L( "<-Popup engine-> Url is not in cache." ) ) );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::CheckDbValidity
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserPopupEngine::CheckDbValidity(RFile* aFile)
-{
-LOG_ENTERFN("CBrowserPopupEngine::CheckDbValidity");
-
-	__ASSERT_DEBUG( (aFile != NULL), Util::Panic( Util::EUninitializedData ));
-
-    TInt size;
-    TBuf8<1> tmp;
-    aFile->Size( size );
-    if( size == 0)
-        {
-//empty file is ok
-        BROWSER_LOG( ( _L( "<-Popup engine-> File is valid." ) ) );
-        return ETrue;
-        }
-    else
-        {
-//check whether the last char is \n
-        size = -1;
-        aFile->Seek( ESeekEnd, size );
-        aFile->Read( tmp, 1 );
-        if( tmp.Compare( *TDesC16ToHBufC8LC( KEndMark ) ) == 0 )
-            {
-            CleanupStack::PopAndDestroy( );
-            BROWSER_LOG( ( _L( "<-Popup engine-> File is valid." ) ) );
-            return ETrue;
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy( );
-            BROWSER_LOG( ( _L( "<-Popup engine-> File is not valid." ) ) );
-            return EFalse;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::ConvertTDesC16ToHBufC8LC
-// -----------------------------------------------------------------------------
-//
-HBufC8 *CBrowserPopupEngine::TDesC16ToHBufC8LC(const TDesC16 &string)
-    {
-    HBufC8 *buff = HBufC8::NewLC(string.Length());
-    buff->Des().Copy(string);
-    return buff;
-    }
-
-// -----------------------------------------------------------------------------
-// CBrowserPopupEngine::TDesC8ToHBufC16LC
-// -----------------------------------------------------------------------------
-//
-HBufC16 *CBrowserPopupEngine::TDesC8ToHBufC16LC(const TDesC8 &aString)
-    {
-    HBufC16 *buff = HBufC16::NewLC(aString.Length());
-    buff->Des().Copy(aString);
-    return buff;
-    }
-
-// End of File