diff -r 92a765b5b3e7 -r 91031d3aab7d webengine/wmlengine/src/xhtml/include/XhtmlObjectElementHandler.h --- a/webengine/wmlengine/src/xhtml/include/XhtmlObjectElementHandler.h Mon May 03 13:32:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,339 +0,0 @@ -/* -* Copyright (c) 2003 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: Handles object tags in XHTML documents. -* -*/ - - - -#ifndef CXHTMLOBJECTELEMENTHANDLER__H -#define CXHTMLOBJECTELEMENTHANDLER__H - -// INCLUDES -#include -#include - -#include "nwx_defs.h" -#include "nw_dom_node.h" - -#include "HedLoadObserver.h" -#include "LMgrBoxDestructionListener.h" -#include "ObjectUtils.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef struct NW_HED_ContentHandler_s NW_HED_ContentHandler_t; -typedef struct NW_XHTML_ContentHandler_s NW_XHTML_ContentHandler_t; -typedef struct NW_XHTML_ElementHandler_s NW_XHTML_ElementHandler_t; -typedef struct NW_LMgr_ContainerBox_s NW_LMgr_ContainerBox_t; -typedef struct NW_LMgr_Box_s NW_LMgr_Box_t; -typedef struct NW_Evt_Event_s NW_Evt_Event_t; -typedef struct NW_Text_Abstract_s NW_Text_t; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -// CLASS DECLARATION - -// TODO: This class should be derived from CElementHandler once the browser is -// converted to c++. - -class CXHTMLObjectElementHandler : public CBase, public MLMgrBoxDestructionListener, - public MHEDLoadObserver - { - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CXHTMLObjectElementHandler* NewL(const NW_XHTML_ElementHandler_t* aElementHandler, - NW_XHTML_ContentHandler_t* aContentHandler, NW_DOM_ElementNode_t* aElementNode); - - /** - * Destructor. - */ - virtual ~CXHTMLObjectElementHandler(); - - - public: // Functions from MLMgrBoxDestructionListener - /** - * Recieves notifications when the box has been destroyed. - * - * @since 2.6 - * @return void - */ - void Destroyed(); - - - public: // MHEDLoadObserver - /** - * Passes a HEAD response to the observer. - * - * @param aTransactionId the transaction id. - * @param aResponse the HEAD response to be processed. - * @param aUrlRequest the url request. - * @param aClientData the client data past with the request. - * @return void. - */ - void HeadCompleted(TUint16 aTransactionId, const NW_Url_Resp_t& aResponse, - const NW_HED_UrlRequest_t& aUrlRequest, void* aClientData); - - /** - * Passes a chunk of a response to the observer. - * - * @param aTransactionId the transaction id. - * @param aChunkIndex the chunk count of this call, aChunkIndex > 0 - * @param aResponse the HEAD response to be processed. - * @param aUrlRequest the url request. - * @param aClientData the client data past with the request. - * @return void. - */ - void ChunkReceived(TUint16 aTransactionId, TUint32 aChunkIndex, - const NW_Url_Resp_t& aResponse, const NW_HED_UrlRequest_t& aUrlRequest, - void* aClientData); - - /** - * Called when a response completes successfully or in error. - * - * @param aStatusClass the type of status-code found in aStatus -- - BRSR_STAT_CLASS_HTTP or BRSR_STAT_CLASS_GENERAL. - * @param aStatus the final load status of the request. - * @param aTransactionId the transaction id. - * @param aUrlRequest the url request. - * @param aClientData the client data past with the request. - * @return void. - */ - void LoadCompleted(TInt16 aStatusClass, TBrowserStatusCode aStatus, - TUint16 aTransactionId, const NW_HED_UrlRequest_t& aUrlRequest, - void* aClientData); - - - public: // New Methods - /** - * Initializes the ElementHandler. - * - * @return status code - */ - virtual TBrowserStatusCode Initialize(void); - - /** - * Creates the box-tree associated with the tag. - * - * @param aParentBox the parent to attach the new box-tree to. - * @return status code - */ - virtual TBrowserStatusCode CreateBoxTree(NW_LMgr_ContainerBox_t& aParentBox); - - /** - * Processes events targeted at boxes created by the ElementHandler. - * - * @param aBox the target box. - * @param aEvent the event. - * @return NW_LMgr_EventAbsorbed or NW_LMgr_EventNotAbsorbed - */ - virtual NW_Uint8 ProcessEvent(const NW_LMgr_Box_t& aBox, const NW_Evt_Event_t& aEvent); - - /** - * This is a special purpose method to get the element node - * associated with this handler. - * - * @return the elementNode associated with this handler. - */ - const NW_DOM_ElementNode_t* ElementNode(void) const; - - /** - * This is a special purpose method to get the "selected" element. - * See the comment on SelectElement. - * - * @return the selected elementNode. - */ - const NW_DOM_ElementNode_t* SelectedElementNode(void) const; - - /** - * Applies the content type and length properties on the given box. This is - * used in the download dialog box. - * - * @param aBox the box to apply the properties on. - * @return status code. - */ - TBrowserStatusCode ApplyInfoProperties(NW_LMgr_Box_t& aBox); - - - private: // Private Methods - /** - * C++ default constructor. - */ - CXHTMLObjectElementHandler(const NW_XHTML_ElementHandler_t* aElementHandler, - NW_XHTML_ContentHandler_t* aContentHandler, NW_DOM_ElementNode_t* aElementNode); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(void); - - /** - * Loads the resource associated with object tag. - * - * @param aType the mime-type of the of the resource or NULL - * if the type isn't known. - * @param aUrl the url of the of the resource or NULL. - * @param aHandlerType Type of the load - * @return status code - */ - TBrowserStatusCode LoadObjectResource(const TDesC* aType, - const TDesC* aUrl, ObjectUtils::THandlerType aHandlerType); - - /** - * Loads the HEAD information of the resource associated with object tag. - * - * @return status code - */ - TBrowserStatusCode LoadObjectInfo(void); - - /** - * Returns the associated content handler or NULL if one isn't found. - * - * @return the associated content handler - */ - NW_HED_ContentHandler_t* AssociatedContentHandler(void); - - /** - * Set the place-holder text to the given descriptor. - * - * @param aObjectBox the Object box. - * @param aPlaceHolderText the string. - * - * @return status code - */ - TBrowserStatusCode SetPlaceHolderText(NW_LMgr_Box_t& aObjectBox, - const TDesC& aPlaceHolderText); - - /** - * Set the place-holder text to the given resource id. - * - * @param aObjectBox the Object box. - * @param aResourceId the string's resource id. - * - * @return status code - */ - TBrowserStatusCode SetPlaceHolderText(NW_LMgr_Box_t& aObjectBox, - TInt aResourceId); - - /** - * Removes the place holder -- puts the Object box in the active state. - * - * @param aObjectBox the Object box. - * - * @return void - */ - void RemovePlaceHolder(NW_LMgr_Box_t& aObjectBox); - - /** - * CXHTMLObjectElementHandler::SelectElement - * - * Embedded resources are specified in an xhtml document using the object tag. - * This tag can be very simple to quite complex. See the cpp file for some examples. - * This method determines if iElementNode or one of its descendants can be selected - * and displayed. Once an element is selected it is stored in iSelectedElementNode. - * iSelectedElementNode is used in GetAttribute to extract attribute values from - * the selected element. - * - * @return status code. - */ - TBrowserStatusCode SelectElement(void); - - /** - * Gets the value of the given attribute as a descriptor. - * - * @param aToken identifies the attribute to get. - * @param aValue upon success it equals the value of the attribute. - * The caller adopts aValue. - * @return status code - */ - TBrowserStatusCode GetAttribute(TInt16 aToken, TDesC** aValue); - - /** - * Gets the value of the source attribute as a descriptor. - * - * @param aValue upon success it equals the value of the src attribute. - * The caller adopts aValue. - * @return status code - */ - TBrowserStatusCode GetSrcAttribute(TDesC** aValue); - - /** - * Gets the value of the content-type attribute as a descriptor. - * - * @param aValue upon success it equals the value of the src attribute. - * The caller adopts aValue. - * @return status code - */ - TBrowserStatusCode GetTypeAttribute(TDesC** aValue); - - /** - * Gets the value of the source attribute by using the classId attribute, - * the cooresponding param element and the object attribute mappings table. - * - * @param aValue upon success it equals the value of the src attribute. - * The caller adopts aValue. - * @return status code - */ - TBrowserStatusCode GetObjectAttributeMapSrc(TDesC** aValue); - - /** - * Returns the cooresponding value (either param-name or content-type) given - * the class-id. - * - * @param aClassId the class-id used to map to the requested value. - * @param aValueSelector used to select the cooresponding value - * (either KParamName or KContentType) - * @return the value or NULL on out of memory. - */ - TDesC* GetObjectAttributeMappedValue(const TDesC& aClassId, TInt aValueSelector); - - /** - * Returns if the element is enclosed within a hyperlink - * - * @return If the element is enclosed within a hyperlink - */ - TBool InHyperLink(); - - private: // Data - const NW_XHTML_ElementHandler_t* iElementHandler; - NW_XHTML_ContentHandler_t* iContentHandler; - NW_DOM_ElementNode_t* iElementNode; - NW_DOM_ElementNode_t* iSelectedElementNode; - - NW_LMgr_Box_t* iObjectBox; - ObjectUtils::THandlerType iLoadedHandlerType; - TBool iIsDownloading; - - TBool iObjectInfoValidated; - HBufC* iContentType; - HBufC* iContentLength; - TInt16 iTransactionId; - }; - -#endif // CXHTMLOBJECTELEMENTHANDLER__H