httpfilters/cookie/ManagerSrc/Cookie.cpp
branchRCL_3
changeset 15 bdd8a827a7de
parent 11 8f055b80aa5b
--- a/httpfilters/cookie/ManagerSrc/Cookie.cpp	Wed Jun 09 10:16:57 2010 +0300
+++ b/httpfilters/cookie/ManagerSrc/Cookie.cpp	Mon Jun 21 16:17:02 2010 +0300
@@ -181,11 +181,11 @@
 // CCookie::NewL
 // ---------------------------------------------------------
 //
-CCookie* CCookie::CloneL( const CCookie& aCopy )
+CCookie* CCookie::CloneL( const CCookie& aCopy,const TDesC8& aDomain,const TDesC8& aPath, const TDesC8& aPort)
     {
     CCookie* self = new(ELeave) CCookie( aCopy.iStringPool );
     CleanupStack::PushL( self );
-    self->CopyFromL( aCopy );
+    self->CopyFromL( aCopy, aDomain, aPath, aPort);
     CleanupStack::Pop( self );
     return self;
     }
@@ -444,11 +444,13 @@
 // CCookie::CopyFromL
 // ---------------------------------------------------------
 //
-void CCookie::CopyFromL( const CCookie& aCopyFrom  )
+void CCookie::CopyFromL( const CCookie& aCopyFrom, const TDesC8& aDomain, const TDesC8& aPath, const TDesC8& aPort  )
     {
     CLOG( ( ECookie, 0, _L( "-> CCookie::CopyFromL ") ) );
+    TBool defaultDiscard( EFalse );
     THTTPHdrVal attributevalue;
     TBool defaulted( EFalse );
+    iSetCookie2 = aCopyFrom.iSetCookie2;
     if ( aCopyFrom.Attribute( EName, attributevalue, defaulted ) != KErrNotFound )
         {
         if ( attributevalue.Type() != THTTPHdrVal::KStrVal )
@@ -463,6 +465,8 @@
         else 
             {
             SetAttribute( EName, attributevalue, defaulted );    
+            const TPtrC8 pVal( attributevalue.Str().DesC() );
+            CLOG( ( ECookie, 0, _L8( "CCookie::CopyFromL - attribute EName Value : %S" ), &pVal ) );
             }
         }
 
@@ -479,69 +483,157 @@
             }
          else
              {
-             SetAttribute( EValue, attributevalue, defaulted );             
+             SetAttribute( EValue, attributevalue, defaulted );
+             const TPtrC8 pVal( attributevalue.Str().DesC() );
+             CLOG( ( ECookie, 0, _L8( "CCookie::CopyFromL - attribute EValue Value : %S" ), &pVal ) );
              }
         }
-	if ( aCopyFrom.Attribute( EComment, attributevalue, defaulted ) != KErrNotFound )
-        {
-        SetAttribute( EComment, attributevalue, defaulted );
-        }
-
-	if ( aCopyFrom.Attribute( ECommentURI, attributevalue, defaulted ) != KErrNotFound )
-        {
-        SetAttribute( ECommentURI, attributevalue, defaulted );
-        }
-
-	if ( aCopyFrom.Attribute( EDiscard, attributevalue, defaulted ) != KErrNotFound )
+    if ( aCopyFrom.Attribute( EVersion, attributevalue, defaulted ) != KErrNotFound )
         {
-        SetAttribute( EDiscard, attributevalue, defaulted );
+        SetAttribute( EVersion, attributevalue, defaulted );    
+        SetFromNetscape( EFalse );
         }
-
-	if ( aCopyFrom.Attribute( EDomain, attributevalue, defaulted ) != KErrNotFound )
+    else
         {
-        SetAttribute( EDomain, attributevalue, defaulted );
-        }
-
-	if ( aCopyFrom.Attribute( EMaxAge, attributevalue, defaulted ) != KErrNotFound )
-        {
-        SetAttribute( EMaxAge, attributevalue, defaulted );
+        SetFromNetscape( ETrue );
         }
 
-	if ( aCopyFrom.Attribute( EPath, attributevalue, defaulted ) != KErrNotFound )
-        {
-        SetAttribute( EPath, attributevalue, defaulted );
-        }
-
-	if ( aCopyFrom.Attribute( EPort, attributevalue, defaulted ) != KErrNotFound )
+    if ( aCopyFrom.Attribute( EPath, attributevalue, defaulted ) != KErrNotFound )
         {
-        SetAttribute( EPort, attributevalue, defaulted );
+         if ( attributevalue.Type() != THTTPHdrVal::KStrFVal )
+             {
+             SetAttribute( EPath, attributevalue, defaulted );    
+             }
         }
-
-	if ( aCopyFrom.Attribute( ESecure, attributevalue, defaulted ) != KErrNotFound )
+    else
         {
-        SetAttribute( ESecure, attributevalue, defaulted );
+        // defaulting
+        RStringF defPath = iStringPool.OpenFStringL( aPath );
+        THTTPHdrVal defPathVal( defPath );
+        SetAttribute( EPath, defPathVal, ETrue );// ignore the result 
+        defPath.Close();
         }
