diff -r 73e95e652591 -r 9015645363c8 httpfilters/cookie/ManagerSrc/CookieManagerClient.cpp --- a/httpfilters/cookie/ManagerSrc/CookieManagerClient.cpp Wed Apr 14 16:31:08 2010 +0300 +++ b/httpfilters/cookie/ManagerSrc/CookieManagerClient.cpp Tue Apr 27 17:12:14 2010 +0300 @@ -49,7 +49,7 @@ // --------------------------------------------------------- // EXPORT_C RCookieManager::RCookieManager( RStringPool aStringPool ) -: iStringPool( aStringPool ), iCookiePacker( iStringPool ) +: iStringPool( aStringPool ),iCookieMgrData(NULL) { CLOG(( EClient, 0, _L(" ") )); CLOG(( EClient, 0, _L("*****************") )); @@ -81,7 +81,10 @@ EXPORT_C TInt RCookieManager::Connect() { CLOG( ( EClientConnect, 0, _L( "-> RCookieManager::Connect" ) ) ); - CCookieClientDataArray::GetInstance()->Ref(); + iCookieMgrData = new TCookieMgrInternalStruct(iStringPool); + if (!(iCookieMgrData && iCookieMgrData->Init() == KErrNone)) + return KErrNoMemory; + TInt error = KErrNone; RProcess server; error = server.Create( KCookieServerExe, TPtr( NULL, 0 ), @@ -185,8 +188,9 @@ { CLOG( ( EClient, 0, _L( "-> RCookieManager::GetCookiesL" ) ) ); TBool cookiefound(EFalse); - CCookieClientDataArray* cookieclientdataarray = CCookieClientDataArray::GetInstance(); - if(cookieclientdataarray) // redundant check + CCookieClientDataArray* cookieclientdataarray = iCookieMgrData->GetCookieClientDataArray(); + + if(cookieclientdataarray) { TInt clientarraycount = cookieclientdataarray->Count(); if ( clientarraycount!=0 ) @@ -217,8 +221,7 @@ // it seems this is the only place where we cannot avoid leaving // ==> we allocate memory for cookies when we fill up the cookie array. - iCookiePacker.UnpackCookiesFromBufferL( *buf, aCookies ); - + iCookieMgrData->GetCookiePacker().UnpackCookiesFromBufferL( *buf, aCookies ); TInt count = aCookies.Count(); TInt i = 0; TBool anyCookie2( EFalse ); @@ -254,7 +257,7 @@ const TUriC8& aUri ) { CLOG( ( EClient, 0, _L( "-> RCookieManager::StoreCookie" ) ) ); - + StoreCookieAtClientSide(&aCookie,aUri.UriDes()); TInt err; TInt cookieSize = aCookie.Size( EFalse ); @@ -266,11 +269,11 @@ cookieSize ) ); TPtr8 bufDes( buf->Des() ); - err = iCookiePacker.CliPackCookie( bufDes, aCookie ); + err = iCookieMgrData->GetCookiePacker().CliPackCookie( bufDes, aCookie ); if ( !err ) { //Appuid value only takes 8 chars - HBufC* appbuf = HBufC::New(8); // harendra: 8 chars needed + HBufC* appbuf = HBufC::New(8); TPtr ptr(appbuf->Des()); TUint32 appUid(0); ptr.AppendNum(appUid,EHex); @@ -315,7 +318,7 @@ { CLOG(( EClient, 0, _L("->RCookieManager::SetAppUid") )); TUint32 groupid = RProcess().SecureId().iId; - CCookieClientData* cookieclientdata = CCookieClientDataArray::GetInstance()->Find(groupid, const_cast (aAppUid)); + CCookieClientData* cookieclientdata = iCookieMgrData->GetCookieClientDataArray()->Find(groupid, const_cast (aAppUid)); if(cookieclientdata) { cookieclientdata->SetWidgetUid(aAppUid); @@ -324,9 +327,9 @@ { TBool cookieSharableFlag(EFalse); TInt err = GetCookieSharableFlagFromServer(cookieSharableFlag); - CCookieClientData* cookieclientdata = CCookieClientData::NewL(groupid, aAppUid, cookieSharableFlag,ETrue); + cookieclientdata = CCookieClientData::NewL(groupid, aAppUid, cookieSharableFlag,ETrue); cookieclientdata->SetInitFlag(ETrue); - CCookieClientDataArray::GetInstance()->AddClientGroupDataL(cookieclientdata); + iCookieMgrData->GetCookieClientDataArray()->AddClientGroupDataL(cookieclientdata); } //Appuid value only takes 8 chars HBufC* buf = HBufC::NewLC(8); @@ -345,9 +348,10 @@ EXPORT_C void RCookieManager::Close() { CLOG(( EClient, 0, _L("-> RCookieManager::Close") )); - CCookieClientDataArray::GetInstance()->DeRef(); TInt deletestatus =0; DestroyCookiesFromMemory(deletestatus); + delete iCookieMgrData; + iCookieMgrData = NULL; CLOG(( EClient, 0, _L("-> RCookieManager::Close deletestatus = %d"), deletestatus )); RSessionBase::Close(); CLOG(( EClient, 0, _L("<- RCookieManager::Close") )); @@ -372,7 +376,7 @@ cookieSize ) ); TPtr8 bufDes( buf->Des() ); - err = iCookiePacker.CliPackCookie( bufDes, aCookie ); + err = iCookieMgrData->GetCookiePacker().CliPackCookie( bufDes, aCookie ); if ( !err ) { @@ -407,7 +411,7 @@ { CLOG( ( EClient, 0, _L( "-> RCookieManager::GetCookiesL" ) ) ); TBool cookiefound(EFalse); - CCookieClientDataArray* cookieclientdataarray = CCookieClientDataArray::GetInstance(); + CCookieClientDataArray* cookieclientdataarray = iCookieMgrData->GetCookieClientDataArray(); if(cookieclientdataarray) { TInt clientarraycount = cookieclientdataarray->Count(); @@ -425,7 +429,6 @@ CLOG( ( EClient, 0, _L( "-> RCookieManager::GetClientSideCookies:" ) ) ); //Gets the Cookie objects for aUri in case it is present - //TInt clerr = cookieclientdata->GetClientSideCookies(aUri,aCookies,cookiefound); TInt clerr = GetClientSideCookies(aUri,aCookies,cookiefound,aAppUid); CLOG( ( EClient, 0, _L( "RCookieManager::GetClientSideCookies:cookiefound = %d" ), cookiefound ) ); @@ -451,8 +454,7 @@ // it seems this is the only place where we cannot avoid leaving // ==> we allocate memory for cookies when we fill up the cookie array. - iCookiePacker.UnpackCookiesFromBufferL( *buf, aCookies ); - + iCookieMgrData->GetCookiePacker().UnpackCookiesFromBufferL( *buf, aCookies ); TInt count = aCookies.Count(); for(TInt j=0; j RCookieManager::ClearCookies") )); //Client side cookie deletion specific to a appuid - CCookieClientDataArray::GetInstance()->DestroyClientData(aAppUid); + iCookieMgrData->GetCookieClientDataArray()->DestroyClientData(aAppUid); //Server side Cookie deletion specific to a appuid //Appuid value only takes 8 chars HBufC* buf = HBufC::NewLC(8); @@ -514,8 +516,19 @@ { CLOG( ( EClient, 0, _L( "-> RCookieManager::StoreCookieAtClientSide" ) ) ); TUint32 groupid = RProcess().SecureId().iId; - CCookieClientDataArray* cookieclientdataarray = CCookieClientDataArray::GetInstance(); + CCookieClientDataArray* cookieclientdataarray = iCookieMgrData->GetCookieClientDataArray(); + CCookieClientData* cookieclientdata(NULL); TInt count = cookieclientdataarray->Count(); + if (count == 0) + { + TBool cookieSharableFlag(EFalse); + TInt err = GetCookieSharableFlagFromServer(cookieSharableFlag); + cookieclientdata = CCookieClientData::NewL(groupid, aWidgetUid, cookieSharableFlag,ETrue); + cookieclientdata->SetInitFlag(ETrue); + cookieclientdataarray->AddClientGroupDataL(cookieclientdata); + cookieclientdata->StoreCookieAtClientSideL(aCookie,aUri); + return; + } TInt itemIndex =0; for(TInt i=0; iAt(itemIndex); + cookieclientdata = cookieclientdataarray->At(itemIndex); cookieclientdata->StoreCookieAtClientSideL(aCookie,aUri); CLOG( ( EClient, 0, _L( "<- RCookieManager::StoreCookieAtClientSide" ) ) ); } @@ -547,9 +560,8 @@ { CLOG( ( EClient, 0, _L( "-> RCookieManager::GetClientSideCookies" ) ) ); TUint32 groupid = RProcess().SecureId().iId; - //TInt itemIndex =0; CCookieClientData* cookieclientdata = NULL; - CCookieClientDataArray* cookieclientdataarray = CCookieClientDataArray::GetInstance(); + CCookieClientDataArray* cookieclientdataarray = iCookieMgrData->GetCookieClientDataArray(); TInt count = cookieclientdataarray->Count(); if (count == 0) { @@ -560,7 +572,6 @@ cookieclientdataarray->AddClientGroupDataL(cookieclientdata); } else { - //harendra: move this for loop in CCookieClientDataArray::Find(), it should index or object cookieclientdata = cookieclientdataarray->Find(groupid, aWidgetUid); } if(cookieclientdata) @@ -571,7 +582,6 @@ TInt err = GetCookieSharableFlagFromServer(cookieSharableFlag); cookieclientdata->SetCookieCookieSharableFlag(cookieSharableFlag); } - //cookieclientdata->SetInitFlag(ETrue); return cookieclientdata->GetClientSideCookies( aRequestUri,aCookies, aCookieFound ); } else { @@ -588,4 +598,18 @@ return KErrNone; } +RCookieManager::TCookieMgrInternalStruct::~TCookieMgrInternalStruct() + { + delete iCookieClientDataArray; + } + +TInt RCookieManager::TCookieMgrInternalStruct::Init() + { + iCookieClientDataArray = CCookieClientDataArray::New(); + if (iCookieClientDataArray) + return KErrNone; + return KErrNoMemory; + + } + // End of file