webengine/osswebengine/WebCore/platform/network/symbian/SelfDownloadContentHandler.h
changeset 0 dd21522fd290
child 17 c8a366e56285
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/SelfDownloadContentHandler.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,193 @@
+/*
+* Copyright (c) 2007 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:  
+*
+*/
+
+
+#ifndef SELFDOWNLOADCONTENTHANDLER_H
+#define SELFDOWNLOADCONTENTHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <apparc.h>
+#include <http/rhttptransaction.h>
+#include <http/MHTTPTransactionCallback.h>
+#include <f32file.h>
+
+_LIT8( KSelfDownloadCallback, "SelfDownloadCallback" );
+
+// FORWARD DECLARATIONS
+class CDocumentHandler;
+class TDataType;
+class MBrCtlSpecialLoadObserver;
+class WebFrame;
+namespace WebCore {
+    class ResourceHandle;
+    struct ResourceRequest;
+    class ResourceResponse;
+}
+
+// CLASS DECLARATION
+
+/**
+*
+*  @lib 
+*  @since 3.0
+*/
+class CTempFile : public CBase
+    {
+    public:   // Constructors and destructor
+
+        /**
+          * Two-phased constructor.
+          */
+        static CTempFile* NewL(HBufC* aFileName = NULL);
+
+        /**
+        * Destructor.
+        */
+        ~CTempFile( void );
+
+    public:  // New functions
+
+        /**
+        *
+        * @since 3.0
+        * @param
+        * @return number of bytes written
+        */
+        TInt WriteL( const TDesC8& aFileData );
+
+        /**
+        *
+        * @since 3.0
+        * @param
+        * @return number of bytes written
+        */
+        void CloseL( void );
+
+        /**
+        *
+        * @since 3.0
+        * @param
+        * @return void
+        */
+        const TDesC& Name( void ) const;
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CTempFile( void );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL(HBufC* aFileName);
+
+    public:      // Data
+
+    protected:   // Data
+
+    private:     // Data
+
+        HBufC* iFileName;
+
+        RFs iFsSession;
+        
+        RFile iFile;
+       
+    };
+
+
+/**
+*
+*  @since 5.0
+*/
+class SelfDownloadContentHandler : public MHTTPTransactionCallback
+    {
+    public:  // Constructors and destructor        
+        
+        /**
+        * Two-phased constructor.
+        */
+        static SelfDownloadContentHandler* NewL(WebFrame* webFrame, TDesC& selfDownloadTypes);
+        
+        /**
+        * Destructor.
+        */
+        virtual ~SelfDownloadContentHandler();
+
+    public: // from MHTTPTransactionCallback
+
+        void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
+
+        TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
+
+    public: // New functions
+    
+        TInt IsSupported(const WebCore::ResourceRequest& request,
+            const WebCore::ResourceResponse& response, RHTTPTransaction& httpTransaction);
+
+        TInt HandleResponseHeadersL(const WebCore::ResourceRequest& request,
+            const WebCore::ResourceResponse& response, RHTTPTransaction& httpTransaction);
+
+        TInt HandleResponseBodyL(RHTTPTransaction& httpTransaction);
+
+        TInt ResponseCompleteL(RHTTPTransaction httpTransaction, TInt error);
+        //This method reinitialize the special loader reference this static class.
+        void ReinitializeSpecialLoadObserver(WebFrame* webFrame);
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        SelfDownloadContentHandler(WebFrame* webFrame);
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL(WebFrame* webFrame, TDesC& selfDownloadTypes);
+
+        void HandleError(/* TInt aTransactionId,*/ TInt aError);
+
+        TBool IsSelfDownloadContent(TDesC& contentType);
+
+//        TBool RecognizeContentTypeL(TPtr aContentType);
+
+    private:    // Data
+
+        WebFrame* m_WebFrame;
+        //
+        // file containing the response content - this should be deleted
+        // and a new one created for each response.
+        CTempFile*      m_ContentFile;                      // owned
+        //
+        HBufC*          m_ContentType;                      // owned
+        //
+        HBufC*          m_Charset;                          // owned
+        //
+        HBufC*          m_ReqUrl;                           // owned
+        //
+        MBrCtlSpecialLoadObserver* m_SpecialLoadObserver;   // not owned
+        //
+        HBufC*          m_SelfDlMimeTypes;                  // owned
+    };
+
+#endif      // SELFDOWNLOADCONTENTHANDLER_H
+            
+// End of File