-
-	if ( aCopyFrom.Attribute( EVersion, attributevalue, defaulted ) != KErrNotFound )
-        {
-        SetAttribute( EVersion, attributevalue, defaulted );
-        }
-
-	if ( aCopyFrom.Attribute( EExpires, attributevalue, defaulted ) != KErrNotFound )
-        {
-        SetAttribute( EExpires, attributevalue, defaulted );
-        }
-		
-	TTime nowTime;
-    nowTime.UniversalTime();
-    TDateTime attrTime = nowTime.DateTime();
-    THTTPHdrVal attributeVal( attrTime );
-    SetAttribute( EDate, attributeVal, defaulted );
+    if ( aCopyFrom.Attribute( EDomain, attributevalue, defaulted ) != KErrNotFound )
+          {
+          if ( attributevalue.Type() != THTTPHdrVal::KStrFVal )
+              {
+              SetAttribute( EDomain, attributevalue, defaulted );    
+              }
+          }
+    else
+       {
+         // Default handling 
+         // in this case the default is the effective request host        
+         RStringF defDomain = iStringPool.OpenFStringL( aDomain );
+         THTTPHdrVal defdomVal( defDomain );
+         SetAttribute( EDomain, defdomVal, ETrue );// ignore the result 
+         defDomain.Close();
+       }
+  
+    
+    if ( aCopyFrom.Attribute( ESecure, attributevalue, defaulted ) != KErrNotFound )
+	      {
+            SetAttribute( ESecure, attributevalue, defaulted );    
+	      }
+    if (iNetscape)
+         {
+         if ( aCopyFrom.Attribute( EExpires, attributevalue, defaulted ) != KErrNotFound )
+              {
+                  SetAttribute( EExpires, attributevalue, defaulted );    
+              }
+         else if ( aCopyFrom.Attribute( EComment, attributevalue, defaulted ) != KErrNotFound ||
+                           aCopyFrom.Attribute( EMaxAge, attributevalue, defaulted ) != KErrNotFound )
+             {
+             iNetscape = EFalse;
+             }
+         }
+     if ( aCopyFrom.Attribute( EDate, attributevalue, defaulted ) != KErrNotFound )
+          {
+          TDateTime attrTime = attributevalue.DateTime();
+          THTTPHdrVal attributeVal( attrTime );
+          SetAttribute( CCookie::EDate, attributeVal, defaulted );
+          }
+     else
+         {
+           TTime nowTime;
+           nowTime.UniversalTime();
+           TDateTime attrTime = nowTime.DateTime();
+           THTTPHdrVal attributeVal( attrTime );
+           SetAttribute( EDate, attributeVal, defaulted );
+         }
+     if (iNetscape == EFalse)
+         {
+         if ( aCopyFrom.Attribute( EComment, attributevalue, defaulted ) != KErrNotFound )
+             {
+             SetAttribute( EComment, attributevalue );
+             }
+         else
+             {
+             
+             }
+         if ( aCopyFrom.Attribute( EMaxAge, attributevalue, defaulted ) != KErrNotFound)
+             {
+             SetAttribute( EMaxAge, attributevalue );
+             }
+         else
+             {
+              if(iSetCookie2)
+                  {
+                  defaultDiscard = ETrue;
+                  }
+             }
+         if(iSetCookie2)
+             {
+             if ( aCopyFrom.Attribute( ECommentURI, attributevalue, defaulted ) != KErrNotFound )
+                 {
+                 SetAttribute( ECommentURI, attributevalue, defaulted );
+                 }
+             else
+                 {
+                 
+                 }
+             if ( aCopyFrom.Attribute( EDiscard, attributevalue, defaulted ) != KErrNotFound )
+                  {
+                      SetAttribute( EDiscard, attributevalue, defaulted );    
+                  }
+             else
+                {
+                 if (defaultDiscard)
+                     {
+                     RStringF emptyStr = iStringPool.OpenFStringL( KNullDesC8() );
+                     THTTPHdrVal emptyVal( emptyStr );
+                     SetAttribute( EDiscard, emptyVal, ETrue );
+                     emptyStr.Close();
+                     }
+                 if (aCopyFrom.Attribute( EPort, attributevalue, defaulted ) != KErrNotFound)
+                     {
+                     SetAttribute( EPort, attributevalue, ETrue );    // ignore the result of this method
+                     }
+                 else
+                     {
+                     RStringF requestPort;
+                     if(!aPort.Compare(KNullDesC8()))
+                         {
+                         requestPort = iStringPool.OpenFStringL( aPort );
+                         }
+                     else
+                         {
+                         requestPort = iStringPool.OpenFStringL( KCookieDefaultRequestPort() );
+                         }
+                     THTTPHdrVal portVal( requestPort );
+                     SetAttribute( EPort, portVal, ETrue );
+                     requestPort.Close();
+                     }
+                }
+             
+             }
+             
+         }
+	
 
     //SetCookie2( aCopyFrom.FromCookie2() );
     // Other properties
-    iSetCookie2 = aCopyFrom.iSetCookie2;
-    iNetscape = aCopyFrom.iNetscape;
+    
     iSize = aCopyFrom.iSize;
     iReceivedTime = aCopyFrom.iReceivedTime;
     CLOG( ( ECookie, 0, _L( "<- CCookie::CopyFromL ") ) );
@@ -1034,7 +1126,7 @@
 
 	iSetCookie2 = ( aFieldName == setCookie2Name );
 
-    TBool DefaultDiscard( EFalse );
+    TBool defaultDiscard( EFalse );
 
 	THTTPHdrVal hVal;
 
@@ -1237,7 +1329,7 @@
             // in case of SetCookie2, also set Discard, defaulted
             if ( iSetCookie2 )
                 {
-                DefaultDiscard = ETrue;
+                defaultDiscard = ETrue;
                 }
            }
 
@@ -1275,7 +1367,7 @@
                 { // Add default handling if applies
 		        // no defaulting for EDiscard
                 // only if it is caused by MAx-Age beeing not supplied
-                if ( DefaultDiscard )
+                if ( defaultDiscard )
                     {
 		            RStringF emptyStr = iStringPool.OpenFStringL( KNullDesC8() );
                     THTTPHdrVal emptyVal( emptyStr );