webengine/osswebengine/WebCore/platform/network/symbian/CookieHandler.h
changeset 0 dd21522fd290
child 40 8bfb9186a8b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/CookieHandler.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2006 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:  class definition for accessing cookies from script
+*
+*/
+
+
+#ifndef COOKIE_HANDLER_H
+#define COOKIE_HANDLER_H
+
+// System includes
+#include <e32base.h>
+
+// CONSTANTS
+
+const TUint8 KMaxNumOfTypes = 30;
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class RStringPool;
+class CCookie;
+class RStringF;
+class RCookieManager;
+// CLASS DECLARATION
+
+struct CookieRecord
+    {
+    CookieRecord():
+                  m_name(KNullDesC),m_nameValue(KNullDesC),m_expires(KNullDesC),
+                  m_pathName(KNullDesC),m_domainName(KNullDesC),m_secure(KNullDesC) {}
+    TPtrC m_name;
+    TPtrC m_nameValue;
+    TPtrC m_expires;
+    TPtrC m_pathName;
+    TPtrC m_domainName;
+    TPtrC m_secure;
+    };
+/**
+* This class encapsulates a cookie handler functions to be accessed from
+* ecma script, The following cookie fields are supported.
+*  "cookieName=cookieData;
+*  [;expires=timeInGmtString]
+*  [;path=pathName]
+*  [;domain=domainName]
+*  [;secure]"
+*/
+class CookieHandler
+    {
+    public :    // construction, destruction
+        /**
+        * Creates a new object.
+        * @return The constructed session.
+        */
+        static CookieHandler* init();
+
+        /**
+        * adds cookie ,
+        * @param aUrl ,document.url
+        * @param aCookieData,cookie buffer
+        */
+        void addCookie(const TDesC& aCookieData, const TDesC8& aUrl, const TDesC8& aPolicyBaseURL);
+
+        /**
+        * retrives all the cookies name and value pairs delimited by ';' and ' '
+        * @param aUrl ,document.url
+        * @return TText* cookies flattened on to the buffer.
+        */
+        TText* cookiesForUrl(const TDesC8& aUrl, TInt32& aLen);
+
+        /**
+        * Destructor.
+        */
+        virtual ~CookieHandler();
+
+    private :    // constructors
+        /**
+        * Constructor.
+        */
+        CookieHandler( );
+
+        /**
+        * ConstructL.
+        * @return None.
+        */
+        void constructL( );
+
+        void addCookieL(const TDesC& aCookieData, const TDesC8& aUrl, const TDesC8& aPolicyBaseURL);
+        TText* cookiesForUrlL(const TDesC8& aUrl, TInt32& aLen);
+
+        /**
+        * Auxillary function to convert 16 bit data to 8 bit.
+        * @return HBufC8 - 8 bit data.
+        */
+        HBufC8* unicodeToAsciiLC( const TDesC16& aString ) const;
+
+        /**
+        * Auxillary function to convert 8 bit data to 16 bit.
+        * @return HBufC16 - 16 bit data.
+        */
+        HBufC16* asciiToUnicodeLC( const TDesC8& aString ) const;
+
+        /**
+        * @param   the strings that are to be stored in stringpool
+                                            RStringF& aName,
+                                            RStringF& aNameValue,
+                                            RStringF& aExpires,
+                                            RStringF& aPath,
+                                            RStringF& aDomain,
+                                            RStringF& aVersion
+
+          @param const CookieRecord& aCookieRecord  , parsed cookie fields
+
+        * Initializes the string with values from CookieRecord structure.
+        */
+        void initAttributesForLongCookieLC( RStringF& aName,
+                                            RStringF& aNameValue,
+                                            RStringF& aExpires,
+                                            RStringF& aPath,
+                                            RStringF& aDomain,
+                                            RStringF& aVersion,
+                                            const CookieRecord& aCookieRecord) const;
+        /**
+        * Auxillary function to convert the cookie class to string . If the buffer is NULL
+        * then the value is not copied
+        * @param aCookieBuffer cookie buffer.to append the cooke  field strings
+        * @param aCookiesSize total size of the cookie string
+        */
+        void cookiesToStringL(HBufC8* aCookieBuffer, TInt& aCookiesSize);
+
+        /**
+        * Auxillary function to parse the cookie buffer and to extract the fields .
+        * @param aCookieField cookie field to be retrived .
+        * @param aCookieString cookie buffer.
+        * @param aEndIndex cosumed bytes from the buffer.
+        * @return TPtrC - descriptor to the field value.
+        */
+        TPtrC getCookieFieldValue(const TDesC& aCookieField,
+                                  const TPtrC& aCookieString ,
+                                  TInt& aEndIndex) const ;
+
+        /**
+        * Auxillary function to parse and assigns the cookie field structure.
+        * @param aCookieString cookie buffer.
+        * @param aCookieRecord cookie fields structure.
+        */
+        void parseCookieFieldsL( const TPtrC& aCookieString,
+                                 CookieRecord& aCookieRecord) const;
+    private :    // data members
+        RStringPool* m_stringPool ;// <<has
+        RPointerArray<CCookie> m_getCookies;// <<has
+        RCookieManager* m_cookieManager; // NOTE: should not use pointers to r-class, but RCookieManager
+                    // class doesn't provide a default constructor, too bad :(
+    };
+
+#endif